☰
横纵向控制方案:PID速度跟踪与MPC路径跟踪的二自由度模型
2026/10/21 7:11:06 网站建设 项目流程

最近在整理一套自动驾驶横纵向控制方案,核心思路和标题里写的一致:纵向速度跟踪用 PID 控制,横向路径跟踪用 MPC 控制,被控对象建模用的是车辆二自由度动力学模型。这套组合在工程圈里算是相当经典的搭配,不追求花哨,胜在稳定可靠。哪怕你没做过整车控制,只要对控制理论有点基础,也可以照着这套思路快速搭出一版能跑车、能仿真、能迭代的原型系统。

先说说它解决什么问题。横纵向控制说白了就是让车"走得稳、跟得准"——纵向控制负责把车速保持在期望值,比如巡航定速 60 km/h;横向控制负责让车沿着规划好的参考路径走,比如车道保持、弯道跟踪。这套方案看起来只是两种算法拼在一起,但背后的取舍逻辑很有意思:为什么纵向不也用 MPC?为什么横向不也上 PID?为什么偏偏要用二自由度模型当 MPC 的预测模型?把这些想明白了,你就不是机械地调参,而是真正理解这套方案每一块存在的理由。下面我把整个方案从设计、建模到调参、踩坑,完整拆开讲一遍。

1. 控制方案的整体架构与设计逻辑

1.1 为什么把横纵向拆成两套独立控制器

对于乘用车运动控制,横纵向解耦是工程上非常常见的选择。整车运动本来是一个强耦合的六自由度问题,侧向力、纵向力、横摆、俯仰全搅在一起。如果非要建立一个包含全部关系的统一模型,再拿一个非线性控制器去解,理论和仿真都能做,但实车落地的难度会指数级上升——你需要极其准确的轮胎模型、载荷转移模型、悬架模型,还要面对海量标定参数。

所以更务实的做法是:把纵向和横向分开处理,各自用一个相对简单的控制器,然后用上层规划去协调两者产生的参考指令。这套方案里,上层规划给出目标车速 v_ref 和参考路径(带曲率 κ 的点序列),纵向 PID 负责追车速,横向 MPC 负责追路径,两个控制器各自读取车辆状态和定位结果,输出各自的执行指令,最后在底层叠加成最终的油门、刹车、转向命令。

这么做的好处非常明显。第一,控制器的调试可以完全独立进行,缩小问题边界。纵向出问题不会捎带把横向带崩,反过来也一样。第二,每个控制器可以用相对简单但针对性的模型,参数标定量可控。第三,这种架构符合整车电子电气架构里模块化分工的习惯,后续不管是把纵向换成自适应巡航,还是把横向换成更高级的 MPC,都只动一个模块。

当然,解耦不等于无视耦合。二自由度模型里纵向速度 vx 本身就是一个关键参数,它会直接影响横向动力学的响应特性,后面我会专门讲这块怎么处理。

1.2 纵向选 PID、横向选 MPC 的取舍逻辑

先说纵向为什么用 PID。纵向控制的被控对象是一个"相对温和"的通道:车速的变化在时间尺度上偏慢,执行器(油门/刹车)和控制目标(车速)之间的关系整体上是单调、稳定的,超调趋势可控,外部扰动也相对有限(主要是坡度和风阻)。PID 在这种场景下完全够用,而且它有一个别人比不了的优势:实现成本极低、调试路径极其成熟。

如果纵向也上 MPC,虽然可以把油门、刹车、发动机响应甚至换挡逻辑一起放进预测模型,理论上能做出更平顺的加速度规划,但代价是模型的复杂度、标定工作量、在线计算量全都上去了。对大多数 L2/L2+ 场景来说,这个收益并不划算。工程上有一条朴素的准则:能用简单控制器解决的问题,不要主动引入复杂控制器。

