尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

自动驾驶横向控制:PID与LQR算法对比仿真实践

自动驾驶横向控制:PID与LQR算法对比仿真实践 1. 自动驾驶横向控制技术概述在自动驾驶系统开发中横向控制Lateral Control是确保车辆准确跟踪规划路径的核心技术模块。这个Simulink和Carsim联合仿真项目聚焦于两种经典控制算法——PID和LQR在路径跟踪场景中的对比实现。作为从业多年的自动驾驶系统工程师我经常需要在实际项目中对不同控制策略进行快速验证这种联合仿真环境能有效缩短开发周期。横向控制的核心任务是计算方向盘转角指令使车辆实际行驶轨迹与参考路径的横向偏差最小化。在高速公路辅助驾驶HWA和自动泊车APA等典型场景中横向控制精度直接影响系统安全性和乘坐舒适度。通过这个仿真项目我们可以直观比较PID和LQR两种算法在阶跃响应、抗干扰性等方面的表现差异。2. 仿真环境搭建与工具链配置2.1 Carsim车辆模型参数设置Carsim作为行业标准的车辆动力学仿真工具需要首先配置符合被测车辆的参数。对于横向控制仿真关键参数包括整车质量1550kg含驾驶员轴距2.7m前轮侧偏刚度-60000N/rad后轮侧偏刚度-55000N/rad转向系统传动比16:1注意侧偏刚度负值表示轮胎力与侧偏角方向相反这是车辆动力学建模的常规表示方法。实际值需通过轮胎试验数据拟合获得。2.2 Simulink控制模块接口设计Simulink中需要建立与Carsim的实时数据交换接口主要信号包括% 输入信号来自Carsim VehicleStates struct(X,0,Y,0,Yaw,0,vx,0,vy,0); PathInfo struct(RefX,0,RefY,0,RefCurvature,0); % 输出信号发送至Carsim ControlCmd struct(SteerAngle,0,BrakePressure,0);接口模块采样时间建议设置为10ms与常见自动驾驶控制器的运算周期保持一致。在模型配置中需启用固定步长求解器Fixed-step solver步长设置为0.01秒。3. PID控制器实现与调参3.1 横向偏差计算模型路径跟踪的核心是横向偏差Lateral Error的计算。我们采用Frenet坐标系下的投影法查找车辆当前位置在参考路径上的最近点计算车辆重心到参考路径的垂直距离e计算航向角偏差Δψfunction [e, delta_psi] calcLateralError(x, y, yaw, refPath) [~,idx] min((refPath.x - x).^2 (refPath.y - y).^2); tangent atan2(refPath.y(idx1)-refPath.y(idx), refPath.x(idx1)-refPath.x(idx)); e -(x - refPath.x(idx)) * sin(tangent) (y - refPath.y(idx)) * cos(tangent); delta_psi yaw - tangent; end3.2 PID控制器结构设计采用串级PID结构外环控制横向偏差内环控制航向角偏差外环PID(e) → 内环PID(Δψ) → 前馈补偿 → 最终转向角前馈补偿项用于抵消路径曲率的影响feedforward L * curvature * (1 K * vx^2);其中L为轴距K为不足转向梯度。3.3 参数整定经验分享通过试凑法整定PID参数的实用步骤先设所有参数为0逐步增大P直到出现持续振荡记录临界增益Ku和振荡周期Tu根据Ziegler-Nichols规则Kp 0.6KuKi 1.2Ku/TuKd 0.075KuTu实测中发现对于横向控制微分项对抑制超调效果显著但需注意微分增益过大会放大噪声建议添加一阶低通滤波截止频率设为10Hz左右4. LQR控制器设计与实现4.1 车辆横向动力学建模采用经典的二自由度自行车模型状态方程 ẋ Ax Bu y Cx Du 状态变量 x [e; e; Δψ; Δψ] 控制输入 u 前轮转角状态空间矩阵推导过程A [0 1 0 0; 0 -(CfCr)/(m*vx) (CfCr)/m (-a*Cfb*Cr)/(m*vx); 0 0 0 1; 0 (-a*Cfb*Cr)/(Iz*vx) (a*Cf-b*Cr)/Iz -(a^2*Cfb^2*Cr)/(Iz*vx)]; B [0; Cf/m; 0; a*Cf/Iz];4.2 权重矩阵Q和R的选择LQR性能取决于状态权重Q和控制权重R的比值。经过多次仿真验证推荐初始设置Q diag([10, 1, 5, 0.1]); % 重点跟踪横向偏差和航向角 R 0.1; % 限制转向幅度调试技巧先保持R不变按比例调整Q中各元素观察各状态量的收敛速度是否均衡若出现高频振荡适当增大R值4.3 求解Riccati方程Matlab中直接使用lqr函数求解[K, S, e] lqr(A, B, Q, R);实际工程中需要考虑的参数变化车速vx变化时需重新计算A矩阵可预先计算不同车速下的K矩阵运行时查表插值5. 联合仿真与结果分析5.1 双移线工况测试设置80km/h车速下的ISO双移线路径对比两种控制器表现指标PID控制LQR控制最大横向误差0.32m0.18mRMS误差0.12m0.08m转向角变化率35deg/s28deg/s计算耗时0.2ms1.5msLQR在控制精度上表现更优但计算量较大。PID的实时性更好适合算力有限的ECU。5.2 抗干扰性测试在3秒时施加0.5m的横向阶跃干扰PID约2秒恢复稳定存在约10%的超调LQR约1.5秒恢复无明显超调实际项目中建议结合两者优势LQR作上层决策PID作底层执行6. 工程实践中的问题排查6.1 Carsim-Simulink通信延迟症状控制指令与车辆响应存在明显滞后 解决方法检查Carsim的仿真步长是否与Simulink一致在Simulink中添加Transport Delay模块进行补偿验证接口变量的单位是否匹配弧度/度转换常见问题6.2 路径曲率不连续症状在路径转折点出现控制振荡 改进措施对参考路径进行B样条平滑处理在控制算法中添加曲率变化率限制适当降低控制器的响应带宽6.3 高速工况失稳当车速超过100km/h时可能出现发散检查轮胎模型是否包含高速特性在LQR设计中增加车速自适应模块添加前馈补偿项的速敏增益7. 进阶优化方向对于追求更高性能的开发者可以考虑模型预测控制MPC实现考虑轮胎非线性特性的扩展卡尔曼滤波基于深度学习的参数自适应调整多目标优化下的权重矩阵自动整定在模型复杂度与实时性之间需要谨慎权衡。经过多个量产项目验证本文介绍的PIDLQR组合方案能满足L2级自动驾驶的横向控制需求平均横向误差可控制在0.2m以内。
返回列表