Apollo代码解析longitudinal Control:纵向控制算法与流程图

纵向双PID控制器核心内容:

1,油门、刹车标定表的制作
2,位置速度双环PID

输入:定位信息,规划轨迹点,底盘信号
输出:油门/刹车值
在这里插入图片描述

核心内容1:油门/刹车标定表的制作

请添加图片描述
请添加图片描述
请添加图片描述

油门-速度-加速度拟合过程代码:

请添加图片描述
请添加图片描述
请添加图片描述

核心内容2:位置速度双环PID

在这里插入图片描述

**1,本质要求:PID输入和输出没有量纲的概念的要求,只需要满足输入和输出变化趋势相同即可。上述双环PID考虑了位置和速度,当然也可以考虑更多的影响因素,增加环数,因为无量纲要求,故只需要满足输入和输出变化趋势相同即可。

位置偏差-----位置PID—速度补偿
速度偏差-----速度PID—加速度补偿

** 2,各参数的作用:

在这里插入图片描述
P:快速收敛,但会产生超调和稳态误差。
超调是因为控制有延时。稳态误差是因为Error偏差过小时,控制量 = PError,控制量过小所产生的影响较小,无法继续缩小偏差,故产生了稳态误差。
I:消除稳态误差。
Error偏差过小时,控制量 = P
Error,控制量过小所产生的影响较小,无法继续缩小偏差,但当控制量不断累计时,最终肯定可以消除稳态误差。
工程实践中,当稳态误差在预期范围内时,一般不用I来消除稳态误差,或用较小的I值,因为I易产生超调,且I产生的超调量很难用D来消除。
D:减小超调
当Error变化较快时,易产生超调,增加D可以较小Error的变化趋势,从而较小超调量。
工程实践中,一般只用PD控制器即可,P用于快速收敛,D用于减小超调。当稳态误差超出预期时,可增加I,且I的数值不宜过大,一般I值较小。
位置式PID代码(输出量就是控制量):
在这里插入图片描述

double PIDController(double error,double dt){
double retControlVariable = 0;
static double IntegralError = 0;
static double preError = error;
IntegralError += error * t; //积分偏差累计
IntegralError = IntegralError > IntegralLimitMax_ ? IntegralLimitMax_ : IntegralError;//积分限幅
IntegralError = IntegralError < IntegralLimitMin_ ? IntegralLimitMin_ : IntegralError;
retControlVariable = Kp * error                 //比例
                   + Ki * IntegralError         //积分
                   + (error - preError)/dt;      //微分
preError = error;
return retControlVariable;    //输出控制量
}

工程实践中,位置式PID的注意事项:
积分的注意事项和缺点:
1,需要加积分限幅。
因为位置式PID直接输出控制量,当误差有跳变或较大幅度变化时,由于积分是误差的累计,控制量会有较大变化,即产生超调。
2,当控制量达到最大或最小值时,应该停止积分作用。
位置式PID在积分项达到饱和时,误差仍然会在积分作用下继续累积,一旦误差开始反向变化,系统需要一定时间从饱和区退出,即产生超调。

故在工程实践中,一般不使用I,直接使用PD控制器。若稳态误差在预期范围外,则使用较小的I值。

仿真和实车调试时横纵向算法需要考虑的关键因素:

1,延时。

仿真基本没有延时,实车不管是油门,制动执行器还是传感器的数据传输都有时间延时。
问题:如何测量这个延时时间?
后果影响:导致超调,特别速度较大时,超调严重,速度较小时,可通过调节PID参数减小影响。
解决办法:增加预测模块。方向盘转角较小时,预测车辆是匀速直线运动;方向盘角度较大时,预测车辆是圆弧运动。

2,转向不足。

仿真的车一般是中性转向,而实车为了安全考虑,一般出厂时调试为转向不足。(因为车速较大时,车辆有过度转向的趋势,故一般调试为转向不足),故需要考虑转向不足,增加前馈控制或者用误差生成控制补偿,从而减小转向不足的影响。
后果影响:导致转向不足,横向偏差超出预期。
解决办法:增加前馈模块。根据Vehicle Dynamics and Control中的公式,即可计算出前馈控制。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值