再看横向为什么选 MPC。横向控制的难点在于:车辆本身是一个欠驱动、强耦合、模型参数不确定的系统,路径跟踪还要求控制器"前瞻"——你必须在进弯之前就开始打方向,而不是到了弯道发现偏差才反应。PID 是当前时刻的反馈,它天然只看"现在"的误差,对纯跟踪这类几何方法来说也是"看前方的点、按几何关系转向",很难把车辆动力学约束、执行器约束、预测时域内的未来信息统一考虑进去。

MPC 的核心优势是"带着模型向前看"。每个控制周期,它用二自由度动力学模型预测未来一段时域内车辆的状态轨迹,同时把转向角幅值、转向角速率、横向偏差这些约束直接写进优化问题里,滚动求解出最优的前轮转角序列,然后只执行第一步。这正好补上了横向控制最需要的"预见性"和"约束处理能力"。所以横向用 MPC,不是炫技,是这个问题的结构决定它适合 MPC。

2. 二自由度车辆动力学模型:MPC 的地基

2.1 二自由度模型的物理含义

二自由度模型是车辆横向动力学里最经典、最常用的简化模型。说"二自由度"不是说车只剩两个自由度,而是把车辆平面运动近似成两个核心自由度:侧向平移速度(质心处)和横摆角速度。它基于一组关键假设:忽略纵向动力学的瞬态影响(把纵向速度 vx 当成时变参数处理),忽略悬架俯仰、侧倾自由度,假设轮胎工作在线性区,也就是侧偏角与侧偏力成正比。

用生活化的方式理解:这个模型把车抽象成一个"会横移、会转头的刚体",前轮转角决定车头往哪偏,轮胎侧偏力决定整车往哪侧滑。在中低速、前轮转角不大、路面附着良好、正常驾驶工况下,这个模型能非常好地近似实车的横向响应。但你要是拿它去做漂移、急打方向或者冰雪路面,模型假设就会失效,MPC 的预测自然也就不准了。

所以这套方案的适用范围要清楚:常规驾驶工况下的路径跟踪控制。对量产级的车道保持、弯道巡航来说,这个假设窗口是足够的,这也是为什么它被大量工程方案选作 MPC 的预测模型。

2.2 从物理方程到状态空间方程

二自由度模型的状态变量通常取质心侧偏角 β 和横摆角速度 r。先看两条基本动力学方程:侧向力平衡和绕质心的力矩平衡。

侧向力方程:

m * (v_dot + vx * r) = Fyf + Fyr

横摆力矩方程:

Iz * r_dot = lf * Fyf - lr * Fyr

其中 Fyf、Fyr 是前后轮侧偏力。在线性区,侧偏力等于侧偏刚度乘以侧偏角,前轮侧偏角包含前轮转角带来的那一项,后轮侧偏角则只和车辆运动状态相关。

代入并整理,可以得到经典的状态方程:

[β_dot] [a11 a12] [β] [b1] [ r_dot] = [a21 a22] * [r] + [b2] * δ

系数分别为:

a11 = -(Cf + Cr) / (m * vx) a12 = -1 - (lf * Cf - lr * Cr) / (m * vx^2) a21 = -(lf * Cf - lr * Cr) / Iz a22 = -(lf^2 * Cf + lr^2 * Cr) / (Iz * vx) b1 = Cf / (m * vx) b2 = lf * Cf / Iz

这里 δ 是前轮转角,Cf、Cr 是前后轮的等效侧偏刚度。可以看到,几乎所有系数都带着 vx,也就是说车速一变,整个横向动力学特性都会跟着变。这给 MPC 带来的问题是:预测模型是时变的。

对于路径跟踪,仅用 β 和 r 还不够,需要把横向偏差 ey 和航向偏差 eψ 扩进状态里。参考路径由定位和规划模块提供,每个控制周期取车辆在参考路径上的最近匹配点,定义ey为车辆质心到参考路径的横向距离,eψ为车辆航向与参考路径切线方向的夹角。扩展后的状态取 x = [ey, eψ, β, r],输入取 δ,参考曲率 κ 作为已知扰动量。

