CarSim联合MATLAB实现纵向控制

目录

前言

一、CarSim设计

二、MATLAB设计

        1.整体框架

        2.thr_brake_calibration_table

        3、planning模块

        4、pid_control模块

速度

 位置

 加速度

总结


前言

前面的文章介绍了横向控制以及标定,这里主要介绍车辆的纵向控制。PID是控制中最强控制算法也是目前使用最广泛的算法,这里实现纵向控制也使用PID算法。为了提高控制的性能,这里我们使用双PID控制算法实现纵向控制(一个是利用位置,另一个是利用速度)。


一、CarSim设计

        步骤:Systems---->Powertrain:Front-Wheel drive---->Internal transmission model

CarSim联合MATLAB实现纵向控制_第1张图片

 其余设计和标定表的设计一样。

二、MATLAB设计

        1.整体框架

CarSim联合MATLAB实现纵向控制_第2张图片

 这里最重要的就是pid_control模块。

        2.thr_brake_calibration_table

CarSim联合MATLAB实现纵向控制_第3张图片

 代码如下:

        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模块

CarSim联合MATLAB实现纵向控制_第4张图片

 代码示例:

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模块

CarSim联合MATLAB实现纵向控制_第5张图片

速度

CarSim联合MATLAB实现纵向控制_第6张图片

 位置

CarSim联合MATLAB实现纵向控制_第7张图片

 加速度

CarSim联合MATLAB实现纵向控制_第8张图片


总结

超调量:超调量_百度百科 (baidu.com)

PID控制解释:比例项是用来提高系统的响应速度,积分项是用来消除稳态误差的,,微分项是用来降低超调量的。

P比例项:对稳态误差进行放大(减小)的作用,并且当接近控制目标时,比例项的效果越不明显。当然,比例项不是越大越好,因为实际系统中可能存在延时,这样将导致超调,并且由于一些内在的原因,会使得控制效果在小范围内发生振荡。P比例系数的作用会加快到达控制目标的速度,在实际应用中有很大的作用。

I积分项:消除稳态误差的作用,并且只要稳态误差没有消失,积分项就会一直发生作用。但是,积分项会导致超调,因此,虽然积分项可以提高我们的控制精度,但是在实际应用中,并不怎么使用或者只会加入一个很小的控制系数。

D微分项:抑制超调的作用,微分描述了运动的变化趋势(微分具有将变化提前的作用)。微分项相当于给系统加了一个闭环零点的作用,设置合理的话可以抵消相近极点的作用,把极点的虚部去了就没有超调了。

在实际应用中使用较多的是PD控制,P加快收敛速度,D抑制由P控制引起的超调。因此在实际中先调P再调D最后调I。

你可能感兴趣的:(matlab,自动驾驶)