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