扩展后的误差状态方程写成:

[ey_dot] [0 vx vx 0] [ey] [0 ] [-vx] [eψ_dot] [0 0 0 1] [eψ] [0 ] [ 0 ] [β_dot ] = [0 0 a11 a12] * [β ] + [b1] * δ + [ 0 ] * κ [ r_dot] [0 0 a21 a22] [ r] [b2] [ 0 ]

这个模型就成为了 MPC 在线预测的基础。实际离散化时采样周期 T 通常取 0.02~0.05 秒,用零阶保持或者一阶欧拉法离散成差分方程后,直接用在优化求解里。

2.3 模型参数获取与验证

模型里的参数包括质量 m、横摆转动惯量 Iz、质心到前后轴的距离 lf、lr,以及前后轮侧偏刚度 Cf、Cr。前面几个几何和质量参数可以直接从车辆参数表里拿,或者用轴荷分布换算。麻烦的主要是侧偏刚度,它受轮胎型号、胎压、载荷、路面附着影响很大,标称值和实际值经常有明显出入。

工程上获取侧偏刚度有两个常见途径。一个是系统辨识法:在平整场地做方向盘阶跃输入实验,记录稳态横摆角速度增益,再结合车辆几何参数反算出等效 Cf、Cr。另一个更省事的做法:先用仿真平台里车辆模型的标称参数代入控制模型起步,把整个控制链路调通,再到实车做验证和微调。实际项目里,参数不准导致的模型失配是横向 MPC 精度不足的主要原因之一,所以有条件一定要做一次实车辨识。

模型验证也很重要。简单做法是拿实车或高精度车辆模型的输出和你这套二自由度模型的预测输出做对比,在中等车速(40~80 km/h)、中等转角(±15°以内)工况下,如果横摆角速度的预测曲线和实际曲线能大致贴合,这个模型就可以拿给 MPC 用了。

3. 纵向 PID 控制:结构、整定与工程化处理

3.1 双环 PID 的结构设计

纵向控制的任务一句话:让实际车速稳定、平顺地跟着目标车速走。但直接对车速误差做单环 PID 输出油门/刹车,工程上会比较吃力,因为油门到车速之间隔着发动机响应、换挡逻辑、坡道阻力这些环节,等效增益在不同工况下波动很大。

更常用的做法是双环结构:外环是速度环,输入是车速误差,输出是期望加速度;内环是加速度环,输入是期望加速度与实际加速度的误差,输出是油门/刹车指令。实际加速度可以用纵向加速度传感器直接测量,也可以用车速微分去估计。这个结构等于先在速度层面定一个"需要多大的加速度",再让底层去追这个加速度,分清了"要多少"和"怎么给"两个问题。

外环 PID 的 P 决定对速度误差的响应强度,I 负责消除坡道、风阻带来的稳态误差。内环通常只要 P 就够,加上少量 I 补偿执行器标定误差。内环带宽要明显高于外环,简单说就是内环"反应快、跟得紧",外环"稳着来、别超调"。如果内环响应太慢,外环再怎么调都会开着别扭。

3.2 参数整定与工程化处理

纵向 PID 的整定比横向轻松,但也有几个容易翻车的点。第一是积分饱和。当车速长时间追不上目标(比如上长坡),积分项会积累到很大的值,等坡道结束、误差方向反转时,积分还在继续起作用,结果就是明显的超调甚至来回震荡。工程上常用抗积分饱和处理:输出达到执行器限幅时冻结积分,或者只在误差方向与输出方向一致时才允许积分累积。

第二是微分噪声。车速信号不管是来自轮速传感器还是融合定位,都有噪声,直接做微分会把噪声放大成抖动的加速度指令。解决方案是微分前先低通滤波,或者干脆用带滤波器的微分先行结构。我在实际项目里一般会把速度信号做 5~10 Hz 的一阶惯性滤波,再进微分环节。

