모델 예측 제어를 사용한 적응형 크루즈 컨트롤 시스템
이 예제에서는 Simulink®에서 Adaptive Cruise Control System 블록을 사용하는 방법을 보여주고 이 블록의 제어 목표와 제약 조건을 설명합니다.
적응형 크루즈 컨트롤 시스템
적응형 크루즈 컨트롤(ACC)이 장착된 차량(에고 승용차)에는 레이다와 같은 센서가 있어서, 동일 차선에서 앞에 있는 차량(선행 승용차)과의 거리
을 측정합니다. 센서는 선행 승용차의 상대 속도
도 측정합니다. ACC 시스템은 다음 두 가지 모드로 동작합니다.
속도 제어: 에고 승용차가 운전자 설정 속도로 주행합니다.
차간 거리 제어: 에고 승용차가 선행 승용차와의 안전 거리를 유지합니다.
ACC 시스템은 실시간 레이다 측정값에 따라 사용할 모드를 결정합니다. 예를 들어, 선행 승용차와의 거리가 너무 가까우면 ACC 시스템은 속도 제어에서 차간 거리 제어로 전환합니다. 마찬가지로, 선행 승용차와의 거리가 멀면 ACC 시스템은 차간 거리 제어에서 속도 제어로 전환합니다. 즉, ACC 시스템은 에고 승용차가 안전 거리를 유지하는 한 운전자 설정 속도로 주행하도록 합니다.
ACC 시스템의 동작 모드를 결정하는 데 다음 규칙이 사용됩니다.
이면 속도 제어 모드가 활성화됩니다. 제어 목표는 운전자 설정 속도
을 추종하는 것입니다.
이면 차간 거리 제어 모드가 활성화됩니다. 제어 목표는 안전 거리
를 유지하는 것입니다.

선행 승용차와 에고 승용차에 대한 Simulink 모델
선행 승용차와 에고 승용차의 동특성은 Simulink에서 모델링됩니다. Simulink 모델을 엽니다.
mdl = 'mpcACCsystem';
open_system(mdl)

실제 주행 환경을 근사하기 위해, 시뮬레이션 중에 선행 승용차의 가속도는 사인파를 따라 변화합니다. Adaptive Cruise Control System 블록은 에고 승용차에 대한 가속도 제어 신호를 출력합니다.
샘플 시간 Ts와 시뮬레이션 지속 시간 T를 초 단위로 정의합니다.
Ts = 0.1; T = 80;
에고 차량과 선행 차량 모두에 대해 가속도와 속도 사이의 동특성은 다음과 같이 모델링됩니다.

이는 스로틀 바디와 차량 관성의 동특성을 근사합니다.
에고 승용차에 대한 선형 모델을 지정합니다.
G_ego = tf(1,[0.5,1,0]);
두 차량의 초기 위치와 속도를 지정합니다.
x0_lead = 50; % initial position for lead car (m) v0_lead = 25; % initial velocity for lead car (m/s) x0_ego = 10; % initial position for ego car (m) v0_ego = 20; % initial velocity for ego car (m/s)
Adaptive Cruise Control System 블록의 구성
ACC 시스템은 Simulink에서 Adaptive Cruise Control System 블록을 사용하여 모델링됩니다. ACC 시스템 블록에 대한 입력은 다음과 같습니다.
운전자 설정 속도

시간 간격

에고 승용차의 속도

선행 승용차까지의 상대 거리
(레이다 기준)선행 승용차까지의 상대 속도
(레이다 기준)
ACC 시스템의 출력은 에고 승용차의 가속도입니다.
선행 승용차와 에고 승용차 사이의 안전 거리는 에고 승용차 속도
의 함수입니다.

여기서
는 정지 상태에서의 기본 차간 거리이고
은 차량 간 시간 간격입니다.
에는 미터 단위로,
에는 초 단위로 값을 지정합니다.
t_gap = 1.4; D_default = 10;
운전자 설정 속도를 m/s 단위로 지정합니다.
v_set = 30;
차량 동특성의 물리적 한계를 고려하면 가속도는 [-3,2](m/s^2) 범위로 제한됩니다.
amin_ego = -3; amax_ego = 2;
이 예제의 경우 Adaptive Cruise Control System 블록의 디폴트 파라미터가 시뮬레이션 파라미터와 일치합니다. 시뮬레이션 파라미터가 디폴트 값과 다른 경우 블록 파라미터를 적절하게 업데이트하십시오.
시뮬레이션 분석
시뮬레이션을 실행합니다.
sim(mdl)
-->Converting model to discrete time. -->Integrator added as output disturbance model for measured output #2. Assuming no disturbance added to measured output #1. -->"Model.Noise" is empty. Assuming white noise on each measured output.
시뮬레이션 결과를 플로팅합니다.
mpcACCplot(logsout,D_default,t_gap,v_set)

처음 3초 동안은 에고 승용차가 운전자 설정 속도에 도달하기 위해 최대 스로틀로 가속합니다.
3초에서 13초까지는 선행 승용차가 천천히 가속합니다. 그 결과, 선행 승용차와의 안전 거리를 유지하기 위해 에고 승용차는 더 느린 속도로 가속합니다.
13초에서 25초까지는 에고 승용차가 Velocity 플롯에서 볼 수 있듯이 운전자 설정 속도를 유지합니다. 그러나 선행 승용차가 속도를 줄이면서 20초 이후 간격 오차가 0에 가까워지기 시작합니다.
25초에서 45초까지는 선행 승용차가 감속했다가 다시 가속합니다. 에고 승용차는 Distance 플롯에서 볼 수 있듯이 속도를 조절하여 선행 승용차와의 안전 거리를 유지합니다.
45초에서 56초까지는 간격 오차가 0보다 큽니다. 따라서 에고 승용차가 운전자 설정 속도에 다시 도달합니다.
56초에서 76초까지는 25초에서 45초 구간의 감속/가속 시퀀스가 반복됩니다.
시뮬레이션 전체에 걸쳐 제어기는 두 차량 간의 실제 거리가 설정된 안전 거리보다 크도록 보장합니다. 실제 거리가 충분히 클 경우 제어기는 에고 차량이 운전자 설정 속도를 따르도록 합니다.