使用acado生成mpc控制器c++代码

第一步:安装Acado

见:Linux配置Acado

第二步:配置环境变量

ACADOtoolkit/build下找到环境变量配置脚本acado_env.sh,右键打开属性,并在Allow executing file as program处打勾。
在这里插入图片描述

~/.bashrc中添加如下脚本信息,注意填写自己的安装路径

source /home/your_username/your_install_path/ACADOtoolkit/build/acado_env.sh

可能需要重启后生效。

第三步:定义待求解的优化控制问题

建立一个文件夹用于存放后续生成的代码,例如model
model下,建立一个.cpp文件用于定义优化控制问题,如my_pendulum.cpp。该文件的变量定义及函数调用参考acado提供的例子,注意,应该是code_generation下的,也即与代码生成相关的例子。
在这里插入图片描述
关键字样:
在这里插入图片描述

第四步:配置cmake

在acado安装目录下,找到FindACADO.cmake文件,将其复制进model
在这里插入图片描述

model中,编写CMakeLists.txt文件

# Minimum required version of cmake 
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )# Project name and programming languages used
PROJECT( model )# CMake module(s) path
SET( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR} )
# activate c++ 11
IF(CMAKE_COMPILER_IS_GNUCC)SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
ELSE()SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
ENDIF()FIND_PACKAGE( ACADO REQUIRED )
INCLUDE_DIRECTORIES( . ${ACADO_INCLUDE_DIRS} )ADD_EXECUTABLE(        quadrotor_model_codegen my_pendulum.cpp )
TARGET_LINK_LIBRARIES( quadrotor_model_codegen ${ACADO_SHARED_LIBRARIES} )
SET_TARGET_PROPERTIES( quadrotor_model_codegen PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )

第五步:编译

model路径下,
此时文件树:

model
├── CMakeLists.txt
├── FindACADO.cmake
└── my_pendulum.cpp
cmake .

此时文件树:

model
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── CMakeLists.txt
├── FindACADO.cmake
├── Makefile
└── my_pendulum.cpp
make

此时文件树:

model
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── CMakeLists.txt
├── FindACADO.cmake
├── Makefile
├── model_codegen
└── my_pendulum.cpp

执行生成的可执行文件model_codegen

./model_codegen

此时文件树如下,有一个新生成的文件夹my_pendulum_export,该文件夹名称的设置是在第三步,由用户自行定义。文件夹下存放的内容即为生成的控制器代码。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319936.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

19|BabyAGI:根据气候变化自动制定鲜花存储策略

19|BabyAGI:根据气候变化自动制定鲜花存储策略 随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。这些代理的设计初衷就是能够独立地执行任务,并持续地追求长…

无旋转目标检测labelme的json格式转YOLO

# trans_labelme_to_yolo.pyimport cv2 import os import json import shutil import numpy as np from pathlib import Path from glob import globid2cls =

CCNP课程实验-04-BGP_CFG

目录 实验条件网络拓朴 基础配置需求实现IGP部分1. 按照图示配置OSPF区域,RID为Loopback 0地址。其中Area 146要配置为OSPF的特殊区域。2. 配置其它路由协议,重分布使得路由互相注入,实现全网互通。3. R1配置策略路由,使得R2经R1去…

从 SD 卡上恢复数据的 5 个有效数据恢复程序

不小心删除了照片或者视频?别担心,今天我带来了5款最好的免费SD卡恢复软件。 我们测试了市场上的20款数据恢复软件,包括从SD卡删除文件、SD卡格式化、文件系统损坏和深度/快速扫描等4种数据丢失场景,选出了5款最佳的恢复程序。 SD…

计算机毕业设计------SSM的公寓房屋出租系统

项目介绍 该项目分为前后台,分为普通用户与管理员两种角色。 前台主要功能包括: 普通用户的注册、登录,房屋列表展示,租房,我的订单、用户中心等功能模块; 后台主要功能包括: 系统设置:菜单管…

nginx在国产服务器上stream配置项无法识别的问题

最近在搭建k8sranchar,需要用到nginx做负载均衡,之前在系统中也会用到,之前一直使用http选项,做转发配置。 基本格式如下图所示: 但是在ranchar的安装中默认方式使用stream配置项。 使用yum默认安装的nginx不支持该关…

pyside6 无法安装问题

ERROR: Could not find a version that satisfies the requirement PySide6 (from versions: none) ERROR: No matching distribution found for PySide6 该原因的出现,尝试过更换网址源 pip install pyside6 -i https://pypi.doubanio.com/simple 但是任然会出现问…

成为一名合格的软件测试工程师,得掌握什么技能?

在这个信息时代,软件行业的需求空前增长,而软件测试工程师作为软件开发过程中的重要角色,也越来越受企业的重视。那么,成为一名合格的软件测试工程师需要掌握什么技能呢?我结合多年的教学经验为大家总结出以下几点。 …

No Magic—复杂机电产品系统架构开发套件

产品概述 CATIA Magic,原名MagicDraw,俗称No Magic,被达索收购后融入3DExperience产品协同研发管理平台中,形成更具协同体验的系统工程解决方案。该软件提供对SysML/UML/UAF语言的完整支持,提供独有的MagicGrid方法论&…

WEB 3D技术 three.js 几何体uv属性讲解与基本演示

本文 我们来说说uv 那么 它是什么呢? 首先 比如 我们几何体 贴一个图 那么 为什么我们图的四个边就能正好贴到几何体的边 为什么不可以图就在几何体中间呢? 中心为什么能对齐 它就不能偏一点吗? 这是第一个问题 还有我们 gltf 这种文件 其实…

低功耗的CMOS实时时钟/日历电路芯片8563

D8563是低功耗的CMOS实时时钟/日历电路,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过IC总线接口串行传递。最大总线速度为400Kbitss每次读写数据后,内嵌的字地址寄存器会自动产生增量。 主要特点: ●…

[C#]C# OpenVINO部署yolov8目标检测模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 抛弃了前几代模型的 Anchor-Base。 YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Ali Farhadi 等人提出初代模型以来,领域内的研究者们…