公式推导
前后轮转向的单车模型的MATLAB代码
clc
clear
close all
state = struct;
state.x = 0;
state.y = 0;
state.psi = 0;
h = animatedline('Marker','o');
axis equal
addpoints(h,state.x,state.y)
while 1
state = Veh_Model1(state,1,30,0);
addpoints(h,state.x,state.y)
pause(0.1)
end
function state = Veh_Model1(state,v,delta_f,delta_r)
%VEH_MODEL 以质心为轴,前后轮同时转向模型
% state:车量坐标状态[x,y,psi]
% delta_f:前轮转向角
% delta_r:后轮转向角
lf = 1;lr = 1;
dt = 0.05;
delta_f = deg2rad(delta_f); delta_r = deg2rad(delta_r);
beta = atan((lr*tan(delta_f)+lf*tan(delta_r))/(lr+lf));
state.x = state.x + v*cos(state.psi+beta)*dt;
state.y = state.y + v*sin(state.psi+beta)*dt;
state.psi = state.psi+v*cos(beta)*(tan(delta_f)-tan(delta_r))/(lr+lf)*dt;
end