第三是坡道补偿。纯靠积分去顶坡道会有明显迟滞,你会看到车在坡道上速度先掉一截再去追回来。更好的做法是加前馈项:利用纵向加速度传感器读数 a_meas 与车速微分的差值去估算坡度分量,在 PID 输出上叠加一个前馈加速度 g*sinθ。这样对坡度扰动是"提前补偿",PID 只处理残差,动态表现会平滑很多。

再补充一些实操参数参考。速度环采样周期 10~20 ms 够用,比例系数 Kp 可以先从 0.5~2.0 起步(单位:加速度/速度误差),积分系数 Ki 取 Kp 的 1/10~1/5,然后根据实车响应的超调量调增调减。加速度环的期望加速度要设置变化率限幅,比如 ±3 m/s³,否则油门/刹车指令容易出现阶跃跳变,车开起来会一闯一闯的。

4. 横向 MPC 控制:从模型预测到最优转角

4.1 MPC 控制器的工作原理与预测模型

MPC 的思想一句话概括:在每个控制周期,基于当前状态,用模型"预演"未来 Np 步的车辆状态,按照代价函数优化出一串最优控制量 δ(0)、δ(1)...,然后只执行第一个。下一周期状态更新后再重新来一遍,这就是滚动时域控制的由来。

把上一节的误差状态方程离散化后就得到 MPC 使用的预测模型。每个周期根据当前的 vx 重新计算状态矩阵,然后在预测时域内假设车速不变,这是最常见的处理方式。如果你对精度要求更高,也可以用上层规划的期望车速序列在预测时域里"分段赋值",但工程上大部分情况并不需要那么细。

预测模型的离散化方法对精度也有影响。欧拉法简单,但采样周期大了误差明显;零阶保持法更准,需要在每个周期做一次矩阵指数运算,耗时略增。对于 50 ms 左右的控制周期,两种方法差异不大,我习惯用零阶保持,图个稳妥。

4.2 代价函数与约束设计

MPC 的优化目标写成一个标准的二次型代价函数:

J = Σ (x_k^T Q x_k + δ_k^T R δ_k + Δδ_k^T RΔ Δδ_k)

其中 x_k 是第 k 步的状态偏差,包含横向偏差、航向偏差、质心侧偏角、横摆角速度。Q 是状态权重矩阵,R 是控制量权重,RΔ 是控制增量权重。权重设置直接决定了控制器的性格:

  • 横向偏差权重 w_ey 决定"贴线"有多紧,调大它车会更激进地回正偏差,但容易引发振荡。
  • 航向偏差权重 w_eψ 决定车头方向和路径切线对齐的强度,调大它弯道转向会更平滑。
  • 控制量权重 R 约束转向角的幅值,调大它转向更保守,响应更钝。
  • 控制增量权重 RΔ 约束转向角的速率变化,调大它方向变化更柔和,对转向执行器和乘坐舒适性都友好。

实际项目里初始权重可以这么给:w_ey = 1,w_eψ = 5~10,w_β = 0.1,w_r = 0.1,R = 0.1,RΔ = 0.01。这个量级下控制器会比较跟手但仍有约束存在,然后再根据仿真曲线的振荡程度去微调。

约束设计是 MPC 比 PID 先进的关键地方。最基本的两个约束是前轮转角幅值约束和转角增量约束。幅值约束来自转向执行器物理限位,普通乘用车前轮转角大概在 ±35° 附近,但实际控制用不到那么大,可以留足够余量设成 ±20° 左右。增量约束对应转向电机的转向速率上限,比如每个控制周期(50 ms)转角变化不超过 2°,相当于每秒最多转 40°,这是一个合理的转向速度预期。把这两个约束写进去,MPC 会主动避免输出超出执行器能力的期望转角——这在极限工况下是保命功能。

