2、车辆运动学模型:自行车模型、阿克曼转向几何、运动学方程推导
好,咱们进入正题。这一章聊的是车辆运动学模型,说白了就是研究车怎么动起来的几何关系。你想想看,一辆车在低速行驶时,轮胎的侧偏特性还没那么明显,这时候用运动学模型就够用了。我个人习惯把运动学模型当作控制设计的“第一性原理”——先把这个搞透,后面再加动力学细节就顺了。
2.1 自行车模型:把四轮简化成两轮
为什么叫自行车模型?因为把四个轮子简化成两个了。前轮和后轮各一个,想象成一辆自行车在跑。这个简化在低速场景下非常实用。
我在项目中遇到过一个问题:用四轮模型做路径跟踪,参数调得头大。后来换成自行车模型,反而效果更好。为什么?因为参数少了,鲁棒性反而上来了。
自行车模型的核心假设有三条:
- 车辆左右对称,忽略左右轮的差异
- 前后轮各用一个等效轮代替
- 车辆在平面内运动,不考虑垂向跳动
嗯,这里要注意:这个模型只适用于低速(一般小于5m/s)。高速时轮胎侧偏不可忽略,就得用动力学模型了。
2.2 阿克曼转向几何:让轮子乖乖转弯
阿克曼转向几何,说白了就是解决一个问题:转弯时内侧轮和外侧轮的转角不一样。你想想看,如果四个轮子都平行转向,那转弯时轮胎会打滑,磨损严重。
阿克曼原理的核心是:所有车轮的转向中心交于一点。这个点就是瞬时转动中心。
关键公式:
内轮转角 δi 和外轮转角 δo 满足:
cot(δ_o) - cot(δ_i) = W / L
其中 W 是轮距,L 是轴距。
我记得有一次调试实车,发现转弯半径总是不对。查了半天,原来是阿克曼几何没校准好。后来用这个公式反算了一下,发现内外轮转角差了2度。调完之后,路径跟踪精度直接提升了一个量级。
实战小技巧:
在代码实现中,我建议直接用等效前轮转角 δ 来近似。因为自行车模型已经简化了,没必要再纠结内外轮差异。但如果你做的是四轮独立转向,那就得老老实实算阿克曼几何。
2.3 运动学方程推导:从几何到数学
好,现在咱们把自行车模型和阿克曼几何结合起来,推导运动学方程。这个过程其实不复杂,就是几何关系加一点微积分。
先定义几个状态量:
- x, y:车辆后轴中心的位置
- θ:车辆航向角(车头朝向)
- v:后轴中心的速度(纵向速度)
- δ:前轮转角
- L:轴距
运动学方程长这样:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
这三个方程,前两个是位置变化,第三个是航向角变化。你想想看,航向角变化率其实就是角速度,等于 v * tan(δ) / L。这个公式很直观:轴距越长,转弯越慢;转角越大,转弯越快。
避坑指南:
我曾经在离散化时吃过亏。直接用欧拉法离散化,步长取大了,结果仿真发散。后来改用二阶龙格库塔法才稳定。建议你离散化时步长不要超过0.01秒,尤其是高速场景。
2.4 离散化与代码实现
实际工程中,我们用的是离散形式。假设采样时间为 Δt,那么:
x(k+1) = x(k) + v * cos(θ(k)) * Δt
y(k+1) = y(k) + v * sin(θ(k)) * Δt
θ(k+1) = θ(k) + v * tan(δ(k)) / L * Δt
这个离散模型就是后面做MPC、LQR控制的基础。我个人习惯在代码里封装成一个函数,方便调用:
def bicycle_model(state, control, dt, L):
x, y, theta = state
v, delta = control
x_next = x + v * cos(theta) * dt
y_next = y + v * sin(theta) * dt
theta_next = theta + v * tan(delta) / L * dt
return [x_next, y_next, theta_next]
嗯,这里要注意:输入的控制量是 v 和 δ,但实际车辆的控制量是油门/刹车和方向盘转角。中间还需要一个映射关系,这个咱们后面再聊。
2.5 模型局限性
任何模型都有局限性,运动学模型也不例外。我总结了几点:
| 局限性 | 影响 | 解决方案 |
|---|---|---|
| 忽略轮胎侧偏 | 高速时模型不准 | 改用动力学模型 |
| 忽略车辆惯性 | 急加速/急减速时误差大 | 加入动力学补偿 |
| 假设纯滚动 | 湿滑路面失效 | 增加摩擦系数估计 |
说白了,运动学模型就是个“几何玩具”。在低速、干燥路面、小转角场景下非常好用。但如果你要做高速变道、紧急避障,那就得升级到动力学模型了。
我的建议:
做控制设计时,先用运动学模型快速验证算法。等算法跑通了,再换成动力学模型做精细化调参。这样能省不少时间。
2.6 小结
这一章咱们聊了三个核心内容:自行车模型的简化思路、阿克曼转向几何的原理、运动学方程的推导与离散化。这些都是后面做横纵向控制的基础,一定要吃透。
下一章咱们会聊动力学模型,到时候会引入轮胎模型、侧偏刚度这些概念。嗯,那才是真正考验功底的地方。
公众号:蓝海资料掘金营,微信deep3321