Apollo油门刹车标定方案-机器学习

Apollo油门刹车标定方案-机器学习

Introduction

我们考虑整个纵向控制算法作为一个端到端的问题,可以分两步解决:

  1. 基于人类驾驶数据,首先生成标定表。
  2. 然后用更复杂的在线算法更新标定表,使其更符合车辆动力学。

我们的研究结果表明自动校准系统确实节省了相当多的费用并提高了控制精度。标定是也是自动化和智能化的,因此适用于大规模自动驾驶汽车部署。

Method

apollo控制模块

阿波罗控制模块设计为了跟踪阿波罗规划模块生成的轨迹,并使跟踪误差最小化。它需要轨迹,车辆位置和车辆状态作为输入,以操纵车辆。

纵向控制算法使用公式(1)计算油门刹车值,其中速度(v)和加速度(accA)时纵向控制得到的已知的变量。

T : a c c , v → c m d (1) T:acc,v \rightarrow cmd \tag{1} T:acc,vcmd(1)

其中 T T T表示标定表, c m d cmd cmd表示油门刹车控制命令。

  1. 离线模型:离线模型根据人工驾驶数据生成一个初始标定表。这个离线算法的工作流程包括:

    1. 采集人的驾驶数据
    2. 预处理数据并选择输入特征
    3. 通过机器学习模型生成校准表
  2. 在线学习:在线算法基于自动驾驶中的实时反馈数据调整标定表。目的是让离线模型更加match车辆动力学模型。在线算法的工作流程包括:

    1. 实时收集车辆状态和反馈
    2. 预处理和过滤数据
    3. 调整校准表

数据预处理

1. 用于训练离线模型的数据预处理

人类驾驶数据作为输入,纵向速度、加速度和油门、刹车作为特征。注意,油门模型和刹车模型分开训练。

由于人类驾驶数据天生具有噪声和不均匀性(即速度/加速度不均匀地分布在驾驶过程中),阿波罗控制模块会采取以下步骤以清洗数据。i. 采用公式(2)中的均值滤波器平滑数据;ii. 公式(3)用来消除数据横向摆动;iii. 公式(4)用来消除异常值。

y = ( x t − 1 + x t − 2 + ⋯ + x t − N ) N (2) y=\frac{\left(x_{t-1}+x_{t-2}+\cdots+x_{t-N}\right)}{N} \tag{2} y=N(xt1+xt2++xtN)(2)

表示前N个时刻数据的平均值。

∣ θ ∣ < δ steer  (3) |\theta|<\delta_{\text {steer }} \tag{3} θ<δsteer (3)

其中 θ \theta θ表示方向盘转角, δ s t e e r \delta_{steer} δsteer表示方向盘转角阈值。

∣ x − x mean  ∣ x s t d > 1 →  异常值  (4) \frac{\left|x-x_{\text {mean }}\right|}{x_{s t d}}>1 \rightarrow \text { 异常值 } \tag{4} xstdxxmean >1 异常值 (4)

其中 x x x是待处理数据, x m e a n x_{mean} xmean是数据平均值, x s t d x_{std} xstd表示数据标准差。

2. 用于在线学习的数据预处理

在线学习会基于自动驾驶模式下的数据反馈,频繁的调节标定表。这个算法的特征选取为:i. 油门刹车命令;ii. 速度;iii. 期望加速度;iiii. 实际加速度。

仅选择符合公式(3)的数据。使用公式(5)来保证标定表对于控制量 c m d cmd cmd单调。

T ′ [ c m d i ] [ v x ] − T ′ [ c m d j ] [ v x ] c m d i − c m d j < 0 , ∀ c m d i , c m d j , v x (5) \frac{T^{\prime}\left[c m d_{i}\right]\left[v_{x}\right]-T^{\prime}\left[c m d_{j}\right]\left[v_{x}\right]}{c m d_{i}-c m d_{j}}<0, \forall c m d_{i}, c m d_{j}, v_{x} \tag{5} cmdicmdjT[cmdi][vx]T[cmdj][vx]<0,cmdi,cmdj,vx(5)

其中 T ′ T^{\prime} T表示标定表的索引。