如果还想更精细,可以把质心侧偏角约束也加进去。侧偏角过大意味着车辆已经接近失稳边界,限制它可以防止 MPC 把车导向不稳定状态。但这个约束在预测模型线性、参数不准的情况下容易过度保守,我自己的经验是:前期调试先不加,等基础跟踪效果稳定后再尝试。

4.3 求解器选型与实时性优化

线性 MPC 的优化问题本质上是一个二次规划(QP)问题,当前工程实践中常用的是开源 QP 求解器 OSQP,因为它支持稀疏矩阵、求解速度快、内存占用低,嵌入式平台上也能跑。CVXGEN 可以针对固定规模的 QP 生成非常紧凑的求解代码,适合产品化,但商用授权和问题重构成本要评估。仿真验证阶段用 MATLAB 的 quadprog 或 Python 的 qpsolvers 库也完全可以,接口方便,先把算法逻辑跑通再迁移到实车平台。

实时性方面有几个非常实用的优化手段。

第一,控制时域 Nc 不需要等于预测时域 Np。预测时域 Np 可以取 25~35(大约 1.25~1.75 秒的预测长度),控制时域 Nc 取 5~10,后面的控制增量强制为零。这样既保留了较远的预见性,又显著减少优化变量个数,求解时间下降明显。

第二,线性 MPC 的 Hessian 矩阵只要模型和权重不变,理论上每个周期都一样。可以在初始化时预先分解一次,每个周期只需要更新梯度部分的计算,这通常能把单次求解时间压缩到毫秒级。

第三,热启动。把上一周期解出的最优控制序列作为本周期的优化初值,QP 求解的迭代次数通常会大幅减少,尤其是工况平稳变化的场景下效果极其明显。这三个手段叠加下来,50 ms 的控制周期里留给 MPC 的求解时间完全够用,实测很多场景下单次求解能压到 2~5 ms 以内。

5. 横纵向协同调试与验证

5.1 车速变化对横向 MPC 的影响

前面讲过二自由度模型系数里全是 vx,这意味着纵向速度的变化会时刻改变横向模型的动态特性。最直观的例子:同样一个前轮转角,低速时车头响应迟缓,高速时车头响应灵敏得多。如果横向 MPC 用固定的 vx 建模,一旦实际车速偏离预设值,预测误差就会积累,最终表现为大曲率路段跟踪偏差明显变大。

工程上的标准处理是每个控制周期读取当前车速并重算模型矩阵,也就是"实时调参"。对 20 Hz 的控制频率来说,做一次矩阵更新和离散化的计算量很小,完全不是问题。更进一步,如果你预测时域内车速有较大变化的可能(比如进入弯道前明显减速),可以基于规划层的参考速度序列做分段常数预测,或者干脆在代价函数里对预测时域末端的横向偏差适当降低权重,给速度波动留出裕度。

还有一个容易被忽视的耦合点:紧急制动时车辆的横摆响应会变化,二自由度模型的精度也会下降。遇到这种情况,更稳妥的做法是横纵向之间加一个优先级判断:当纵向减速度超过某个阈值时,横向控制器保持上一周期的转角输出,不再更新指令,先保证车辆纵向稳定性,等速度平稳后再恢复横向跟踪。这种"纵向优先"的逻辑虽然简单,但对安全性的提升非常直接。

5.2 联合调试的先后顺序与关键观察点

横纵向两套控制器不能同时从头开始调,否则出了问题根本说不清是哪边的锅。我推荐按这个顺序来:

第一步,把横向 MPC 关掉(或给定一个固定转角),先让纵向 PID 把车速跟踪调好。观察目标车速变化时的响应速度、超调量、稳态误差,重点验证坡道前馈和抗饱和逻辑是否正常。

第二步,在直线工况下把纵向目标车速设为恒定值,开始调横向 MPC。先不加大曲率弯道,就看直线的横向偏差能不能收敛到零附近,方向会不会来回修正。如果出现高频小幅摆动,说明 R 或 RΔ 太小,状态噪声被过度放大。

