3. 车辆运动学与动力学基础:从模型到实战
各位同学,欢迎来到第三章。这一章,我们得把车怎么动这件事彻底搞清楚。
说实话,很多做LKA的工程师,代码写得飞起,但一遇到极限工况就翻车。为什么?因为对车辆本身的运动规律理解不够深。我个人习惯,在讲任何控制算法之前,先把“车”这个被控对象的脾气摸透。
今天我们就来啃三块硬骨头:自行车模型、阿克曼转向、横向动力学微分方程。最后再聊聊两个关键参数——质心侧偏角和横摆角速度。
3.1 自行车模型(Bicycle Model)
你想想看,一辆四轮车,四个轮子各有各的转向和受力,分析起来多复杂?
所以工程师们想了个聪明的办法——简化。把左右两个前轮合并成一个虚拟前轮,左右后轮合并成一个虚拟后轮。这就是自行车模型。
核心假设:
- 忽略车辆的侧倾和俯仰
- 左右车轮的转向角一致
- 轮胎侧偏特性呈线性
- 纵向速度恒定(或变化缓慢)
我在项目中遇到过,有些同事直接用自行车模型做高速变道控制,结果实车测试时车辆甩尾了。为什么?因为高速时轮胎侧偏特性进入非线性区,模型失效了。所以记住:自行车模型适用于侧向加速度 ≤ 0.4g 的场景。
自行车模型的运动学方程其实很简单:
// 车辆运动学方程(自行车模型)
// 状态量: [x, y, ψ] 位置和航向角
// 控制量: [v, δ] 速度和前轮转角
dx/dt = v * cos(ψ)
dy/dt = v * sin(ψ)
dψ/dt = v * tan(δ) / L
// 其中 L 为轴距
嗯,这里要注意:这个模型假设轮胎没有侧偏角,只适用于低速(通常 < 5 m/s)。高速时,必须用动力学模型。
3.2 阿克曼转向几何
你有没有想过,为什么车辆转弯时,内侧车轮和外侧车轮的转角不一样?
这就是阿克曼转向几何要解决的问题。它的核心思想是:所有车轮的转向中心必须交于一点,这样才能保证车轮纯滚动,没有滑动。
阿克曼转向公式:
cot(δo) - cot(δi) = T / L
其中:
- δo:外侧车轮转角
- δi:内侧车轮转角
- T:轮距
- L:轴距
我曾经在标定转向系统时,发现车辆在低速大转角时轮胎磨损异常严重。查了半天,原来是阿克曼率没调好。说白了,就是内外轮转角关系不对,轮胎在“硬磨”地面。
实际量产车中,阿克曼率通常在 60% - 80% 之间,不会做到100%。为什么?因为高速时我们需要一点“不足转向”特性,让车辆更稳定。
| 工况 | 阿克曼率 | 效果 |
|---|---|---|
| 低速泊车 | 接近100% | 转弯半径小,灵活 |
| 高速变道 | 60%-70% | 不足转向,稳定性好 |
| 赛道驾驶 | 50%-60% | 过度转向,响应快 |
3.3 车辆横向动力学微分方程
好了,现在我们进入重头戏。横向动力学,说白了就是研究车辆怎么“横着走”的。
车辆横向运动有两个自由度:侧向位移和横摆运动。对应的微分方程如下:
// 二自由度车辆横向动力学模型
// 状态量: [v_y, ω] 侧向速度和横摆角速度
// 输入: δ 前轮转角
m * (dv_y/dt + v_x * ω) = F_yf + F_yr
I_z * dω/dt = a * F_yf - b * F_yr
// 轮胎侧偏力(线性区)
F_yf = -C_f * α_f
F_yr = -C_r * α_r
// 侧偏角
α_f = δ - (v_y + a * ω) / v_x
α_r = -(v_y - b * ω) / v_x
其中:
- m:整车质量
- I_z:横摆转动惯量
- a, b:质心到前后轴的距离
- C_f, C_r:前后轮侧偏刚度
- v_x:纵向速度
重要提醒:
这个模型只在轮胎侧偏角 < 5° 时有效。超过这个范围,轮胎进入非线性区,侧偏力不再与侧偏角成正比。我见过有人直接用这个模型做极限工况控制,结果仿真和实车完全对不上。
3.4 关键参数:质心侧偏角与横摆角速度
这两个参数,是衡量车辆横向稳定性的“体温计”和“心率”。
3.4.1 质心侧偏角(β)
质心侧偏角,就是车辆实际运动方向和车头指向之间的夹角。说白了,就是车在“横着滑”的程度。
公式很简单:
β = arctan(v_y / v_x) ≈ v_y / v_x (小角度近似)
我个人习惯,在LKA系统中,把质心侧偏角控制在 ±2° 以内。超过这个范围,乘客就会感觉“车在飘”。
我曾经调试过一个项目,车辆在高速弯道中总是偏离车道中心。查了半天,发现是质心侧偏角估计不准。后来加了IMU和GPS融合,才把这个问题解决。
3.4.2 横摆角速度(ω)
横摆角速度,就是车辆绕垂直轴旋转的角速度。单位是 rad/s 或 °/s。
在稳态转弯时,横摆角速度和方向盘转角有一个近似线性关系:
ω_ss = v_x * δ / (L * (1 + K * v_x²))
// 其中 K 为稳定性因数
K = m * (b * C_r - a * C_f) / (L² * C_f * C_r)
实战经验:
- K > 0:不足转向(稳定,家用车)
- K = 0:中性转向(理想,难实现)
- K < 0:过度转向(危险,赛车调校)
嗯,这里要记住:量产车的LKA系统,一定要设计成不足转向特性。为什么?因为安全第一。过度转向的车,普通驾驶员根本救不回来。
3.5 本章小结
这一章的内容,是后续所有控制算法的基础。我建议你:
- 把自行车模型的推导手写一遍
- 用Simulink搭一个二自由度模型,跑几个工况看看
- 找实车数据,对比模型输出和真实响应的差异
下一章,我们会基于这些模型,开始设计LKA的控制器。到时候你会发现,今天打下的基础,会帮你省下大量调试时间。
记住:模型越准,控制越稳。别急着写代码,先把车搞懂。
公众号:蓝海资料掘金营,微信deep3321