代码拉取完成,页面将自动刷新
function [control_cmd,error,MPCprediction] = UGV_Kinematics_MPC_V_Delta(Reference,VehicleParams,AlgParams,Vehicle_State,Control_ref)
[error, target_index] = calc_nearest_point(Reference, Vehicle_State);
cx=Reference.cx;cy=Reference.cy;cyaw=Reference.cyaw;ds=Reference.ds;
xref=cx(target_index);yref=cy(target_index);yawref=cyaw(target_index);
v_ref=Control_ref(1);delta_ref=Control_ref(2);
v=Vehicle_State(5);
state_ref=[xref;yref;yawref;];
state_actual=Vehicle_State(1:3)';
xbar=state_actual-state_ref;
xbar(3)=wrapToPi(xbar(3));
Nx=AlgParams.Nx;Nu=AlgParams.Nu;Tsim=AlgParams.N;T=AlgParams.ts;
wheel_base=VehicleParams.wheel_base;
Ad=[0 0 -v_ref*sin(yawref);
0 0 v_ref*cos(yawref);
0 0 0;]*T+eye(Nx);
Bd=[cos(yawref) 0;
sin(yawref) 0;
tan(delta_ref)/wheel_base v_ref/wheel_base/(cos(delta_ref))^2;]*T;
Abar_cell=cell(Tsim,1);
Bbar_cell=cell(Tsim,Tsim);
for i=1:Tsim
Abar_cell{i,1}=Ad^i;
for j=1:Tsim
if i==j
Bbar_cell{i,j}=Ad^(i-j)*Bd;
else
Bbar_cell{i,j}=zeros(Nx,Nu);
end
end
end
Abar=cell2mat(Abar_cell);
Bbar=cell2mat(Bbar_cell);
Qbar=AlgParams.Qbar;
Rbar=AlgParams.Rbar;
H=2*(Bbar'*Qbar*Bbar+Rbar);
H=(H+H')*2;
f=2*(Bbar'*Qbar*Abar*xbar);
ub=kron(ones(Tsim,1),[VehicleParams.Vmax-v_ref;VehicleParams.max_steer_angle-delta_ref;]);
lb=kron(ones(Tsim,1),[VehicleParams.Vmin-v_ref;VehicleParams.min_steer_angle-delta_ref;]);
tic;
options=optimset('Algorithm','interior-point-convex','Display', 'iter');
[Ubar,~,exitflag,~]=quadprog(H,f,[],[],[],[],lb,ub,zeros(size(ub)),options);
if exitflag==1
MPCprediction = Abar*xbar+Bbar*Ubar;
MPCprediction = reshape(MPCprediction,Nx,Tsim);
ref_i = round(target_index + (1:Tsim)*v*T/ds);
ref_i(ref_i>length(cx)) = length(cx);
Xref = cx(ref_i);Yref = cy(ref_i);Yawref = cyaw(ref_i);
MPCprediction(1,:) = MPCprediction(1,:) + Xref;
MPCprediction(2,:) = MPCprediction(2,:) + Yref;
MPCprediction(3,:) = MPCprediction(3,:) + Yawref;
Ubar(1:2)=Ubar(1:2)+[0.0001;0.0001];
control_cmd = Ubar(1:2)+[v_ref;delta_ref];
end
end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。