车速 >1 m/s、转角 <45°:车辆参数在线学习的九维 EKF 与观测门

作者:

在

结论:车辆参数在线学习是一台九维卡尔曼滤波器,但九个状态里只有横向速度与偏航率两个有显式微分方程,其余七个在状态转移中保持不变。学习被三道门约束:车速 >1 m/s、转向角绝对值 <45°、且非倒挡;此外偏航率与路面滚转观测只在「位姿有效」时才写入。它的输出是在线估计值,不是车辆认证参数,也不能替代独立的执行器安全限制。

九维状态与两条微分方程

滤波器状态依次为:轮胎刚度因子、转向比、慢零偏、快零偏、二维车速(纵向/横向)、偏航率、转向角与路面滚转。动力学按线性化单轨横向模型生成:每步用一阶欧拉积分 x_next = x + dt·x_dot 推进,而代码只给横向速度与偏航率指定了导数,其余七个状态只是保持原值。

状态 含义 是否有显式微分方程
STIFFNESS 轮胎侧偏刚度因子 否
STEER_RATIO 转向比 否(出现在动力学分母)
慢 / 快 ANGLE_OFFSET 转向零偏(慢、快两档) 否(慢零偏无直接观测方程)
VELOCITY(二维) 纵向 / 横向车速 仅横向速度有方程
YAW_RATE 偏航率 是
STEER_ANGLE 转向角 否
ROAD_ROLL 路面滚转 否

横向速度与偏航率的导数中,纵向速度与转向比都出现在分母;而学习门只在外部输入层面检查车速与转角,并未对滤波内部状态每次预测时的分母做形式化保证。实现也没有把车身侧倾、路面超高、轮胎非线性或高阶积分显式放进这套方程,因此不能把它外推为全工况动力学模型。

什么条件下才允许学习

只有在车辆运动且转向不极端时才启用学习:车速大于 1 m/s、转向角绝对值小于 45°、且不在倒挡。偏航率观测要求角速度有效、标准差在 0 到 10 rad/s 之间、偏航率绝对值小于 1 rad/s,否则以 0 和 10 度标准差替代;滚转观测要求标准差小于 1.5°、数值严格落在 ±10° 内且传感器状态正常,否则同样回退,并在进入滤波器前受单步限速。若「位姿有效」为假,则偏航率与滚转观测不写入,但快零偏以及刚度/转向比的弱约束观测仍会继续。

输入 启用条件 不满足时
车况(学习使能) vEgo > 1 m/s、|转向角| < 45°、非倒挡 暂停学习,设置滤波时间
偏航率观测 角速度有效、0 < std < 10 rad/s、|yaw| < 1 rad/s 以 0 与 10° 标准差替代
滚转观测 标准差 < 1.5°、数值严格在 ±10° 内、传感器正常 以 0 与 10° 标准差替代
位姿门 位姿有效为真 不写偏航率/滚转观测,弱约束仍执行

观测码与噪声:默认表不等于实际传入

滤波器为每个观测码准备了默认噪声,但调用方可以显式覆盖。例如偏航率与横向速度的默认项本身「未定义」,由运行时代码显式传入方差;滚转的默认项也会被显式覆盖。这意味着「默认表」只是兜底,实际噪声要按调用点判断。

观测码 直接观测的状态 默认噪声项
ROAD_FRAME_YAW_RATE 偏航率 未定义,由调用方显式传方差
ROAD_FRAME_X_SPEED 纵向车速 0.1²
STEER_ANGLE 转向角 rad(0.05)²
ANGLE_OFFSET_FAST 快零偏 rad(10)²
STEER_RATIO 转向比 5²
STIFFNESS 刚度因子 0.5²
ROAD_ROLL 路面滚转 rad(1)²(调用时显式覆盖)

有效位分层:一个「healthy」不够用

这套输出的有效位是分层的,不能折叠成一个布尔值:顶层「消息有效」直接采用输入的通信检查结果;内层「参数有效」是慢/总零偏、滚转范围与标准差、刚度及转向比范围的合取;「传感器有效」只在活动且车速大于 10 m/s 时检查车速与偏航率差的量级是否小于 4 m/s²,且不进入内层有效的合取;「位姿有效」在本快照恒为真,因此不能当作上游位姿状态的透传。输出值还对角度与滚转各做每帧 1° 的限速。

下游消费同样要注意边界:控制侧直接读取刚度、转向比、零偏与滚转,其中前两者仅以「与 0.1 取较大值」设下限后更新车辆模型,并没有用内层有效位包住这次更新。安全效果依赖上层状态机、通信故障处理与独立网关的组合,不能把某一个有效位当成单点安全证明。

持久化与插件边界

正常运行会周期性写入持久缓存,并另有一个由车型流程写入的「上一行程车型参数」键用于车型核对。恢复时要求两个键都存在,且只明确校验车型指纹相同、历史转向比落在相对范围内;缺任一键就回退默认值且不清除另一个键,车型不符或越界时只删除估计缓存键、保留车型键。写缓存的节拍按帧号取模,「约一分钟」取决于循环节拍,不是墙上计时保证。插件化时,估计器可作为单写者、版本化、可回放的候选,但应先做影子输出比对,不直接抢占正式主题;输入契约须固定时间戳、坐标系、角度单位、车型参数版本与噪声标准差,输出契约要保留顶层通信有效位、内层参数有效位、分项有效位与数据年龄。

常见问题

在线估计出的车辆参数能当认证参数用吗?

不能。它是在线估计值,依赖行驶激励与观测门;低速、倒挡或转向极端时学习会暂停,慢零偏甚至没有直接观测方程。它不能替代车辆认证参数,也不能替代独立的执行器安全限制。

停车时滤波器还在更新吗?

不会照常更新。车况门要求车速大于 1 m/s 且转角绝对值小于 45° 才启用学习,停车后不再产生新的学习观测,并会停止协方差的时间增长与回绕。

为什么同一个参数会有好几个「有效位」?

因为它们语义不同:顶层有效位来自输入通信检查,内层有效位是参数范围与不确定度的合取,传感器有效位只做横向一致性检查且不参与内层合取,位姿有效位在本快照恒为真。折叠成一个 healthy 会丢掉这些区别。

倒车时会参与参数学习吗?

不会。学习门明确排除倒挡:只有车速大于 1 m/s、转向角绝对值小于 45° 且非倒挡时才启用学习。

延伸阅读

参考资料

  • 项目 02 —— openpilot-research/PARAMSD_VEHICLE_LEARNING_DEEP_DIVE.md(九维 EKF 方程、观测码与噪声、学习门、有效位分层、持久化与插件边界)

说明:本文为对固定源码快照的静态结构分析,未运行完整测试套件、未连接硬件、未验证目标车型的真实参数组合。文中所有状态维度、阈值与配置均出自源文档,标注为未验证的结论保留其原有边界;参数均为在线估计值,不代表任何车型的认证参数。

更新记录

首次发布 2026-10-11 最近核对:2026-10-11

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注