共计 1257 个字符,预计需要花费 4 分钟才能阅读完成。
背景与痛点
低速自动驾驶(如园区接驳、仓储物流等场景)对控制算法提出了特殊要求:

- 路径跟踪精度要求高 :作业区域通常存在狭窄通道(如仓库货架间距离仅 2 - 3 米),横向误差需控制在 10cm 以内
- 系统延迟敏感 :低速场景下车辆惯性小,传统 PID 控制器易产生超调震荡
- 动态障碍物频繁 :需快速响应行人或其他移动障碍物的突然出现
技术选型对比
MPC(模型预测控制)
- 原理 :基于车辆动力学模型滚动优化未来 N 步的控制序列
- 优点 :
- 显式处理系统约束(如转向角限制)
- 天然考虑执行器延迟
- 缺点 :计算复杂度高(需在线求解 QP 问题)
Stanley 方法
- 原理 :通过前轴中心点与参考路径的横向误差计算转向角
- 优点 :
- 参数物理意义明确(仅需调节前视距离)
- 计算效率高(闭合解)
- 缺点 :对曲率突变路径适应性差
Pure Pursuit
- 原理 :基于几何关系计算满足圆弧路径的转向角
- 优点 :
- 实现简单(仅需 5 -10 行代码)
- 对路径噪声不敏感
- 缺点 :速度耦合性强(需动态调整前视距离)
核心实现细节
联合仿真框架搭建
-
Simulink 模型架构 :
graph LR A[CarSim Vehicle Model] --> B[Simulink Controller] B --> C[Control Output] C --> A -
关键配置步骤 :
- CarSim S-Function 接口采样时间设置为 0.01s
- 使用 CarSim RT 模块实现硬件在环(HIL)仿真
- 配置 VS Commander 同步信号
算法实现要点
MPC 实现
function delta = MPC_Controller(x0, refPath)
% 构造 QP 问题
H = blkdiag(Q, R); % Q: 状态权重, R: 控制权重
Aeq = [A, B]; % 线性化后的车辆模型
% 调用 quadprog 求解
options = optimoptions('quadprog','Display','none');
u = quadprog(H,f,[],[],Aeq,beq,[],[],[],options);
delta = u(1); % 取第一个控制量
end
Stanley 方法参数整定
- 前视距离 L 与车速 v 的关系:
$$ L = L_{base} + k \cdot v $$
建议初始值:L_base=3m, k=0.2
性能测试与分析
测试场景设计
| 场景 | 最大曲率 (m^-1) | 目标速度 (m/s) |
|---|---|---|
| 直角弯道 | 0.3 | 2.0 |
| S 形连续弯 | 0.15 | 1.5 |
量化结果对比
| 算法 | 平均横向误差 (m) | 最大 CPU 使用率 (%) |
|---|---|---|
| MPC | 0.08 | 85 |
| Stanley | 0.12 | 15 |
| Pure Pursuit | 0.15 | 10 |
生产环境避坑指南
- 实时性问题 :
- MPC 需进行代码生成(使用 MATLAB Coder)
-
预测时域 N 不宜超过 15(实测 i7 处理器单步计算需 <5ms)
-
参数敏感度 :
- Pure Pursuit 的前视距离建议采用速度自适应调整:
L = max(1.5, min(5, 0.3*v + 1.2));
总结与延伸
对于低速场景推荐方案:
– 精度优先 :选择 MPC(需配备高性能计算单元)
– 成本敏感 :采用 Stanley+ 速度自适应前视距离
未来可探索:
– 融合视觉的曲率预估增强 Pure Pursuit 性能
– 使用深度强化学习优化 MPC 的权重矩阵
正文完
