📄 论文信息
| 项目 | 内容 |
|---|---|
| 标题 | Anti-rollover Artificial Potential Field Motion Planning Method of an Autonomous Heavy Truck Optimised by Game Theory |
| 作者 | Zhilin Jin(金志龙)、Shaowei He(何少伟) |
| 单位 | 同济大学(Tongji University,据公开信息,作者单位为车辆工程相关院系;具体院系以原文署名页为准) |
| 期刊 | Chinese Journal of Mechanical Engineering(机械工程学报英文版,CJME) |
| 发表 | Volume 37, Article number 95, 2024;接收 2024-07-22,在线发表 2024-08-23 |
| DOI | https://doi.org/10.1186/s10033-024-01073-x |
| 关键词 | Autonomous heavy truck、Motion planning、Anti-rollover、Artificial potential field、Game theory |
| 开源 | 开放获取(Open Access),可下载 PDF |
一句话概括:这篇论文给自动驾驶重卡的运动规划加了一道「侧翻排斥力」——它用五自由度动力学模型实时算出车辆离翻车还有多远(侧翻指标 RI),再把这个指标做成人工势场里的一道「排斥墙」,配合传统避障势场,用 MPC 在规划时就既躲开障碍物、又躲开「会翻车的状态」,最后用博弈论自动调好两种势场的权重。
说明:本文核心信息(作者、期刊、5-DOF 模型含纵向/横向/横摆/簧上侧倾/簧下侧倾、APF 势场设计、MPC + 博弈论框架、LTR 与 RI 验证误差约 1.5%)均来自论文公开摘要、正文片段与摘要页,真实可靠。个别公式的具体编号与常数以原文为准,文中用「约」「即」等措辞处为对公开信息的合理转述。
🤔 为什么这篇论文值得一个刚入行的 VLA 工程师读?
当下端到端、VLA、世界模型是显学,大家讨论的多是「怎么让模型输出更平滑的轨迹」「怎么在 nuScenes 上刷分」。但如果你把同样的思路直接搬上重卡(semi-truck / heavy truck),会踩一个大坑:乘用车时代「不撞=安全」的假设,在重卡上直接失效。重卡重心高、载重大,一个在轿车身上只是「压线急转」的操作,在重卡身上可能直接把车甩翻。侧翻(rollover)是重卡致死事故的主因之一,而它和「有没有撞到东西」几乎是正交的两个安全维度。
这篇 2024 年的 CJME 论文不玩大模型,它把问题钉死在一个非常工程、非常落地的点:在运动规划(motion planning)这一层,就把侧翻风险当成第一等公民来约束,而不是等下游控制器去「擦屁股」。对想做重卡 / 商用车自动驾驶的工程师,这种「动力学约束前置到规划层」的思路非常值得借鉴。
🔧 先讲清楚几个名词(小白友好版)
动手读论文前,先把反复出现的词用大白话过一遍,后面就不会卡壳。
- 侧翻(Rollover):车辆绕纵轴(车头指向车尾的那根轴)翻倒,比如急转弯时外侧车轮离地、整辆车向侧面掀翻。对重卡来说,这是比追尾更致命的事故形态。
- 重心高(High Center of Gravity, CG):重卡拉着货,质心离地面远。重心越高,同样大小的侧向力(转弯离心力)就越容易把车「掀」起来。
- 离心力(Centripetal / Lateral Force):转弯时车其实在被迫做圆周运动,需要向圆心的力;在车里的人感觉到的「往外甩」的力就是离心力。车速越快、转得越急,这个力越大,侧翻风险越高。
- DOF(Degree of Freedom,自由度):描述一个刚体在空间里怎么动,需要几个独立坐标。比如平动有前后/左右/上下 3 个,转动有俯仰/横摆/侧倾 3 个,共 6 个。车辆模型会按需求「砍掉」一些自由度来简化。
- LTR(Lateral Transfer Ratio,横向载荷转移率):衡量左右两侧车轮承重差距的指标。它越接近 1(或 -1),说明左右载荷几乎全压到一边,另一侧车轮快离地了——也就是快翻了。下文会给出公式。
- 人工势场法(Artificial Potential Field, APF):一种经典运动规划思想。把目标点设成一个「吸引力井」(越靠近目标势能越低),把障碍物设成「排斥山」(越靠近障碍势能越高),然后让车像小球滚坡一样沿势能梯度往下走,自然就到了目标又避开了障碍。
- MPC(Model Predictive Control,模型预测控制):一类控制/规划算法。它用一个车辆模型,在每个时刻「往前预测一小段未来」,解一个优化问题选出当前最优动作,然后只执行第一步,下一时刻再重算。擅长处理多约束(比如「不能侧翻」「不能撞」)。
- 簧上质量 / 簧下质量(Sprung / Unsprung Mass):悬挂弹簧「上面」的车身、货箱叫簧上质量;弹簧「下面」的车轮、车轴叫簧下质量。重卡侧倾时,这两部分会各自以不同幅度左右摇摆,所以不能只当一个整体。
💥 背景:重卡侧翻,为什么是规划层必须管的事?
传统规划的盲区
绝大多数自动驾驶运动规划(无论是采样、搜索还是优化)在评估一条轨迹「好不好」时,看的是:
- 离障碍物够不够远(碰撞约束)
- 离全局路径偏不偏(跟踪误差)
- 舒不舒服、平不平滑( jerk / 加速度约束)
这些约束本质上都在回答一个问题:会不会撞? 但在重卡场景里,还有一个被严重忽视的维度:这辆车在这样的速度、这样的转向、这样的载荷下,会不会自己翻了?
为什么重卡特别容易翻
用生活经验类比:你端着一碗满的水急转弯,水会往外侧泼;你头顶顶着一摞高高的书急转弯,书会比手里的杯子更容易倒。重卡就是那个「头顶高书」的选手:
- 重心高:满载货箱后质心离地可能 2 米以上,远大于轿车。重心越高,侧向力产生的「翻倒力矩」越大。
- 质量大、惯性大:重卡总质量动辄几十吨,转弯需要的向心力巨大;一旦速度没控制好,离心力很容易超过轮胎能提供的侧向抓地力上限。
- 载荷会转移:转弯时车会向外侧侧倾,内侧车轮承重变小、外侧变大。当内侧车轮几乎不承重(载荷全跑到外侧),车辆就到了侧翻临界点。
- 挂车/货箱耦合:半挂重卡还有挂车自由度,主车侧倾会带动挂车摆动,进一步放大失稳。
论文把这件事说得很直白:重卡侧翻会导致车辆失稳,严重时会引发重大交通事故、巨额财产损失甚至危及生命。所以在做运动规划时,就必须把侧翻动力学考虑进去,而不是等车已经侧倾了再让底盘控制去救。
🧮 重卡侧翻机理:离心力怎么把车掀翻的
想象一辆车以速度 $v$ 沿半径 $R$ 的弯行驶,它需要的向心加速度是 $a_y = v^2 / R$,方向指向圆心。在车身坐标系里,乘员感觉到的就是大小为 $m a_y$ 的离心力(往外甩),其中 $m$ 是质量。
这个向外甩的力作用在重心高度 $h$ 处,会产生一个绕「车与地面接触线」的翻倒力矩 $M_{\text{roll}} = m a_y h$。与此同时,重力 $mg$ 提供「把车按回地面」的恢复力矩 $M_{\text{restore}} = mg \cdot (T/2)$,其中 $T$ 是轮距(左右轮间距)。
当离心翻倒力矩超过恢复力矩时,内侧车轮离地,车开始翻:
$$ m a_y h > m g \frac{T}{2} \quad \Rightarrow \quad a_y > \frac{g T}{2 h} $$右边的 $g T / (2h)$ 就是「静态侧翻阈值加速度」:重心越高($h$ 大)、轮距越窄($T$ 小),阈值越低,越容易翻。这正是重卡天生危险的结构原因。
真实情况比这复杂:悬挂会侧倾、轮胎有侧向刚度、路面有超高/侧坡、载荷会动态转移。所以论文用动力学模型 + LTR 来精确刻画,而不是只看这个静态阈值。
🚚 5-DOF 重卡动力学模型:到底含哪 5 个自由度
论文明确写明,其 5-DOF 模型包含以下自由度(引自摘要与第 2 节描述):
- 纵向运动(Longitudinal motion):沿车头指向方向的前后平动,状态变量通常是纵向速度 $u$ 或纵向位移 $X$。
- 横向运动(Lateral motion):垂直于车头方向的左右平动,状态变量通常是横向速度 $v$ 或横向位移 $Y$。对应上面「离心力把车往外甩」的那个方向。
- 横摆运动(Yaw motion):车辆绕垂直地面轴的转动,也就是「车头转向、车尾摆动」的航向变化,状态变量是横摆角 $\psi$ 与横摆角速度 $r$。
- 簧上质量侧倾运动(Sprung mass roll motion):车身上半部分(车身 + 货箱)绕纵轴的左右侧倾摆动,状态变量是侧倾角 $\phi_s$ 与侧倾角速度 $\dot{\phi}_s$。这是侧翻最直接的体现——车身歪了。
- 簧下质量侧倾运动(Unsprung mass roll motion):车轮/车桥那一部分绕纵轴的侧倾摆动,状态变量是侧倾角 $\phi_u$ 与侧倾角速度 $\dot{\phi}_u$。把簧上和簧下拆开,是为了更真实刻画悬挂的变形和轮胎受力。
注意:这里没有把「垂向(上下)运动」单独列成一个自由度,也没有列挂车的独立自由度(挂车相关自由度在部分重卡侧倾文献里会出现,但本篇的 5-DOF 明确是上述五项)。5 个自由度刚好覆盖「平动 2 + 转动 3(横摆 + 簧上侧倾 + 簧下侧倾)」,比常见的 3-DOF 自行车模型(纵向 + 横向 + 横摆)多了两个侧倾自由度,专门为了算侧翻。
模型大致长什么样
基于达朗贝尔原理(D’Alembert),论文对这 5 个自由度列出动力学微分方程。我们不需要把每个方程抄出来,但要理解结构:它把轮胎侧向力、悬挂侧倾刚度/阻尼、离心惯性项耦合进一个状态空间。简化示意(非原文逐字,仅表达耦合结构):
$$ \dot{x} = f(x, u_{\text{ctrl}}) $$其中状态向量大致为:
$$ x = [u,\ v,\ r,\ \phi_s,\ \dot{\phi}_s,\ \phi_u,\ \dot{\phi}_u]^T $$控制输入是转向角 $\delta$ 与纵向力(加速/制动)$F_x$ 之类。由这个模型,论文推导出一个侧翻指标 RI(Rollover Index),用来度量当前状态离侧翻多远。
📐 LTR 与侧翻判据:怎么才算「快翻了」
LTR 定义与公式
行业最常用的侧翻判据是 LTR(Lateral Load Transfer Ratio,横向载荷转移率)。它的物理含义是:左右两侧车轮垂直载荷之差,除以两侧垂直载荷之和。
$$ LTR = \frac{F_{z,L} - F_{z,R}}{F_{z,L} + F_{z,R}} $$中文解释:
- $F_{z,L}$:左侧(left)两个车轮总的垂直地面反力(承载重量)。
- $F_{z,R}$:右侧(right)两个车轮总的垂直地面反力。
- 分子是「左右载荷差」,分母是「总载荷」。
边界含义:
- $LTR = 0$:左右载荷完全均匀,最稳。
- $LTR = 1$:左侧载荷为 0、右侧扛下全部重量,意味着左侧车轮已完全离地——这就是侧翻临界(实际常取 $|LTR|$ 接近 1 为临界,或取一个安全阈值如 0.8)。
- $LTR = -1$:反之,右侧离地。
所以侧翻约束可以写成:
$$ |LTR| \le LTR_{\text{th}} $$其中 $LTR_{\text{th}}$ 是安全阈值(比如 0.8 ~ 1.0,具体由车辆结构与法规定)。规划/控制只要保证全程 $|LTR|$ 不越线,就从指标意义上「不会翻」。
实践中直接测左右垂直载荷很难,所以 LTR 常借助 3-DOF 侧倾模型、用可测的横向加速度 $a_y$、侧倾角速度 $\dot{\phi}$、重心高度 $h_{cg}$、轮距 $B$、侧倾刚度等参数换算(这也是很多文献把 LTR 表达成 $a_y, h, B, \phi$ 的函数的原因)。论文里用 5-DOF 模型推导出的 RI 与 LTR 在稳态下做了对比验证。
论文的 RI 与 LTR 验证
论文用所建 5-DOF 模型算出一个侧翻指标 $RI$,并和经典 $LTR$ 在相同工况下对比。公开结果显示:稳态下 $LTR \approx -0.285$,$RI \approx -0.288$,误差约 1.5%。这说明用该 5-DOF 模型推导的 RI 可以作为有效的侧翻稳定性度量,为后续把它做成势场提供可信基础。
🧭 APF 规划框架:把「侧翻」也变成一道墙
人工势场法的核心思想前文提过:目标=吸引井,障碍=排斥山。论文在传统 APF 基础上做了两处关键扩展。
1. 改进避障势场(Obstacle Avoidance APF)
传统 APF 常把车/障碍当点处理,距离用两点直线距离,这在矩形车体(重卡很长)下不严谨。论文的改进是:
- 把自车与障碍物都建模为矩形;
- 在矩形外生成椭圆包络;
- 用椭圆之间的最小距离作为势场函数的因子。
这样做的好处(论文贡献点之一):在纵向(车长方向)留出更大的安全距离,同时在横向(车宽方向)适当收紧,从而提高重卡避障安全性——毕竟重卡又长又重,刹停距离远,纵向必须留更多余量。
2. 侧翻排斥势场(Anti-rollover APF)——本文最大亮点
论文提出:假设车辆当前行驶路径和车辆自身带有一个「虚拟的抗侧翻势场」 $U_{R1}$ 和 $U_{R2}$,则抗侧翻 APF 定义为:
$$ arAPF = U_{R1} + U_{R2} $$其中与侧翻指标最相关的一项是把 RI 直接做成势能(引力形式,越大越「危险」):
$$ U_{R2} = \frac{1}{2} k_R RI^2 $$- $k_R > 0$:抗侧翻势场常数(权重);
- $RI$:前面 5-DOF 模型算出的侧翻指标。
直觉:当车辆状态让 $|RI|$ 增大时(离侧翻更近),这个势能快速变大;而规划优化要「最小化总势能」,于是会主动把车往 $|RI|$ 小的状态推——相当于在状态空间里修了一道「侧翻排斥墙」。当 $|RI|$ 逼近临界,势能急剧上升,优化器被迫降低速度、减小转向、改变路径来「逃离」这个高势能区。
这套势场框架在论文图 4 的系统架构里,位于「感知模块 -> 全局路径规划 -> 经博弈论优化的 MPC 运动规划 -> 被控重卡」这一链条中,作为 MPC 代价函数里的关键项。
🔗 怎么把侧翻约束融进规划(MPC + 博弈论)
MPC 代价里塞进三股势力
论文用 MPC 做运动规划,代价函数(cost)同时考虑三类目标,互相博弈:
- 轨迹跟踪项:让车贴着全局路径走,误差小;
- 避障 APF 项:远离障碍物;
- 抗侧翻 APF 项:远离高 RI 状态。
示意(非原文逐字,表达结构):
$$ J = J_{\text{track}} + \lambda_{\text{obs}} \cdot APF_{\text{obs}} + \lambda_{\text{roll}} \cdot arAPF $$其中 $\lambda_{\text{obs}}$、$\lambda_{\text{roll}}$ 分别是避障与抗侧翻势场的权重系数。
博弈论来调权重
难点在于:避障和抗侧翻两个势场经常「打架」。比如为了不侧翻要减速/外摆,但外摆又可能更靠近障碍。权重设小了防不住翻,设大了又过度保守、贴着障碍走。
论文的贡献点之三:用博弈论(game theory)来优化这两个 APF 系数。把避障势场和抗侧翻势场当成两个「玩家」,在给定场景下求解一个均衡(比如纳什均衡意义上的权重分配),从而在具体工况下拿到「既躲得开障碍、又稳得住不翻」的最优折中路径。
对 VLA 工程师的启发:当你有多条互相冲突的安全约束(不撞、不翻、舒适、合法),与其手写一堆 if-else 优先级,不如把它们都建成可加权的代价项,再用一个上层优化器(这里用博弈论,你也可以用贝叶斯、或者强化学习里学权重)去自动平衡。这种「多目标代价 + 上层权重搜索」的范式,和端到端里用奖励塑形(reward shaping)协调多个指标的思路是相通的。
预测模型
MPC 的预测模型 = 前面建立的 5-DOF 动力学模型 + 运动学模型。每个控制周期往前滚一小段,预测未来状态会怎样演化,从而提前看到「现在这个转向,两秒后 RI 会爆」,在爆之前就改路径。这正是「规划层前置考虑侧翻」的工程实现。
🧪 实验与结论(来自公开摘要与结论节选)
论文在第 5 节做了两种工况(公开信息提及为「two conditions」,典型如静态/非穿越障碍、与穿越障碍、车道边界等场景)的仿真分析,并用博弈论优化后的 MPC 规划器做了验证。结论要点:
- 提出的改进避障 APF,增大了纵向安全距离、减小了横向安全距离,提升了重卡避障安全性。
- 提出的抗侧翻 APF 被集成进 MPC 代价函数后,有效降低了侧翻指标(RI),增强了侧倾安全性。
- 综合轨迹跟踪 + 抗侧翻 APF + 避障 APF 的 MPC 规划器,经博弈论优化系数后,能在多种场景下同时有效避障并防止侧翻。
也就是说,方法不是纸上谈兵:在相同场景里,融入 arAPF 的规划相比不融入的基线,侧翻指标显著下降,而避障性能没有牺牲。
🔁 与博客 nuTruck 文章的呼应
如果你读过博客里关于 nuTruck 的文章,会发现两篇工作殊途同归,共同戳破一个幻觉:
「乘用车时代,不碰撞就约等于安全」这条经验,在重卡上完全失效。
具体呼应点:
- nuTruck 用 LTR / NRS(Nominal Rollover Stability,名义侧翻稳定度)这类指标,把「侧翻」从隐式风险变成可量化、可监控、可当成安全指标显式优化的对象。它证明重卡安全不能只看轨迹是否无碰撞,还要看这条轨迹把侧倾裕度压到了多低。
- 本篇 APF 论文 则更进一步:不只把侧翻当监控指标,而是直接把侧翻排斥势场 arAPF 写进规划的代价函数,让规划器在「生成轨迹」这一步就主动绕开高侧翻风险区。
两者合起来的结论很清晰:
- 对重卡,侧翻是独立于碰撞的第三安全维度(碰撞、侧翻、失稳/偏离,三者不完全重叠)。
- 这个维度必须被显式建模、显式约束、最好显式进规划,而不是靠下游控制兜底。
这正好也回答了「为什么不能只靠 VLA 端到端输出轨迹」:端到端模型如果在训练数据里没见过侧翻临界工况(长尾且危险、难采集),它不会自发学会「这条看起来能避障的轨迹其实会翻车」。把 LTR/RI 这类物理约束作为硬边界或势场项前置注入,是更稳妥的工程做法。
💡 个人思考:规划层必须前置考虑侧翻,下游控制兜不住
作为刚入行的工程师,我从这篇论文里读到的最关键一条,不是某个公式,而是责任分配问题:
- 侧翻是不可逆的硬约束,不是可调的软目标。 一旦翻了,没有「小幅修正」的余地。因此它应该像「不能撞」一样,作为规划层的硬边界(或者高权重的势场墙),而不是留给底盘控制去救。
- 下游控制救不了规划埋的雷。 如果规划给了一条「速度过快 + 急转」的轨迹,底盘再强的 PID / LQR / 差动制动也只能在这条轨迹上做局部修正,很可能物理上已经没有不翻的解。规划阶段多算一步 5-DOF 预测,比控制阶段多十个执行器都管用。
- 把物理指标做成「势场/代价」是个通用套路。 不只是侧翻,越界、超速、乘员不适、能耗,都可以用类似的「风险场」思路融进优化。APF 这把老枪,在商用车安全约束前置上依然好使。
- 对 VLA / 端到端的警示。 大模型擅长学「统计上常见的好轨迹」,但侧翻是稀有且危险的尾部事件。要么在训练目标里注入 LTR/RI 这类物理约束(类似这篇的 arAPF 思想),要么在 VLA 下游接一个带动力学约束的规划/校验层。纯黑箱端到端直接上重卡,风险很高。
一句话:重卡自动驾驶的安全,第一关必须设在规划层;而规划层要管的,远不止「别撞」这一件事。
📚 延伸阅读(相关文献方向)
- Rollover Prevention and Motion Planning for an Intelligent Heavy Truck(CJME, 2021, DOI: 10.1186/s10033-021-00605-z):同一团队更早的工作,同样做重卡防侧翻运动规划,可作为本篇前传。
- Anti-rollover control of a heavy-duty vehicle based on lateral load transfer rate(Vibroengineering Procedia, 2016):用 4-DOF 模型 + LTR + 差动制动做防侧翻控制,适合理解 LTR 控制闭环。
- Enhanced Anti-Rollover Control for Commercial Vehicles Under Dynamic Lateral Interferences(Designs, 2024):用 7-DOF 模型 + LTR + 鲁棒 H∞ 控制,考虑侧风/侧坡等横向扰动,适合理解「干扰下的侧翻」。
- Gaspar P. 等关于 heavy vehicle rollover 的 combined control structure(European Journal of Control, 2004):早期把主动悬挂与差动制动结合的侧翻预防经典文献。
- Larish 等 A new predictive lateral load transfer ratio for rollover prevention(IEEE TVT, 2013):提出预测式 LTR,适合理解比静态 LTR 更超前的预警思路。
- 博客内 nuTruck 系列文章:理解「把侧翻做成显式安全指标」的另一条技术路线,与本篇互为补充。
🧾 小结
这篇 2024 CJME 论文的价值,不在于用了什么惊天动地的新模型,而在于它把一个被主流自动驾驶研究长期忽视的硬约束——重卡侧翻——干净利落地塞进了运动规划里:
- 用 5-DOF 动力学模型(纵向、横向、横摆、簧上侧倾、簧下侧倾)精确刻画侧倾;
- 用推导出的 RI 侧翻指标(与 LTR 误差约 1.5%)量化风险;
- 首创 抗侧翻 APF(arAPF),把 RI 做成排斥势场;
- 在 MPC 代价里同时放轨迹跟踪、避障 APF、抗侧翻 APF;
- 用 博弈论 自动调避障与抗侧翻两股势力的权重。
对想做重卡 / 商用车 VLA 的工程师,它是一记提醒:当你在刷端到端指标时,别忘了重卡还有「翻车」这个乘用车没有的、会要命的第三安全维度。把它前置到规划,比任何下游补救都重要。
def anti_rollover_apf(ri, k_R):
# ri: rollover index from 5-DOF model
# k_R: anti-rollover field constant > 0
return 0.5 * k_R * ri * ri
def total_cost(track_err, obs_apf, ar_apf, w_obs, w_roll):
return track_err + w_obs * obs_apf + w_roll * ar_apf
def mpc_step(state, model, horizon, w_obs, w_roll):
best = None
best_j = float("inf")
for ctrl in candidate_controls():
traj = model.rollout(state, ctrl, horizon)
ri = model.rollover_index(traj)
j = total_cost(
track_error(traj),
obstacle_apf(traj),
anti_rollover_apf(ri, k_R=1.0),
w_obs,
w_roll,
)
if j < best_j:
best_j = j
best = ctrl
return best