自动驾驶控制-PIDLQR控制路径跟踪仿真 Simulink和Carsim联合仿真,横向控制...
自动驾驶控制-PIDLQR控制路径跟踪仿真 Simulink和Carsim联合仿真横向控制为前馈反馈lqr纵向为位置-速度双PID控制 对于减小误差可以联合后轮转向/四轮转向算法小店中有 下图为Simulink模型截图跟踪效果误差等 提供模型文件包含最近在搞自动驾驶路径跟踪的仿真发现PID和LQR这两个经典算法凑在一起能玩出不少花样。先上个仿真效果镇楼图1横向误差控制在0.2米以内这成绩在城区跟车场景够用了。下面直接掏干货说说怎么用Simulink和Carsim搭这个控制框架。!仿真模型结构图1 联合仿真模型结构纵向控制双PID套娃搞过油门刹车的都知道直接拿位置误差调PID准翻车。这里用了位置-速度双环结构外层PID输出目标速度内层PID控制实际速度。举个参数设置的代码片段% 外层位置PID Kp_pos 1.2; Ki_pos 0.05; % 内层速度PID Kp_vel 0.8; Ki_vel 0.2;这么干的好处是刹车时不会点头实测车速在60km/h急刹到停减速度能稳定在3.5m/s²左右。不过调参真是个体力活建议先把速度环调顺了再搞位置环。横向控制LQR是个技术活前馈反馈的组合拳比纯LQR香太多了。前馈负责搞定道路曲率LQR处理动态误差。这里用二自由度单车模型状态量选横向误差和航向角误差。核心代码就这几行A [0, 车速; 0, 0]; % 状态矩阵 B [0; 车速/轴距]; % 控制矩阵 Q diag([10, 1]); % 状态权重 R 0.1; % 控制权重 K lqr(A, B, Q, R); % 求解增益矩阵注意Q矩阵的第一项权重给高点毕竟横向误差是重点关照对象。实际跑起来发现车速超过80km/h时前馈补偿量得额外乘个0.8的系数不然方向盘会抖。自动驾驶控制-PIDLQR控制路径跟踪仿真 Simulink和Carsim联合仿真横向控制为前馈反馈lqr纵向为位置-速度双PID控制 对于减小误差可以联合后轮转向/四轮转向算法小店中有 下图为Simulink模型截图跟踪效果误差等 提供模型文件包含四轮转向的骚操作单纯用前轮转向高速过弯时后轮容易划水。后轮加个同向转角代码里改个转向比参数的事横向加速度能降20%。举个后轮转角计算片段delta_rear 0.3 * delta_front; // 后轮转向比 if车速 60 delta_rear * -1; // 高速时反向转向 end这么一搞实测在90km/h变道时侧向位移超调量减少40%。具体实现方法在模型文件的Steering_Module子模块里藏着需要模型的文末自取。误差分析踩坑实录图2的误差曲线看着美好其实前期调试时没少翻车。最坑的是Carsim和Simulink的坐标系转换——X轴方向差90度这事让我白调了两天参数。还有个隐蔽bug方向盘转角单位默认是度但LQR输出是弧度记得在接口模块里加个deg2rad转换。!路径跟踪效果图2 实际跟踪效果整套模型包含23个子系统从传感器融合到执行器控制全链条打通。建议先跑高速公路场景scenariohighway.slx再试连续S弯scenarios_curve.slx。需要模型文件的朋友评论区留言注意Carsim需要2019以上版本Matlab建议用2021b。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2477014.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!