目录
前言
前面的文章介绍了横向控制以及标定,这里主要介绍车辆的纵向控制。PID是控制中最强控制算法也是目前使用最广泛的算法,这里实现纵向控制也使用PID算法。为了提高控制的性能,这里我们使用双PID控制算法实现纵向控制(一个是利用位置,另一个是利用速度)。
一、CarSim设计
步骤:Systems---->Powertrain:Front-Wheel drive---->Internal transmission model
其余设计和标定表的设计一样。
二、MATLAB设计
1.整体框架
这里最重要的就是pid_control模块。
2.thr_brake_calibration_table
代码如下:
switch_signal模块
function [power,brake] = fcn(x)
%正数代表油门,负数代表刹车
%不允许同时踩油门和刹车
if x>0
power=x;
brake=0;
else
power=0;
brake=-x;
end
end
moto model模块
function torque = fcn(power,rpm) %power:油门,rpm:转速
Tmax=380*power;
if(rpm<=4523)
torque=Tmax;
else
torque=Tmax*4523/rpm;
end
end
3、planning模块
代码示例:
function [s,v,a] = fcn(t)
if t<10
s=0.1*t^3/3;
v=0.1*t^2;
a=0.2*t;
else
a=2-0.1*(t-10);
v=2*t-0.05*(t-10)^2-10;
s=t^2-0.05*(t-10)^3/3-10*t+100/3;
end
end
4、pid_control模块
速度
位置
加速度
总结
PID控制解释:比例项是用来提高系统的响应速度,积分项是用来消除稳态误差的,,微分项是用来降低超调量的。
P比例项:对稳态误差进行放大(减小)的作用,并且当接近控制目标时,比例项的效果越不明显。当然,比例项不是越大越好,因为实际系统中可能存在延时,这样将导致超调,并且由于一些内在的原因,会使得控制效果在小范围内发生振荡。P比例系数的作用会加快到达控制目标的速度,在实际应用中有很大的作用。
I积分项:消除稳态误差的作用,并且只要稳态误差没有消失,积分项就会一直发生作用。但是,积分项会导致超调,因此,虽然积分项可以提高我们的控制精度,但是在实际应用中,并不怎么使用或者只会加入一个很小的控制系数。
D微分项:抑制超调的作用,微分描述了运动的变化趋势(微分具有将变化提前的作用)。微分项相当于给系统加了一个闭环零点的作用,设置合理的话可以抵消相近极点的作用,把极点的虚部去了就没有超调了。
在实际应用中使用较多的是PD控制,P加快收敛速度,D抑制由P控制引起的超调。因此在实际中先调P再调D最后调I。