由于实时数据采集中的响应延迟(即发送油门刹车命令,到命令被执行后得到加速度)会影响数据质量,我们延时一段时间从传感器采集数据。在油门/刹车指令发出200ms后,我们从IMU中采集加速度。采用截止频率为2Hz的3阶巴特沃夫低通滤波器来消除数据的高频扰动。由于200ms的延迟并不总是合适,采用公式(6)进一步保证数据的一致性。

∣ c m d r e f − c m d r e f + Δ t ∣ < δ c m d _ g a p , Δ t = − 100   m s , ⋯   , 100   m s (6) \left|c m d_{r e f}-c m d_{r e f+\Delta_{t}}\right|<\delta_{ {cmd\_gap }}, \Delta_{t}=-100 \mathrm{~ms}, \cdots, 100 \mathrm{~ms} \tag{6} cmdrefcmdref+Δt<δcmd_gap,Δt=100 ms,,100 ms(6)

其中 δ c m d _ g a p \delta_{ {cmd\_gap }} δcmd_gap表示允许的最大控制量波动。仅当控制命令 c m d r e f c m d_{r e f} cmdref的周围 [ c m d r e f − 100   m s , c m d r e f + 100   m s ] \left[\mathrm{cmd}_{r e f-100 \mathrm{~ms}}, \mathrm{cmd}_{r e f+100 \mathrm{~ms}}\right] [cmdref100 ms,cmdref+100 ms]都满足公式(6)时,该数据才能被使用。公式(7)用来消除传感器数据 ( v k , a k ) \left(v_k,a_k\right) (vk,ak)的噪声。

( v r e f − v k ) × ( a r e f − a k ) > 0 (7) \left(v_{r e f}-v_{k}\right) \times\left(a_{r e f}-a_{k}\right)>0 \tag{7} (vrefvk)×(arefak)>0(7)

3. 离线建模算法

在这里插入图片描述

伪码1展现了数据处理过程,得到了对应关系后使用神经网络进行训练。采用Tensorflow实现标准三层神经网络,激活函数采用sigmoid,损失函数采用均方误差,使用内置的Adam优化器。

4. 在线学习算法

每个控制周期在线学习算法都会更新标定表,一旦调整后在下个控制周期生效,伪码2给出了更新细节。

在这里插入图片描述

1-5行采集数据,如果速度已经收敛(如公式(8)),6-7行停止标定程序。

e v = ∣ v ref  − v actual  ∣ ⩽ γ v (8) e_{v}=\left|v_{\text {ref }}-v_{\text {actual }}\right| \leqslant \gamma_{v} \tag{8} ev=vref vactual γv(8)

其中 v r e f v_{ref} vref表示期望速度, v a c t u a l v_{actual} vactual表示当前实际速度, γ v \gamma_v γv表示阈值。

8-11行中的 Δ k \Delta_k Δk g a i n k gain_k gaink得到, Δ k \Delta_k Δk等于期望加速度 a c c r e f acc_{ref} accref减延迟后的实际加速度 a c c k acc_k acck

g a i n k = a c c r e f − a c c k (9) gain_k=acc_{ref}-acc_k \tag{9} gaink=accrefacck(9)

为了更新标定表,定义了损失函数(公式(10)),该损失函数用来更新对应的标定表 T [ c m d i ] [ v j ] T\left[\mathrm{cmd}_{i}\right]\left[v_{j}\right] T[cmdi][vj]

cost ⁡ c m d i , v j =  distance  c m d i , v j × cost ⁡ similarity  (10) \operatorname{cost}_{\mathrm{cmd}_{i}, v_{j}}=\text { distance }_{c m d_{i}, v_{j}} \times \operatorname{cost}_{\text {similarity }} \tag{10} costcmdi,vj= distance cmdi,vj×costsimilarity (10)

其中  distance  c m d i , v j \text { distance }_{c m d_{i}, v_{j}}  distance cmdi,vj,是一个二维的距离函数,具有距离衰减特性(距离越近值越小,距离越远值越大)。

d i s t a n c e c m d i , v j = ( 1 − μ ) × [ α ( c m d r e f − c m d i ) m c m d + β ( v r e f − v j ) m v ) + ξ ] (11) distance _{c m d_{i}, v_{j}}= \left.(1-\mu) \times\left[\alpha\left(c m d_{r e f}-c m d_{i}\right)^{m_{c m d}}+\beta\left(v_{r e f}-v_{j}\right)^{m_{v}}\right)+\xi\right] \tag{11} distancecmdi,vj=(1μ)×[α(cmdrefcmdi)mcmd+β(vrefvj)mv)+ξ](11)

