4. 车辆动力学模型
各位同学,欢迎来到第四讲。今天我们要啃一块硬骨头——车辆动力学模型。说实话,很多做规划控制的同行,最后都栽在了动力学模型的理解上。我个人习惯把这一讲称为“从牛顿到阿克曼的桥梁”。你想想看,如果连车怎么动都描述不清楚,那规划出来的轨迹就是空中楼阁。
4.1 轮胎模型:车与地面的唯一纽带
车辆所有的力,最终都要通过轮胎传递到地面。轮胎模型,说白了就是描述“轮胎能产生多大的力”。
我在项目中遇到过最头疼的问题,就是轮胎模型参数不准导致控制发散。嗯,这里要注意,轮胎模型不是越复杂越好,关键看你的应用场景。
4.1.1 魔术公式轮胎模型
目前工业界最常用的就是Pacejka的魔术公式。为什么叫魔术?因为它用一个公式就能拟合出轮胎在各种工况下的力特性。
# 魔术公式核心表达式
F_y = D * sin(C * arctan(B * α - E * (B * α - arctan(B * α))))
其中:
- B:刚度因子,决定曲线斜率
- C:形状因子,决定曲线形状
- D:峰值因子,决定最大侧向力
- E:曲率因子,决定曲线弯曲程度
- α:轮胎侧偏角
关键认知:轮胎侧向力在侧偏角较小时近似线性,超过5-8度后进入饱和区。这就是为什么控制算法要尽量让轮胎工作在线性区。
4.1.2 线性轮胎模型
对于大多数规划控制场景,我们使用简化后的线性模型:
F_yf = C_f * α_f # 前轮侧向力
F_yr = C_r * α_r # 后轮侧向力
其中C_f和C_r是前后轮的侧偏刚度。我曾经犯过一个错误,直接把前后轮侧偏刚度设成一样,结果仿真和实车对不上。实际上,后轮侧偏刚度通常比前轮大10%-20%。
4.2 质心侧偏角:车辆姿态的核心指标
质心侧偏角β,就是车辆实际运动方向和车头指向之间的夹角。说白了,就是车在“横着滑”的程度。
我的经验:β角超过10度,普通驾驶员就会感到恐慌。所以在规划轨迹时,我会把β角的约束设到8度以内。
质心侧偏角的计算公式:
β = arctan(v_y / v_x)
其中v_y是侧向速度,v_x是纵向速度。在高速时,v_x很大,β通常很小;但在低附着路面(比如雨天),v_y容易变大,β就会显著增加。
4.3 横摆角速度:车辆旋转的“转速表”
横摆角速度γ,描述的是车辆绕垂直轴旋转的快慢。单位是rad/s。你可以把它想象成车辆的“转速表”,只不过转的不是发动机,而是整个车身。
为什么横摆角速度这么重要?因为它是连接方向盘输入和车辆响应的关键桥梁。
# 稳态横摆角速度增益
γ_ss = (v_x / L) * δ_f / (1 + K * v_x²)
# 其中K是稳定性因子
K = (m * (C_r * l_r - C_f * l_f)) / (L² * C_f * C_r)
这里L是轴距,δ_f是前轮转角,m是整车质量,l_f和l_r是质心到前后轴的距离。
避坑指南:我曾经在高速场景下直接用稳态增益计算横摆角速度,结果发现车辆响应滞后严重。后来才意识到,横摆角速度的动态响应时间常数大约在0.1-0.3秒,必须考虑一阶滞后特性。
4.4 动力学方程推导:从牛顿第二定律开始
好了,现在我们把前面讲的轮胎力、质心侧偏角、横摆角速度串起来,推导完整的车辆动力学方程。
4.4.1 基本假设
- 车辆在水平路面行驶,忽略垂向运动
- 前轮转角较小(小于10度),cos(δ)≈1
- 纵向速度v_x恒定或变化缓慢
- 忽略空气阻力和滚动阻力
4.4.2 侧向运动方程
根据牛顿第二定律,车辆侧向的合力等于质量乘以侧向加速度:
m * (v_y_dot + v_x * γ) = F_yf * cos(δ) + F_yr
# 代入线性轮胎模型
m * (v_y_dot + v_x * γ) = C_f * α_f + C_r * α_r
这里v_y_dot是侧向加速度,v_x * γ是向心加速度项。很多初学者会漏掉这一项,导致模型在高动态工况下完全失效。
4.4.3 横摆运动方程
车辆绕质心的转动惯量乘以横摆角加速度,等于所有力矩之和:
I_z * γ_dot = l_f * F_yf * cos(δ) - l_r * F_yr
# 代入轮胎模型
I_z * γ_dot = l_f * C_f * α_f - l_r * C_r * α_r
其中I_z是车辆绕z轴的转动惯量。这个参数我建议不要用估算值,最好从整车参数表中获取,差10%就会影响控制精度。
4.4.4 轮胎侧偏角与状态量的关系
前轮和后轮的侧偏角可以用车辆状态量表示:
α_f = δ_f - (v_y + l_f * γ) / v_x
α_r = - (v_y - l_r * γ) / v_x
注意前轮侧偏角是前轮转角减去速度方向角,后轮没有转角输入。
4.4.5 完整的动力学状态方程
将上述方程整理成状态空间形式:
状态向量: x = [v_y, γ]ᵀ
输入向量: u = [δ_f]
v_y_dot = (C_f + C_r)/(m * v_x) * v_y + (l_f * C_f - l_r * C_r)/(m * v_x) * γ - v_x * γ + C_f/m * δ_f
γ_dot = (l_f * C_f - l_r * C_r)/(I_z * v_x) * v_y + (l_f² * C_f + l_r² * C_r)/(I_z * v_x) * γ + l_f * C_f/I_z * δ_f
核心结论:这个二自由度自行车模型虽然简单,但抓住了车辆横向运动的核心特性。我在实际项目中,80%的规划控制问题都用这个模型解决。只有在极限工况(比如漂移、紧急避障)才需要更复杂的模型。
4.5 知识体系结构图
下面这张图展示了本章的知识脉络,我建议你把它打印出来贴在工位上:
4.6 模型验证与调试建议
推导完方程,怎么验证模型对不对?我分享几个实战经验:
- 稳态验证:给一个固定方向盘转角,看横摆角速度是否收敛到理论稳态值
- 阶跃响应:给一个阶跃方向盘输入,看响应时间常数是否在0.1-0.3秒范围内
- 双移线测试:这是ISO标准测试,能全面检验模型的动态特性
曾经踩过的坑:我在做模型验证时,发现仿真结果和实车数据总是对不上。查了两天才发现,原来是轮胎侧偏刚度参数用的是静态值,而实际轮胎在动态加载时侧偏刚度会变化。后来我改用随载荷变化的侧偏刚度模型,问题就解决了。
好了,这一讲的内容就到这里。车辆动力学模型是规划控制算法的基石,值得你花时间彻底搞懂。记住,模型不是越复杂越好,关键是要抓住主要矛盾,满足你的应用需求。