2. 车辆动力学模型:单轮模型与运动方程推导
做制动控制,第一步得搞清楚车是怎么动的。你想想看,整车那么复杂,四个轮子、悬架、车身侧倾俯仰……要是全塞进控制器,代码根本跑不过来。
所以工程上有个经典做法——单轮模型。说白了,就是把整车简化为一个轮子加四分之一车重。我当年刚入行时也觉得这太粗糙,后来发现,滑移率估算和制动压力调节的核心逻辑,单轮模型完全够用。
2.1 单轮车辆模型长什么样?
先画个图,帮你建立直观印象。
核心思路: 单轮模型只保留两个自由度——车体平动和车轮转动。所有垂向、侧向、俯仰运动全忽略。
图中几个关键量:车体质量 m、车轮转动惯量 J、轮胎有效滚动半径 R。制动时,制动力矩 Tb 作用在车轮上,地面制动力 Fx 让车减速。
2.2 车辆运动方程(车体平动)
根据牛顿第二定律,车体平动方程很简单:
m · dv/dt = -Fx
这里 v 是车速,Fx 是地面制动力。负号表示制动力让车速下降。
那 Fx 怎么来的?它取决于轮胎与路面的附着系数 μ 和垂向载荷 Fz:
Fx = μ(λ) · Fz
其中 λ 就是滑移率。你看,滑移率通过附着系数 μ 直接影响制动力,进而影响车速——这就是为什么滑移率估算如此重要。
我的经验: 实际项目中,Fz 不是常数。制动时载荷会前移,前轮 Fz 增大,后轮减小。单轮模型里我们暂时忽略这个,但做量产标定时必须补偿。
2.3 车轮旋转动力学方程
车轮转起来,得用转动定律。绕车轮中心的力矩平衡:
J · dω/dt = -Tb + Fx · R
解释一下:
- J · dω/dt —— 车轮角加速度,转动惯量乘角加速度
- -Tb —— 制动力矩,让车轮减速(负号)
- Fx · R —— 地面制动力产生的力矩,让车轮继续转(正号)
制动时,Tb 大于 Fx·R,所以车轮角速度下降。如果 Tb 太大,车轮可能抱死——ω 变成 0,但车还在滑行。
我曾经踩过的坑: 早期做仿真时,我把 J 设成了车轮本身的转动惯量,结果模型响应特别快,跟实车对不上。后来才发现,单轮模型里的 J 应该包含制动盘、半轴等所有旋转部件的等效惯量。差一个数量级都有可能。
2.4 两个方程联立,构成完整模型
把平动和转动方程放一起:
| 物理量 | 方程 | 说明 |
|---|---|---|
| 车体平动 | m · dv/dt = -μ(λ) · Fz | 车速变化由地面制动力决定 |
| 车轮转动 | J · dω/dt = -Tb + μ(λ) · Fz · R | 车轮转速变化由制动力矩和地面力矩共同决定 |
| 滑移率定义 | λ = (v - ω·R) / v | 制动时 0 ≤ λ ≤ 1 |
这三个方程就是单轮模型的全部。你想想看,输入只有 Tb(制动压力调节的输出),状态变量是 v 和 ω,通过滑移率 λ 把两者耦合起来。
2.5 模型怎么用?一个仿真例子
我习惯在 MATLAB/Simulink 里搭这个模型。代码很简单:
% 单轮模型参数
m = 400; % 四分之一车重 [kg]
J = 1.2; % 车轮等效转动惯量 [kg·m²]
R = 0.32; % 轮胎有效滚动半径 [m]
Fz = m * 9.81; % 垂向载荷 [N]
% 初始状态
v0 = 30; % 初始车速 [m/s] ≈ 108 km/h
w0 = v0 / R; % 初始轮速 [rad/s]
% 仿真参数
dt = 0.001; % 步长 1ms
t_end = 3; % 仿真时长 3s
% 制动压力输入(阶跃)
Tb = 1200; % 制动力矩 [Nm]
% 主循环(简化示意)
for k = 1:t_end/dt
% 计算滑移率
lambda = (v - w*R) / max(v, 0.01);
% 查附着系数曲线(魔术公式简化)
mu = mu_lambda(lambda);
% 地面制动力
Fx = mu * Fz;
% 更新车速
v = v - (Fx/m) * dt;
% 更新轮速
w = w + (-Tb + Fx*R)/J * dt;
end
注意: 实际代码里要对 v 做防零处理(max(v, 0.01)),否则滑移率计算会除零。我见过不少新手在这里翻车。
2.6 模型的局限与工程取舍
单轮模型虽然简单,但有几个地方你得心里有数:
- 忽略了载荷转移 —— 制动时前后轮垂向力会变,单轮模型没法体现
- 没有侧向动力学 —— 转弯制动时,侧向力会影响纵向附着
- 轮胎模型简化 —— 实际 μ-λ 曲线受路面、温度、磨损影响很大
但话说回来,做滑移率估算和制动压力调节的算法验证,单轮模型是业界标配。我参与过的三个量产项目,算法前期验证全是用这个模型。等算法成熟了,再往七自由度甚至整车模型里移植。
我的建议: 刚开始做 ABS/ESC 开发的同学,先把单轮模型跑透。你能在这个模型上把滑移率估算、压力调节逻辑调通,后面换复杂模型只是参数调整的问题。