横向控制基础:车辆运动学模型、自行车模型、横向控制目标与评价指标
各位同学好,我是你们的老朋友。今天咱们正式开始横向控制的第一课。说实话,我见过太多工程师一上来就调PID参数,结果车在路上画龙。为什么?因为连最基本的模型都没搞明白。嗯,咱们先把地基打牢。
1.1 车辆运动学模型——车到底怎么动的?
先问大家一个问题:一辆车在低速行驶时,它的运动规律是什么?
说白了,就是四个字——几何约束。车轮不能侧滑,前轮只能转个角度,后轮方向固定。这就是运动学模型的核心假设。
我个人的习惯是,先把这个模型画在纸上。你看,车辆的位置用 (x, y, θ) 三个量描述:
x, y:后轴中心点的坐标θ:车身朝向(航向角)δ:前轮转角v:后轴中心的速度
那么运动学方程长这样:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
其中 L 是轴距。这个公式我在项目里用了无数次,每次调参前都会先拿它算一遍理论轨迹。
核心要点:运动学模型只适用于低速(通常 < 10 m/s),因为高速时轮胎会打滑,运动学假设就不成立了。我在早期一个泊车项目里吃过这个亏——低速倒库没问题,一上到15km/h就偏得离谱。
1.2 自行车模型——把四轮简化成两轮
你可能会问:四轮车为什么要用自行车模型?
原因很简单:减少复杂度。四轮车的左右轮转角其实不一样(阿克曼转向),但如果我们只关心车辆的整体运动趋势,把左右轮合并成一个虚拟前轮,完全够用。
自行车模型的假设:
- 忽略车辆的侧倾和俯仰
- 轮胎的侧偏特性是线性的(小角度假设)
- 前后轴各用一个轮子代表
我记得有一次做高速车道保持,用运动学模型怎么调都震荡。后来换成自行车模型,把轮胎侧偏刚度加进去,问题一下就解决了。你想想看,高速时轮胎是有侧偏角的,运动学模型根本描述不了这个现象。
自行车模型的动力学方程稍微复杂一点:
m * v * (dβ/dt + r) = F_yf + F_yr
I_z * dr/dt = a * F_yf - b * F_yr
其中 β 是质心侧偏角,r 是横摆角速度,F_yf 和 F_yr 是前后轮的侧向力。这些侧向力跟轮胎侧偏刚度 C_f、C_r 直接相关。
我的经验:实际项目中,我通常低速用运动学模型(泊车、园区低速巡航),高速用自行车模型(高速车道保持、换道)。分界线大概在 36 km/h(10 m/s)左右。
1.3 横向控制目标——我们要控什么?
横向控制的目标,说白了就两件事:
- 路径跟踪:让车沿着规划好的路径走
- 稳定性:车不能晃,不能失控
具体来说,我们关注三个量:
- 横向偏差:车到目标路径的垂直距离
- 航向偏差:车身朝向与路径切线方向的夹角
- 曲率偏差:路径的弯曲程度与车辆转向能力的匹配度
我曾经在一个项目中,只盯着横向偏差调参数,结果航向偏差越来越大,最后车直接冲出车道。嗯,这里要注意:三个偏差要同时看,不能只看一个。
1.4 评价指标——怎么才算调好了?
没有评价指标,调优就是瞎调。我一般用这几个指标:
| 指标 | 定义 | 典型要求 |
|---|---|---|
| 最大横向偏差 | 整个过程中最大的偏离距离 | < 0.2 m(车道保持) |
| 均方根横向偏差 | 偏差的RMS值,反映整体精度 | < 0.1 m |
| 最大横摆角速度 | 车辆旋转的快慢,反映舒适性 | < 0.3 rad/s |
| 收敛时间 | 从偏差出现到恢复的时间 | < 2 s |
避坑指南:我曾经在一个项目中,只追求最大横向偏差小,结果把增益调得特别大。车确实贴线很近,但方向盘一直在抖,乘客晕车投诉不断。后来加了横摆角速度的约束,才平衡了精度和舒适性。
知识体系总览
下面这张图是我自己总结的横向控制知识框架,你可以把它当作整个课程的地图:
这张图把整个横向控制的知识脉络串起来了。从底层的运动学模型和自行车模型,到具体的控制目标,再到实际应用场景和评价指标。你每次调参遇到问题,都可以回到这张图上,看看是哪个环节出了偏差。
总结一下今天的内容:
- 运动学模型适合低速,自行车模型适合高速——选对模型是第一步
- 横向控制要同时盯住横向偏差、航向偏差、曲率偏差三个量
- 评价指标不能只看精度,舒适性(横摆角速度)同样重要
好了,这一章就到这里。记住我的一句话:模型是控制的上限,算法只是逼近这个上限的手段。模型没选对,后面调得再好也白搭。