自动驾驶控制算法-油门刹车标定

本文是学习自动驾驶控制算法第十讲 油门刹车标定表的制作以及后续一节的学习笔记。

车辆油门刹车标定的目的是获取不同车速下不同的油门踏板或刹车踏板行程下车辆的加速度,标定的结果作为纵向控制模型的输入,用于计算输出合理的油门或刹车。

1 Apollo中的油门刹车标定

Apollo里的标定条件:

  • 速度条件
    • 低速 0 ~ 10m/s
    • 中速 10 ~ 20m/s
    • 高速 >= 20m/s
  • 油门条件
    • 小油门 Throttle deadzone ~ 25%
    • 中油门 25% ~ 30%
    • 大油门 Throttle >= 30%
  • 刹车条件
    • 小刹车 Brake deadzone ~ 20%
    • 中刹车 20% ~ 25%
    • 急刹车 Brake >= 25%

标定结果示意:

bash 复制代码
calibration {
  speed: 4.4
  acceleration: 3.19
  command: 80.0
}
calibration {
  speed: 4.4
  acceleration: 3.21
  command: 75.0
}
calibration {
  speed: 4.6
  acceleration: -8.79
  command: -35.0
}
calibration {
  speed: 4.6
  acceleration: -7.43
  command: -33.0
}

油门和刹车的拟合示意图如下:

2 油门标定

视频中采用Carsim+matlab仿真来演示油门和刹车的标定。

参照如上视频设置好Carsim,使用如下matlab代码仿真得到不同油门开度下的 v a va va数据并拟合:

matlab 复制代码
thr = 0;  %油门开度
for i = 1:11
    sim('long_calibration');
    v_temp(:,i)=ans.vx.data;
    a_temp(:,i)=ans.ax.data;
    thr_temp(:,i)=ones(length(ans.vx.data),1)*thr;
    thr=thr+0.1;
end

%转换为行向量
v=v_temp(:,1)';
a=a_temp(:,1)';
tr=thr_temp(:,1)';
for i = 2:11
    v=[v,v_temp(:,i)'];
    a=[a,a_temp(:,i)'];
    tr=[tr,thr_temp(:,i)'];
end

F=scatteredInterpolant(v',a',tr'); %拟合
vu=0:0.1:50;
au=0:0.1:5;
table=zeros(length(vu),length(au));
for i = 1:length(vu)
    for j=1:length(au)
        table(i,j)=F(vu(i),au(j));
    end
end

不同油门下速度、加速度数据示意图如下:

再根据得到的 v a va va数据拟合如下函数
T h r o t t l e = f ( v , a ) \begin{equation} Throttle=f(v,a) \end{equation} Throttle=f(v,a)

拟合结果示意图如下:

3 刹车标定

同样的方式得到不同刹车制动压力下的 v a va va数据,仿真初始车速是50m/s,注意当车速为0时不论刹车踏板值是多少车辆减速度都是0,所以针对车速为0的结果要做一下人工处理,比如手动赋值一个比较小的值。为确保连续性,可以直接将车速较低的结果直接复制过来。

matlab 复制代码
brake = 0.1;  %制动压力
for i=1:80 
    sim('long_calibration');
    v_brake(:,i)=ans.vx.data;
    a_brake(:,i)=ans.ax.data;
    brake_temp(:,i)=ones(length(ans.vx.data),1)*brake;
    brake=brake+0.1;
end

%转换为行向量
vbr=v_brake(:,1)';
abr=a_brake(:,1)';
br=brake_temp(:,1)';
for i=2:80
    vbr=[vbr,v_brake(:,i)'];
    abr=[abr,a_brake(:,i)'];
    br=[br,brake_temp(:,i)'];
end


Fbr=scatteredInterpolant(vbr',abr',br'); %拟合
vubr=0:0.05:50;
aubr=-8:0.05:0;
tablebr=zeros(length(vubr),length(aubr));
for i = 1:length(vubr)
    for j=1:length(aubr)
        tablebr(i,j)=Fbr(vubr(i),aubr(j));
    end
end

不同刹车下速度、加速度数据示意图如下:

4 油门刹车一张表

油门刹车一起拟合,控制会更连续:

matlab 复制代码
%加速和制动的数据放到一起
v2=[v,vbr];
a2=[a,abr];
br2=[tr,br];

F=scatteredInterpolant(v2',a2',br2'); %一起拟合
vubr=0:0.05:50;
aubr=-8:0.05:5;
tablebr=zeros(length(vubr),length(aubr));
for i=1:length(vubr)
    for j=1:length(aubr)
        tablebr(i,j)=F(vubr(i),aubr(j));
    end
end

不同油门、刹车下速度、加速度数据示意图如下:

5 纵向控制仿真

参考视频搭建如下的仿真模型,使用双PID控制模块控制车辆跟随预先设定的轨迹:

仿真结果如下,蓝色曲线是预设的轨迹,黄色是控制结果,最后面的是车速小于0了,可忽略:

位置:

速度:

加速度

相关推荐
故七月6 小时前
让AI“看见”好服务——生成式引擎优化(GEO)的底层逻辑与产业实践
大数据·人工智能·机器学习
用户5274675614216 小时前
Agent 之间别互抄聊天记录:把交接做成可验证的 Artifact Envelope
人工智能
刘立军6 小时前
插件化与扩展点:引导 AI 模块化插拔开发,功能解耦便于迭代
人工智能·后端·架构
腾视科技-AIoT6 小时前
让安全驾驶有“AI”相伴|腾视科技DMS视频监控一体机,守护每一次出行
大数据·人工智能·科技·安全·行车记录仪·ainas·腾视科技
欧特克_Glodon6 小时前
OpenCV计算机视觉开发入门与实践<二十一>:灰度直方图清晰化图像
c++·人工智能·opencv·计算机视觉
码视野6 小时前
基于 Vue3 + Element Plus 的【青少年心理健康智能测评与 AI 情绪树洞陪护干预系统】设计与实现(含PRD/三端源码/大屏)
前端·vue.js·人工智能·vue3
茶马古道的搬运工6 小时前
AI 深度技能之-解读Hermes Agent(九)- Hermes Bot
人工智能
桃西西呀6 小时前
国内金价破 1000,「涨了多少」和「该买多少」是数学问题
人工智能·python·数据分析
2401_865261636 小时前
亦唐科技:推动国产贴片机技术突破,打造智能制造新标杆
人工智能
智能运维指南6 小时前
Confluence 停服、数据出境、知识散落:企业知识管理系统如何破局?
大数据·人工智能·microsoft