1. 项目背景与核心思路
在智能驾驶和车辆控制领域,车速控制是一个看似基础但极具挑战性的问题。传统PID控制器在面对复杂路况、车辆非线性特性和外部扰动时往往表现不佳。我们团队尝试将模型预测控制(MPC)与自抗扰控制(ADRC)相结合,构建了一个分层控制系统:上层MPC负责全局优化,下层ADRC处理实时扰动。这种架构在仿真和实车测试中都展现出了优于传统方法的控制效果。
这个方案的独特之处在于充分发挥了两种控制方法的优势:MPC的前瞻性优化能力与ADRC的强抗扰特性。当车辆遇到坡度变化、风阻扰动或载荷变动时,系统能够快速响应并保持车速稳定。特别是在高速巡航和启停频繁的城市工况下,控制误差可以控制在±0.5km/h以内。
2. 系统架构设计
2.1 整体控制框架
系统采用典型的分层结构:
code复制[MPC优化层] → [ADRC执行层] → [车辆动力学模型]
↑ ↑
[参考车速] [状态反馈]
上层MPC控制器以0.1秒为周期进行滚动优化,基于车辆动力学模型预测未来3秒内的状态变化,计算出最优加速度指令。下层ADRC控制器以0.01秒为周期工作,将加速度指令转化为油门/制动信号,同时补偿各类扰动。
2.2 车辆动力学建模
建立准确的纵向动力学模型是MPC设计的基础。我们采用简化模型:
code复制m·a = F_traction - F_brake - F_roll - F_aero - F_grade
其中:
- F_roll = μ·m·g·cosθ(滚动阻力)
- F_aero = 0.5·ρ·C_d·A·v²(空气阻力)
- F_grade = m·g·sinθ(坡度阻力)
提示:实际项目中需要通过台架试验辨识具体参数,特别是滚动阻力系数μ和风阻系数C_d,不同车型差异较大。
3. MPC控制器实现
3.1 预测模型离散化
将连续时间模型离散化为状态空间形式:
code复制x(k+1) = A·x(k) + B·u(k)
y(k) = C·x(k)
状态变量x选择为[v, a]ᵀ(速度和加速度),控制输入u为加速度指令。
3.2 代价函数设计
MPC的核心是优化问题的构建。我们设计的代价函数包含三个部分:
python复制J = Σ(α·(v_ref - v)² + β·Δa² + γ·jerk²)
其中:
- 第一项保证速度跟踪精度
- 第二项平滑加速度变化
- 第三项抑制急动度(jerk)提升舒适性
权重系数需要根据车型调整:
- 轿车:α=1.0, β=0.1, γ=0.05
- 卡车:α=1.0, β=0.3, γ=0.2(更注重平顺性)
3.3 约束条件处理
实际车辆存在物理限制,需要在优化中加入约束:
code复制a_min ≤ a ≤ a_max (加速度限制)
Δa_min ≤ Δa ≤ Δa_max (变化率限制)
注意:电动汽车的最大减速能力通常强于传统燃油车,约束值需要根据具体动力系统设定。
4. ADRC控制器设计
4.1 基本结构
ADRC由三部分组成:
- 跟踪微分器(TD):安排过渡过程
- 扩张状态观测器(ESO):估计总扰动
- 非线性状态误差反馈(NLSEF):生成控制量
4.2 ESO实现
二阶ESO设计:
code复制ẋ1 = x2 + β1·e
ẋ2 = x3 + β2·fal(e,α,δ) + b·u
ẋ3 = β3·fal(e,α,δ)
其中x3估计总扰动,fal()是非线性函数:
code复制fal(e,α,δ) = { |e|^α·sign(e), |e|>δ
{ e/δ^(1-α), |e|≤δ
参数整定经验:
- β1=100, β2=300, β3=1000(初始值)
- α=0.5, δ=0.1
- b为控制增益,需通过实验标定
4.3 扰动补偿
ADRC的核心优势在于实时扰动估计和补偿:
code复制u = (u0 - x3)/b
其中u0是MPC给出的加速度指令,x3是ESO估计的总扰动。
5. 系统集成与调试
5.1 采样周期协调
关键时间参数设置:
- MPC周期:100ms(兼顾计算负荷和前瞻性)
- ADRC周期:10ms(快速抑制扰动)
- CAN通信周期:20ms(与整车总线同步)
实测发现MPC周期超过200ms会导致控制性能明显下降。
5.2 接口设计
MPC与ADRC间的数据交互:
c复制struct ControlCmd {
float target_acc; // 目标加速度 [m/s²]
float acc_limit; // 当前允许的最大加速度 [m/s²]
uint8_t priority; // 指令优先级
};
5.3 抗饱和处理
当ADRC发现执行机构接近饱和时:
- 向上层MPC反馈饱和状态
- MPC调整优化问题的约束条件
- 触发紧急降级策略(如逐步降低目标车速)
6. 实测效果与调优
6.1 典型工况测试
| 工况 | 最大误差(km/h) | 稳态误差(km/h) |
|---|---|---|
| 平路巡航 | 0.8 | 0.2 |
| 5%上坡 | 1.2 | 0.5 |
| 紧急制动 | 2.5 | - |
| 拥堵跟车 | 1.5 | 0.3 |
6.2 参数整定技巧
-
先调ADRC确保扰动抑制能力:
- 从ESO带宽开始(β系列参数)
- 再调NLSEF非线性参数(α,δ)
-
后调MPC优化权重:
- 先保证速度跟踪(增大α)
- 再优化舒适性(调整β,γ)
-
最后协调两层控制:
- MPC输出限幅与ADRC能力匹配
- 检查控制量平滑过渡
7. 常见问题排查
7.1 车速波动大
可能原因:
- ESO带宽不足(增大β参数)
- 执行机构延迟(检查CAN通信周期)
- 车辆参数不准确(重新标定质量、风阻等)
7.2 响应迟缓
检查点:
- MPC预测时域是否过短(建议3-5秒)
- ADRC的fal()函数δ值是否过大
- 控制量输出是否被限幅过度
7.3 特殊工况处理
长下坡控制策略:
- 预测坡度变化提前切入发动机制动
- 调整MPC代价函数权重(降低加速度惩罚)
- 激活ADRC的特殊扰动观测模式
8. 工程实现建议
-
安全冗余设计:
- MPC求解失败时切换至备用PID
- 增加输出变化率监控
- 设置硬件看门狗
-
计算优化技巧:
- MPC使用热启动(复用上周期解)
- ESO采用定点数运算(节省资源)
- 预计算车辆参数相关项
-
标定流程:
- 先台架后实车
- 从简单工况到复杂工况
- 记录完整调试日志
这个方案在三个车型平台上完成了验证,相比传统PID控制,在综合工况下燃油经济性提升3-5%,乘坐舒适性评分提高20%以上。特别是在应对突发扰动时,车速恢复时间缩短了60%,展现了良好的工程应用价值。