第三步,逐步加入弯道测试,从大半径缓弯到小半径急弯。观察入弯前 MPC 是否提前开始打方向(这说明预测时域生效),弯道中横向偏差是否稳定,出弯时是否出现过大的回正振荡。

第四步,做横纵向同时变化的联合工况,比如弯道中减速、加速出弯、变道伴随加减速。重点看两个控制器叠加后的车辆轨迹是否平顺。

调试过程中我最推荐的记录手段是四张曲线:横向偏差时间曲线、航向偏差时间曲线、前轮转角指令曲线、车速与目标车速曲线。把这四条线放在同一张图里看,能非常直观地定位问题是出在"路径没跟上"还是"转向指令太激"还是"速度扰动导致模型失配"。

5.3 仿真验证中的场景设计

做仿真验证时,场景设计直接影响你能不能在实车前发现隐患。别只跑标准双移线,那个工况太多车都能过。我自己的经验是至少覆盖这几类场景:高速公路缓弯巡航、快速连续变道、曲率渐变的超大半径弯道、带有速度变化命令的复合工况。

另一个关键点是仿真平台里给车辆模型加参数偏差。比如实际控制模型里的侧偏刚度设 80000 N/rad,仿真车辆模型里的真实值故意设成 70000 或 90000,模拟模型失配。如果你的 MPC 在这种失配下还能保持稳定的路径跟踪,实车的把握就大很多。很多团队在仿真里模型参数完全一致,仿真曲线漂亮得不行,一到实车精度就崩,往往就是漏了这一步。

6. 常见问题与排查经验

6.1 横向振荡与发散

横向 MPC 最常遇到的问题就是方向来回修正、车辆走成"S 形"。排查时先把现象分两类:高频小幅摆动,和低频大幅摆动。

高频小幅摆动通常跟权重有关。R 和 RΔ 设得太小,优化器会把转向角当成"很便宜的输入"来频繁使用,解决方法是增大 RΔ,给转角变化率加权重,让转角指令变柔。也有可能是状态反馈信号噪声过大,检查一下横向偏差信号是否需要低通滤波。低频大幅摆动往往发生在高速场景,根因是模型失配,最常见的就是二自由度模型在高速下被高估了转向灵敏度,实际车辆响应没有模型预测那么灵敏。这时可以先降低车速验证是否是速度相关的问题,再考虑修正侧偏刚度参数,或者在代价函数里适度提高状态权重让 MPC 更保守。

还有一个经验之谈:MPC 的约束和权重耦合后会出现"极限处反复横跳"的现象。比如前轮转角约束设成 ±20°,优化解频繁顶到边界,边界两边来回切换,车辆就会表现为极限工况下的抖振。排查方法是打开求解器的原始解,看控制量是不是一直在贴着约束边界走。如果是,就要么放宽约束(在物理允许的前提下),要么调低状态权重,让最优解退回约束内工作。

6.2 稳态误差与跟踪延迟

如果你发现车辆在直线或大半径弯道上始终存在一个固定方向的横向偏差,比如总是偏左 10 cm,这通常不是权重问题,而是控制器缺乏消除稳态误差的机制。线性 MPC 本质上是一个带约束的 LQR,对模型失配和外界扰动没有天然的积分作用。

解决方案有几种。最简单的是加曲率前馈补偿:在 MPC 输出的转向角上叠加一项基于参考曲率的前馈转角,公式近似于 δ_ff = L * κ(L 为轴距)。这就是"提前打方向"的最朴素实现,它能把稳态跟踪误差消除一大截。更系统的做法是在状态方程里增加一个横向偏差的积分状态,代价函数里对积分状态加权重,效果类似于 PID 里的积分项,但实现复杂度会高一些。

跟踪延迟的排查要区分两种"迟"。一种是控制周期太长,导致指令更新跟不上车辆响应,表现为所有工况下都有一致的滞后感。另一种是预测时域太短,MPC"看不够远",在入弯时反应偏晚。前者把控制频率从 10 Hz 提到 20 Hz 通常就能明显改善;后者则需要增加 Np,但要注意计算量会跟着涨,优先配合控制时域 Nc 一起权衡。

