1. 项目概述
这个项目实现了一套完整的自动驾驶车辆运动控制系统,包含两大核心模块:基于Lattice采样算法的路径规划器,以及基于模型预测控制(MPC)的轨迹跟踪控制器。系统在Simulink环境中搭建,通过Carsim进行车辆动力学仿真验证,最终实现了在复杂路况下厘米级精度的轨迹跟踪能力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案选型
2.1 Lattice规划算法优势
选择Lattice算法主要基于三个考量:
- 结构化道路适应性:Frenet坐标系天然适配车道保持场景,将复杂的二维规划问题解耦为横向/纵向两个一维问题
- 运动平滑性保障:五次多项式轨迹保证三阶导数(加加速度)连续,避免方向盘抖动
- 实时性能:采样+筛选的机制在10ms内可生成数十条候选轨迹
2.2 MPC控制器特点
相比PID控制,MPC的核心优势在于:
- 预测能力:基于车辆动力学模型提前计算未来多步控制量
- 约束处理:显式考虑转向角速率、加速度等物理限制
- 多目标优化:通过权重矩阵平衡跟踪精度与乘坐舒适性
3. 系统实现细节
3.1 Lattice规划器实现
3.1.1 横向轨迹生成
python复制# 横向五次多项式参数计算
def quintic_poly(lateral_params, t):
a0, a1, a2, a3, a4, a5 = lateral_params
return a0 + a1*t + a2*t**2 + a3*t**3 + a4*t**4 + a5*t**5
# 轨迹采样逻辑
for d in np.linspace(-1.5, 1.5, 11): # 车道宽度3米范围
for T in [2.5, 3.0, 4.0]: # 不同执行时间
lat_traj = QuinticPolynomial(
current_d, current_dd, current_ddd, # 当前横向状态
d, 0, 0, T) # 目标状态
cost = 0.7*lat_jerk + 0.3*lat_offset # 加权成本函数
3.1.2 纵向速度规划
采用S曲线速度规划策略:
- 将路径离散化为50cm间隔的路点
- 每个路点关联最大允许速度(考虑曲率半径)
- 使用三次样条插值生成连续速度剖面
3.2 MPC控制器设计
3.2.1 预测模型
建立3自由度车辆动力学模型:
code复制dx/dt = v*cos(θ + β)
dy/dt = v*sin(θ + β)
dθ/dt = v/l_r*sin(β)
β = arctan(l_r/(l_f+l_r)*tan(δ))
其中l_f=1.2m、l_r=1.5m为轴距参数
3.2.2 优化问题构建
matlab复制% 权重矩阵设置
Q = diag([15, 10, 5]); % 横向误差、航向误差、速度误差
R = diag([0.1, 0.2]); % 转向角、加速度
% 约束条件
delta_max = deg2rad(30); % 最大转向角
delta_rate_max = deg2rad(15); % 转向速率限制
a_max = 3.0; % 最大加速度(m/s^2)
3.3 联合仿真配置
3.3.1 Simulink-Carsim接口
- 通信频率:20Hz CAN协议
- 信号映射:
- 输出:转向角(0~±780deg)、油门/刹车(0~100%)
- 输入:车辆位置、航向角、速度
3.3.2 求解器设置
- 仿真步长:0.02s
- 积分方法:4阶Runge-Kutta
- 实时性保障:启用Fixed-step模式
4. 性能优化技巧
4.1 计算加速方案
- 轨迹采样优化:
- 横向采样点从15个减至11个
- 时间周期只保留3个典型值
- MPC简化策略:
- 预测时域前5步用完整模型
- 后续步长采用线性化近似
4.2 控制平滑性处理
- 转向角速率限制:
matlab复制% Simulink中的软限幅实现 function delta = steeringLimiter(u) persistent last_delta; delta_rate = (u - last_delta)/0.05; % 20Hz对应0.05s delta_rate = min(max(delta_rate, -15), 15); % deg/s last_delta = last_delta + delta_rate*0.05; end - 加速度滤波:
- 采用二阶Butterworth低通滤波器
- 截止频率2Hz
5. 实测效果分析
5.1 典型场景表现
| 场景类型 | 横向误差(m) | 速度跟踪延迟(s) | 最大转向角(deg) |
|---|---|---|---|
| 直线加速 | <0.1 | 0.2 | 5.3 |
| 90度直角弯 | 0.25 | 0.5 | 23.7 |
| S型连续弯道 | 0.18 | 0.3 | 19.2 |
| 坡道行驶 | 0.12 | 1.2 | 8.5 |
5.2 计算耗时统计
- Lattice规划:平均8.7ms(最长12.3ms)
- MPC求解:平均18.2ms(最长35ms)
- 总周期:保证在50ms内完成
6. 工程经验总结
-
参数调试心得:
- MPC权重系数需要road test校准:先调Q矩阵保证跟踪精度,再调R矩阵优化控制平滑性
- 转向传动比建议设置在1:16到1:20之间
-
仿真技巧:
- Carsim的Solver选"Stiff"模式可避免数值发散
- 仿真步长0.02s是精度和效率的最佳平衡点
-
常见问题排查:
- 出现轨迹抖动:检查五次多项式是否满足边界条件
- MPC求解失败:确认约束条件是否冲突
- 车辆跑偏:检查Carsim轮胎模型参数
这套系统经过超过200公里的虚拟测试里程验证,在ISO-3888-2标准双移线测试中达到横向偏差<0.3m的优秀表现。实际部署时需要注意CAN通信的实时性保障,建议采用CAN FD协议提升数据传输速率。
