3. 被控对象建模与实时化准备
实时原型验证的第一步不是写控制器,而是把被控对象——也就是车辆本身——变成一个能在实时目标机上按固定步长稳定运行的模型。车辆动力学模型越精细,物理保真度越高,但计算量也越大;实时性要求则反过来逼迫我们做简化。本节围绕纵向、横向、垂向三个方向的模型简化方法,以及离散化、代数环处理和实时性约束展开,目标是让读者能够独立完成一个"可实时运行"的车辆模型准备流程。
一、三个方向的模型简化思路
纵向动力学关注车速与驱动力/制动力之间的关系。完整模型包含发动机扭矩特性、液力变矩器、变速器、轮胎滑移等环节,实时验证中通常简化为"等效驱动力—阻力—加速度"的一阶模型:
m·dv/dt = F_drive − F_brake − F_roll − F_air − m·g·sin(θ)
F_roll = m·g·f·cos(θ)
F_air = 0.5·ρ·C_d·A·v²
其中 m 为整车质量,f 为滚动阻力系数,C_d·A 为风阻面积,θ 为道路坡度。示例参数可取 m=1600 kg、f=0.012、C_d·A=0.7 m²、ρ=1.225 kg/m³。这一简化保留了车速对驱动力的积分关系,足以支撑纵向速度控制、自适应巡航等算法的验证。
横向动力学常用自行车模型(单轨模型)。完整双轨模型需要四个轮胎的侧偏力,实时验证中通常简化为前后两轮、线性轮胎侧偏假设:
m·(v_y_dot + v_x·r) = F_yf + F_yr
I_z·r_dot = l_f·F_yf − l_r·F_yr
F_yf = C_f·α_f, F_yr = C_r·α_r
α_f = δ − (v_y + l_f·r)/v_x
α_r = −(v_y − l_r·r)/v_x
示例参数可取 l_f=1.2 m、l_r=1.4 m、I_z=2500 kg·m²、C_f=80000 N/rad、C_r=90000 N/rad。线性轮胎假设在侧向加速度小于 0.4g 时误差可接受,超出后需引入非线性侧偏特性或魔术公式。
垂向动力学关注车身垂向、俯仰、侧倾三个自由度。实时验证中若只做平顺性控制,可简化为四分之一车模型(簧上质量、簧下质量、悬架弹簧与阻尼);若做整车姿态控制,则需七自由度模型。简化原则是:只保留与控制器目标直接相关的自由度,其余用等效刚度或阻尼替代。
二、离散化:从连续方程到可执行差分方程
实时目标机以固定步长 T_s 运行,模型必须离散化。最常用的是前向欧拉法,实现简单、计算量小,但要求 T_s 远小于系统最小时间常数。以纵向模型为例,离散化后:
v[k+1] = v[k] + T_s/m · (F_drive[k] − F_brake[k] − F_roll[k] − F_air[k])
若 T_s=1 ms、m=1600 kg,则每毫秒速度增量约为力除以 1.6×10⁶,数值稳定。横向模型状态量 v_y 和 r 的离散化同理,但需注意 A_d 矩阵的特征值是否落在单位圆内。对于刚性较强的垂向模型(悬架频率约 1.5 Hz,簧下质量频率约 12 Hz),前向欧拉在 T_s=1 ms 下仍稳定,但若 T_s 增大到 5 ms,簧下质量模态可能发散,此时应改用梯形法或 RK4。
离散化后应检查两点:一是 A_d 的谱半径小于 1;二是离散模型在典型输入下的响应与连续模型偏差在可接受范围内。可用阶跃输入对比连续与离散的速度响应,若 1 s 内偏差超过 2%,应减小步长或换用更高阶离散方法。
三、代数环:实时模型中最隐蔽的陷阱
代数环指模型中存在不经过任何状态变量的直接反馈回路。例如,轮胎侧偏力依赖侧偏角,侧偏角又依赖侧向速度,而侧向速度的导数依赖侧偏力——若在离散实现中把同一时刻的力与角直接互算,就形成代数环。实时系统中代数环会导致求解器无法在单步内完成计算,或产生数值振荡。
三种常用处理方式:第一,在反馈路径插入单位延迟 z⁻¹,把代数环打断为状态更新,代价是引入一步延迟,T_s=1 ms 时对控制影响通常可忽略;第二,对代数环内方程做解析求解,把隐式关系显式化,例如把 F_y 代入运动方程后直接解出 v_y_dot;第三,重构状态空间,把引起代数环的变量提升为状态量。实际工程中优先用单位延迟,因其改动最小、最易在 Simulink 中实现。
四、实时性约束与模型裁剪
实时性约束的核心是:单步计算时间必须小于 T_s,且留有余量。工程经验是计算时间不超过 T_s 的 50%~60%。以 T_s=1 ms 为例,单步预算约 600 μs。若模型包含大量非线性查表、迭代求解或高维矩阵运算,很容易超限。
裁剪策略按优先级排列:第一,去掉与控制器目标无关的自由度,例如只做横向控制时可冻结垂向模型;第二,把高频动态用准静态关系替代,例如轮胎松弛长度用一阶滞后近似而非完整动态;第三,把查表数据降采样或改用多项式拟合;第四,把模型拆分为快慢两部分,快部分以 T_s 运行,慢部分以 5T_s 或 10T_s 运行。
下表给出一组示例性的实时性预算参考,实际数值需在目标机上实测:
| 模型部分 | 状态量数 | 典型单步耗时(示例) | 建议步长 |
|---|---|---|---|
| 纵向一阶模型 | 1 | 约 5 μs | 1 ms |
| 横向自行车模型 | 2 | 约 15 μs | 1 ms |
| 四分之一车垂向模型 | 4 | 约 25 μs | 1 ms |
| 七自由度整车模型 | 14 | 约 120 μs | 1 ms 或 2 ms |
完成简化、离散化和代数环处理后,应做一次"开环实时性验证":给模型施加已知的驱动力、转向角和路面输入,在目标机上运行 10 s,记录 CPU 占用、最大单步耗时和关键状态量曲线。若最大单步耗时低于预算的 60%,且状态量无异常跳变,则模型具备进入闭环验证的条件。否则应回到裁剪步骤,优先降低模型阶数或增大步长。