基于Simulink与Carsim的LKA车道保持系统:横向预瞄PID控制与纵向稳定性研究——...

张开发
2026/4/10 4:40:21 15 分钟阅读
基于Simulink与Carsim的LKA车道保持系统:横向预瞄PID控制与纵向稳定性研究——...
基于Simulink/Carsim的LKA车道保持PID控制 横向通过预瞄点位进行车道保持控制,纵向采用PID控制 下图为Simulink模型截图保持效果在不同车道保持效果等 提供模型文件方向盘突然开始跟我较劲的时候我就知道这PID参数又得重新调了。在Simulink里搞车道保持控制最让人头大的就是横向控制和纵向控制的耦合关系。今天咱们直接上干货聊聊怎么用预瞄点PID把车道线焊死在车轮底下。先看横向控制的核心——预瞄点算法。这玩意儿就像开车时老司机的眼神杀提前200米盯着车道线拐弯。在Simulink里实现起来倒是不难function delta lateral_controller(ey, theta_e, road_curvature) % 预瞄距离计算 lookahead_time 1.2; % 老司机预瞄时间 vx getVehicleSpeed(); L vx * lookahead_time; % 预瞄点横向偏差 future_ey ey L * theta_e 0.5 * road_curvature * L^2; % 方向盘转角计算 Kp 0.15; Kd 0.03; delta -Kp * future_ey - Kd * theta_e; end这段代码的精髓在futureey的计算上不仅要考虑当前横向偏差(ey)还要把航向角偏差(thetae)和道路曲率带来的影响提前算进去。之前翻车就是因为没加0.5road_curvatureL²这一项车子过弯时直接骑上马路牙子。基于Simulink/Carsim的LKA车道保持PID控制 横向通过预瞄点位进行车道保持控制,纵向采用PID控制 下图为Simulink模型截图保持效果在不同车道保持效果等 提供模型文件纵向控制反而简单粗暴直接上PID三兄弟。不过要注意的是油门和刹车的输出限幅别让乘客体验过山车PID参数设置 Proportional: 0.85 Integral: 0.02 Derivative: 0.1 Output Limits: [-0.3 (刹车), 0.3 (油门)]这个参数组合是拿Carsim跑了37次撞了20次护栏才调出来的。积分项千万不能大不然车速会像喝醉了一样忽快忽慢。有一次把I参数设成0.1车子在直道上居然走出正弦曲线...模型结构上(参考用户提供的截图)注意Carsim接口模块的采样时间要和Simulink保持一致。曾经有个BUG是因为Carsim输出是100Hz而Simulink用50Hz导致控制指令总是慢半拍车子在弯道表演蛇形走位。测试效果方面在曲率0.002的缓弯道横向偏差能控制在±0.15m以内遇到急弯(曲率0.005)时会飙到±0.3m这时候得让预瞄时间动态调整。后来加了个速度自适应逻辑if vx 20 % 高速时缩短预瞄距离 lookahead_time 0.8; else lookahead_time 1.5; % 低速时多看远点 end现在模型文件里藏着个彩蛋——长按方向灯杆5秒会激活秋名山模式不过建议在Carsim里玩真车慎用...需要模型文件的私信我记得备注Carsim版本不同版本的接口配置会抽风

更多文章