6.3 纵向加减速不平顺与执行器配合

纵向控制最常见的投诉是"开着像新手司机,一脚油门一脚刹车"。很多时候不是 PID 没调好,而是目标加速度的变化太突兀。规划层给出的目标车速本身可能有突变,速度环就会输出一个阶跃的期望加速度。处理方法是给期望加速度加变化率限幅,同时在速度环里对目标速度信号先做一次平滑处理,比如用斜坡函数限制目标车速的变化率。

另一个很容易忽略的问题是执行器切换逻辑。多数车辆的底层执行器是刹车和油门分立的,纵向控制器输出的加速度指令在接近零附近会频繁切换油门和刹车,导致机械部件磨损加剧、乘坐体验变差。工程上常见的做法是设置一个"死区滞回"逻辑:当期望加速度在 ±0.3 m/s² 之间时,保持当前执行器模式,不来回切换。这个小细节对实车体验的提升非常明显。

还要注意纵向加速度反馈的噪声问题。如果你的内环用的是加速度传感器读数,稍微有点噪声都会被 PID 比例项放大,表现为油门踏板抖动。实际项目中可以对加速度反馈做 20~50 Hz 的低通滤波,并用车速微分做相互校验,发现两者偏差超过阈值时以车速微分为准,避免传感器失效后的异常输出。

6.4 低速与停车工况的处理

二自由度模型在低速下有一个先天性问题:车速趋于零时,模型系数里的 vx 在分母上,矩阵数值会变得病态,MPC 的预测输出可能极不稳定。同时,车辆接近静止时,前轮转角对横向位移几乎没有作用,横向控制从根本上失去了意义。

工程上对低速工况的通用处理是模式切换:当车速低于某个阈值(比如 2 m/s)时,横向 MPC 停止输出或锁存为最近一帧的合理转角,纵向 PID 切换为停车控制逻辑,以位置和加速度为控制目标进行精确停车。车速恢复到阈值以上且持续一小段时间后,再平滑切回正常控制模式。这个低速逻辑看似简单,但在实际项目中是保证安全性的重要一环,特别是自动泊车和拥堵跟车场景,一定要提前设计好。

还有一个小细节:横向偏差的参考点选择。低速时用质心位置做参考点和高速时用预瞄点做参考点的效果差异很大。如果想让 MPC 在低速和高速都有良好表现,可以考虑把横向偏差的计算点从质心改成前方预瞄位置,预瞄距离随车速变化,这样控制器会更符合驾驶员的实际操作习惯。

最后聊几句个人体会

这套横纵向控制方案做下来,我最深的体会是:控制器的难点从来不在算法公式本身,而在"模型和现实的差距"上。PID 参数网上能搜到一大堆,MPC 的理论文章更是汗牛充栋,但真正拉开差距的,是你对车辆模型参数的把握、对约束边界的设计、对异常工况的判断。二自由度车辆动力学模型看起来很简单,但它把侧偏刚度、横摆转动惯量这些参数的精度要求全部暴露出来了,任何一个参数失配,MPC 都能在曲线上诚实地反馈给你。

另一个实用建议是,刚开始调横向 MPC 权重时,一定不要同时调多个参数。我踩过几次坑之后养成了习惯:一次只动一个权重,其余全部固定,每次改动后跑同样的工况对比曲线,记录响应差异。这样虽然慢,但每步都能积累有效经验,反而比"感觉不对就全调一遍"出活快得多。

这套方案的扩展空间也很大。纵向上可以加一层自适应巡航的距离控制环,在速度 PID 外面再套一个跟车距离控制器;横向上可以把线性 MPC 扩展到带侧偏角硬约束的版本,或者引入非线性轮胎模型去覆盖更极端的工况。后面的路还长,先把基础方案吃透,后面都是水到渠成的事。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询