참고: ACADO homepage-making your own projects using Cmake
ACADO 기본 패키지를 사용하면 code generation할때
<ACADO_ROOT>/examples/code_generation/mpc_mhe
와 같이 복잡한 폴더 속에 넣어야 한다. 그래서 내가 원하는 폴더로 변경하기 위해 몇가지 작업을 해줄 필요가 있다.
1. <ACADO_ROOT>/examples 안의 CMakeLists.txt 변경
CMakeLists.txt 안을 보면 33번째 줄부터 example directory를 입력하게 되어 있다.
SET( EXAMPLE_DIRS
basic_data_structures/curve
basic_data_structures/function
basic_data_structures/matrix_vector
basic_data_structures/symbolics
basic_data_structures/variables_grid
controller
getting_started
integration_algorithm
integrator
validated_integrator
multi_objective
nlp
ocp
parameter_estimation
process
simulation_environment
my_acado_test
)
우리는 마지막 줄과 같이 my_acado_test를 추가해서 여기에 code_generation이 되도록 해보자.
2. <ACADO_ROOT>/examples/my_acado_test 폴더 생성
앞의 CMakeLists.txt안에 적은것과 같은 동일한 명의 폴더를 생성한다.
3. 아래 내용의 CMakeLists.txt를 my_acado_test 폴더안에 생성
################################################################################
#
# Description:
# CMake scipt for building code-generation ACADO examples
#
# Authors:
# Milan Vukov, milan.vukov@esat.kuleuven.be
#
# Year:
# 2012 - 2014.
#
# NOTE:
# - It is assumed that one executable has only one source (.cpp) file.
#
# Usage:
# - This file should be called from the main CMake script for examples.
#
################################################################################
################################################################################
#
# Compilation of examples
#
################################################################################
#
# Compiling examples
#
UNSET( SOURCES )
FILE( GLOB SOURCES ./*.cpp )
IF( NOT ACADO_DEVELOPER )
#
# Remove examples with dev_ prefix
#
FILE( GLOB DEV_SOURCES ./dev_*.cpp )
IF ( DEV_SOURCES )
LIST( REMOVE_ITEM SOURCES ${DEV_SOURCES} )
ENDIF ( DEV_SOURCES )
ENDIF( NOT ACADO_DEVELOPER )
#
# Temporary patch: remove closed loop examples and test files
#
FILE( GLOB CLOSED_LOOP_SOURCES ./*_closed_loop.cpp )
FILE( GLOB CLOSED_LOOP_SOURCES ./*_test.cpp )
IF ( CLOSED_LOOP_SOURCES )
LIST( REMOVE_ITEM SOURCES ${CLOSED_LOOP_SOURCES} )
ENDIF ( CLOSED_LOOP_SOURCES )
#
# Compile examples
#
FOREACH( SRC ${SOURCES} )
GET_FILENAME_COMPONENT( EXEC_NAME ${SRC} NAME_WE )
SET( CURR_EXE code_generation_${EXEC_NAME} )
ACADO_APPLICATION( ${CURR_EXE} ${SRC} )
ENDFOREACH( SRC ${SOURCES} )
4. acado syntax로 작성된 코드를 넣고 코드 생성 진행행
이렇게 하면 <ACADO_ROOT>/examples/my_acado_test 폴더 안에 실행파일이 하나 생성되고 이를 실행하면
1. Code Generation 방법 에서 설명한 것과 같이 코드들이 자동 생성되는 것을 확인할 수 있다.
'Mathamatics > Control Theory' 카테고리의 다른 글
ACADO Toolkit 이란? 1. Code Generation 방법 (0) | 2022.03.03 |
---|---|
MPC 란? (Model Predictive Control) 7. Multi-rotor system Model (0) | 2022.01.12 |
MPC 란? (Model Predictive Control) 6. MATLAB 코드 구현 (0) | 2022.01.12 |
MPC 란? (Model Predictive Control) 5. Controller Design (0) | 2022.01.11 |
MPC 란? (Model Predictive Control) 4. Optimal control (1) | 2022.01.10 |
댓글