무인 주행 경로 추적 제어(Carsim 2020 + MATLAB 2020b)를 위한 MPC 기반 분산 구동 전기차의 차선 변경 경로 추적 제어를 구현합니다. 시뮬레이션 결과가 우수하며, 분산 구동 토크 분배가 포함됩니다.
4륜 독립 구동 전기차에서 경로 추적을 수행하는 것은 마치 성격이 다른 네 형제가 고난도 곡예를 협력하는 것과 같습니다. Carsim에서 움직이는 6자유도 차량 모델과 MATLAB에서 동작하는 MPC 컨트롤러의 조합은 상당히 흥미롭습니다.
바퀴를 분해한 후 제어를 논하다

분산 구동의 핵심은 총 토크를 단순히 네 바퀴에 균등 분배하지 않는 데 있습니다. 노면 마찰과 차체 자세에 따라 실시간으로 각 바퀴의 토크를 동적으로 할당해야 합니다. 예를 들어, 다음 토크 분배 함수에는 숨은 비밀이 있습니다:
function [torque_FL, torque_FR, torque_RL, torque_RR] = torque_distribute(total_torque, mu, alpha)
% mu: 노면 마찰 계수 | alpha: 차체 횡방향 슬립각
k_front = 0.6 * (1 - 0.2*alpha); % 앞차축 분배 계수, 슬립각에 따라 변화
torque_front = total_torque * k_front;
torque_rear = total_torque * (1 - k_front);
% 좌우 바퀴를 마찰 계수에 따라 동적으로 조정
torque_FL = torque_front * (1 + 0.1*mu);
torque_FR = torque_front * (0.9 - 0.05*mu);
% 뒷차축 분배 전략 (여기에 미끄럼 방지 로직이 숨겨져 있음)
...
end
이 코드에는 의도적으로 허점이 남아 있습니다: 뒷차축 토크 분배가 완성되지 않았습니다. 실제로는 타이어 횡방향 힘 포화 특성을 고려하여 2차 계획법을 수행해야 하며, 특정 바퀴의 과도한 토크로 인한 미끄럼을 방지해야 합니다. 타이어 물리 엔진을 다뤄본 분이라면 직관적으로 이해할 수 있을 것입니다. 이는 본질적으로 제약 조건이 있는 최적화 문제를 푸는 것입니다.
MPC 컨트롤러의 핵심
예측 제어의 핵심은 상태 방정식과 QP 솔버에 있습니다. 다음은 압축된 형태의 MPC 초기화 코드입니다:
%% 상태 방정식 파라미터
A = [1 Ts 0 0; % 횡방향 위치
0 1 Ts*Caf/m -Ts*vx; % 횡방향 속도
0 0 1 Ts; % 요 각
0 0 Ts*Caf/Iz 1-Ts*Lf*Caf/(Iz*vx)]; % 요 각속도
B = [0; Ts*Kf/m; 0; Ts*Lf*Kf/Iz]; % 앞바퀴 조향 입력
C = eye(4);
여기서 눈에 띄는 vx(종방향 속도)는 제어 주기 내에서 일정하다고 가정합니다. 이는 고속 차선 변경 시 위험한 가정입니다. 따라서 실제 운용에서는 속도 관측기를 추가하여 동적 보상을 해야 합니다. 그렇지 않으면 차량 모델이 급가속 시 "분열"될 수 있습니다.

Carsim과 MATLAB의 협력
무인 주행 경로 추적 제어(Carsim 2020 + MATLAB 2020b)를 위한 MPC 기반 분산 구동 전기차의 차선 변경 경로 추적 제어를 구현합니다. 시뮬레이션 결과가 우수하며, 분산 구동 토크 분배가 포함됩니다.
공동 시뮬레이션의 핵심은 데이터 파이프라인 구축에 있습니다. 이 S-Function 인터페이스 함수는 핵심 코드입니다:
function sys = carsimInterface(u, t, ~)
persistent vp_handle;
if isempty(vp_handle)
vp_handle = vsb('open','xiLINK'); % Carsim 블랙홀 연결 시작
end
vsb('send', vp_handle, u); % 제어 명령을 Carsim으로 전송
vsb('get', vp_handle); % 차량 상태 데이터 가져오기
sys = [Y_dot; yaw_rate; ...]; % 상태량 출력
end
한 번은 버그로 밤을 샌 적이 있습니다: Carsim의 시뮬레이션 스텝 크기는 MATLAB과 엄격히 동기화되어야 합니다. 그렇지 않으면 "시공간 오차"가 발생합니다. 차량이 MATLAB에서는 차선 변경을 완료했지만, Carsim에서는 여전히 직진하는, 마치 슈뢰딩거의 고양이 같은 현상이 나타납니다.

시뮬레이션 결과의 반전 순간
횡방향 오차 곡선이 매끄러울 것이라고 생각할 수 있지만, 실제 측정 데이터는 차선 변경 중간 지점에서 잡음성 지터(아래 그림 참조)를 보여줍니다. 이는 컨트롤러 오류가 아니라 타이어 횡방향 강성이 비선형 영역에 진입하여 특성이 급변하기 때문입니다. 이러한 경우 토크 분배의 다운그레이드 전략을 트리거하고, 일시적으로 PID 보호 제어로 전환해야 합니다.

(오차 곡선 그래프가 있는 것으로 가정)
마지막으로 실용적인 관점
이 접근법에서 가장 만족스러운 순간은 Carsim에서 차량이 80km/h로 부드럽게 차선을 변경하며, 네 바퀴의 토크 곡선이 교향곡 악보처럼 오르내리는 모습을 보는 것입니다. 물론, 현실의 노면은 시뮬레이션처럼 친절하지 않습니다. 따라서 다음 단계는 노면 경사 추정을 예측 모델에 통합하는 것입니다. 결국, 제어 알고리즘의 매력은 물리 법칙과의 지적 싸움에 있습니다.