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

发布时间:2024年01月04日

第一步:安装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,该文件夹名称的设置是在第三步,由用户自行定义。文件夹下存放的内容即为生成的控制器代码。

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_45910027/article/details/135383854
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。