其中 α \alpha α β \beta β是衰减系数, m c m d m_{cmd} mcmd m v m_v mv是距离衰减因子, ξ \xi ξ设置为 1 e − 8 1e^{-8} 1e8 μ \mu μ表示为

μ = { 1 ,  if  ∣ c m d ref  − c m d i ∣ ⩽ δ cmd   or  ∣ v r e f − v j ∣ ⩽ δ v 0 ,  otherwise  (12) \mu=\left\{\begin{array}{ll} 1, & \text { if }\left|c m d_{\text {ref }}-c m d_{i}\right| \leqslant \delta_{\text {cmd }} \text { or }\left|v_{r e f}-v_{j}\right| \leqslant \delta_{v} \\ 0, & \text { otherwise } \end{array}\right. \tag{12} μ={1,0, if cmdref cmdiδcmd  or vrefvjδv otherwise (12)

相似性损失定义为公式(13),实际数据与初始表越相似,损失越大。

cost ⁡ similarity  = ε × e − ı × ∣  init  _ table  [ c m d i ] [ v j ] − a c c k ∣ (13) \operatorname{cost}_{\text {similarity }}=\varepsilon \times e^{-\imath \times \mid \text { init } \_ \text {table }\left[\mathrm{cmd}_{i}\right]\left[v_{j}\right]-a c c_{k} \mid} \tag{13} costsimilarity =ε×e× init _table [cmdi][vj]acck(13)

其中 ε \varepsilon ε表示相似性衰减系数 ı \imath 表示指数衰减因子,最终的更新量 Δ t \Delta_t Δt 由公式(14)表示

Δ t = gain ⁡ k × σ 1 + cost ⁡ c m d i , v j (14) \Delta_{t}=\frac{\operatorname{gain}_{k} \times \sigma}{1+\operatorname{cost}_{c m d_{i}, v_{j}}} \tag{14} Δt=1+costcmdi,vjgaink×σ(14)

其中 σ \sigma σ表示学习率。

最终,原始表 T T T更新为 T ′ T^{\prime} T

T ′ [ c m d i ] [ v j ] = a t + Δ t (15) T^{\prime}\left[c m d_{i}\right]\left[v_{j}\right]=a_{t}+\Delta_{t} \tag{15} T[cmdi][vj]=at+Δt(15)

约束条件:

T ′ [ c m d i ] [ v x ] − T ′ [ c m d j ] [ v x ] c m d i − c m d j < 0 , j , x = 1 , ⋯   , n ∣ c m d r e f − c m d m ∣ < δ c m d − g a p , m = k − t , ⋯   , k + t ( v r e f − v k ) × ( a r e f − a k ) > 0 \begin{array}{l} \frac{T^{\prime}\left[c m d_{i}\right]\left[v_{x}\right]-T^{\prime}\left[c m d_{j}\right]\left[v_{x}\right]}{c m d_{i}-c m d_{j}}<0, j, x=1, \cdots, n \\ \left|c m d_{r e f}-c m d_{m}\right|<\delta_{c m d_{-g a p}}, m=k-t, \cdots, k+t \\ \left(v_{r e f}-v_{k}\right) \times\left(a_{r e f}-a_{k}\right)>0 \end{array} cmdicmdjT[cmdi][vx]T[cmdj][vx]<0,j,x=1,,ncmdrefcmdm<δcmdgap,m=kt,,k+t(vrefvk)×(arefak)>0

最终更新效果就是对于每一个标定表 T [ c m d i ] [ v j ] T\left[c m d_{i}\right]\left[v_{j}\right] T[cmdi][vj],实际加速度与标定表的值差距越大更新量越大, ( c m d i , v j ) \left(c m d_{i},v_{j}\right) (cmdi,vj)距离 ( c m d r e f , v r e f ) \left(c m d_{ref},v_{ref}\right) (cmdref,vref)越近更新量越大。

References

[1] Zhu F, Xu X, Ma L, et al. Autonomous driving vehicle control auto-calibration system: An industry-level, data-driven and learning-based vehicle longitudinal dynamic calibrating algorithm[C]//2020 IEEE Intelligent Vehicles Symposium (IV). IEEE, 2020: 391-397.

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Apollo油门踏板的标定是指将油门踏板的行程规定为特定数值的过程。在执行标定之前,首先需要进行准备工作,包括检查遥控器的状态,检查安全绳和油门踏板的连接状态,并确认车辆停放在平坦的地面上。 在进行标定时,需要按照以下步骤: 1.将车辆电池安装到车上,并将遥控器开关打开。 2.将安全绳系在车辆后部的固定处,然后使车辆后轮静止并保持不动。 3.将油门踏板移动到最大行程处,并保持不动。 4.使用遥控器将车辆向前行驶一定距离。 5.回到车辆后部,松开安全绳,并观察车轮的滚动情况,直到车辆静止。 6.根据观察到的车轮滚动距离,调整油门踏板的行程,以便车辆能够在预定的距离内停下。 7.再次测试车辆的行驶和停止情况,直到满足所需标定值为止。 总的来说,Apollo油门踏板的标定需要精细的操作和耐心,只有正确的标定,才能保证车辆的安全性和可靠性。 ### 回答2: Apollo油门踏板标定是指通过调节汽车油门踏板所产生的电压信号,来达到控制汽车加速度的目的。这个过程中涉及到多个参数的调整,包括油门踏板行程与输出电压信号之间的线性关系,以及油门踏板输出电压信号与汽车电子控制单元(ECU)读取的电压信号之间的映射关系等。以下是具体的标定步骤: 1. 手动标定:使用专业的汽车诊断设备或者调节仪表台上的手动标定装置,将油门踏板的最小值和最大值进行手动标定。 2. 自动标定:在驾驶汽车的过程中,通过了解ECU读取的汽车速度信号、转速信号、油门踏板输出电压信号等参数,通过自适应算法进行自动标定,来达到更为精准的控制和调节汽车加速度的目的。 3. 动态标定:在实际的驾驶过程中,针对不同的驾驶状态(如高速行驶、爬坡行驶等),对油门踏板进行动态标定,以便更加准确地控制车速。 需要注意的是,对于某些特定的车型和品牌,可能存在一些特殊的标定要求和步骤。此外,对于普通车主而言,在进行油门踏板标定时需要注意安全,避免在道路上进行操作,尤其是在高速行驶状态下进行标定。对于专业的汽车技师来说,他们需要具有较为扎实的汽车电子控制原理和技术知识,能够熟练运用各种调节设备来进行标定操作。 ### 回答3: Apollo油门踏板标定是指调整油门踏板的行程,以确保汽车的加速度和死区表现正常。 进行正确的油门踏板标定可以提高整车的动力和响应性,同时减少噪音和油耗。以下是一些关键步骤,可以帮助您进行Apollo油门踏板标定。 1.准备工具和设备 在进行Apollo油门踏板标定之前,您需要准备以下工具和设备: 1) 拆卸和组装工具 2) 多用途测试仪表 3) 安全手套和防护眼镜 4) Apollo油门踏板标定用户手册 5) 手电筒 2.检查系统健康状况 在标定Apollo油门踏板之前,必须确保车辆的其他部分正在正常运行。 检查引擎和传动系统的健康状况。 检查车辆电气的工作状况,并针对任何异常情况进行修理和调整。 3.连接多用途测试仪表 将多用途测试仪表连接到汽车的电脑上,以获取关于车辆电气系统,引擎,油门踏板等方面的数据和读数。 4.测量油门踏板行程 利用多用途测试仪表,测量油门踏板行程。 踩下油门踏板,注意观察测试仪表显示读数。 通过比较原始,实际和理论油门踏板行程的读数,您可以确定是否需要对其进行标定。 5.调整油门踏板行程 如果您需要进行调整,则可以通过更改油门踏板的位置来实现。 油门踏板调节螺栓和止动螺栓是管理油门踏板运动的关键因素,因此必须进行相应的微调并获得最佳效果。 6.进行测试 完成标定后,您需要进行测试以确保车辆的加速性能和响应性能。 进行路试,检查车辆的加速度,死区和顺滑性能是否得到改善,并在必要时进行进一步的调整。 总之,Apollo油门踏板标定是一个非常重要的步骤,可以显着提高整车的性能。 了解如何正确地进行此过程,并随时遵循用户手册中的步骤,可以确保您的车辆在路上行驶顺畅,安全可靠。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值