자율주행/차량제어

MPC(model predictive control)

Tony Lim 2021. 2. 2. 23:41

기본적으로 여러 정보를 바탕으로 미래에는 어떤 input sequence 를 가져야 reference path 에 도달 할 수 있는지 알려준다.

한번 만 하는게 아니라 반복적으로 조금씩 해내 나가는 것이다.

기존의 것들은 frequency domain 이었지만  MPC의 경우는 매 시간 term 마다 optimization problem 을 푸는 방식임으로 time domain이다. 

기존의 PID Controller로 multiple input output system을 구축 하려면 서로의 input 과 output이 영향을 받는 경우가 있기때문에 구현 하기 힘들다. MPC controller는 그것들을 간소화 시켜서 해결해준다.

acado toolkit 을 이용한 실습

1. git clone https://github.com/acado/acado.git -b stable

 

acado/acado

ACADO Toolkit is a software environment and algorithm collection for automatic control and dynamic optimization. It provides a general framework for using a great variety of algorithms for direct o...

github.com

2. cd acado 를 한후에 acado/examples/getting_started 아래에 hayoung-kim/programmers_sdv

에 있는 simple_mpc.cpp 파일을 복사한다.

3. 다시 상위 acado/ 로 가서 build 디렉토리를 만든후 안에들어가서

4. cmake .. 

5. make 

6.  acado/examples/getting_started 아래에가서 ./simple_mpc 로 실행해주면 simple_mpc_export 폴더가 생성이된다. 안에있는 모든것을 실습 코드 tracking/mpc/solver안에 붙여넣어준다.

7. solver 폴더안에서 python setup.py build_ext --inplace 를 실행한다. acado.so 파일이 생성되면 성공(파이썬에서 사용할수 있는 라이브러리)

8. model_predictive_control.py 를  실행해본 결과

'자율주행 > 차량제어' 카테고리의 다른 글

A generic driving strategy for urban environment  (0) 2021.02.03
Optimal frenet planning algorithm  (0) 2021.02.03
Path Planning Algorithms  (0) 2021.02.03
PID ,Kalman  (0) 2021.02.02
차량 모델링 (좌표계 ,Kinematic, Dynamic Mode  (0) 2021.02.01