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

第一步:安装Acado

见:Linux配置Acado

第二步:配置环境变量

ACADOtoolkit/build下找到环境变量配置脚本acado_env.sh,右键打开属性,并在Allow executing file as program处打勾。
使用acado生成mpc控制器c++代码_第1张图片

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

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

可能需要重启后生效。

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

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

第四步:配置cmake

在acado安装目录下,找到FindACADO.cmake文件,将其复制进model
使用acado生成mpc控制器c++代码_第3张图片

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

使用acado生成mpc控制器c++代码_第4张图片

你可能感兴趣的:(模型预测控制,linux,开发语言)