自动驾驶控制 - 基于运动学模型的LQR算法路径跟踪仿真
自动驾驶控制-基于运动学模型的LQR算法路径跟踪仿真 matlab和simulink联合仿真运动学模型实现的lqr横向控制可以跟踪双移线五次多项式以及其他各种自定义路径。 效果如图几乎0误差双移线路径误差在0.05m以内。最近玩了玩自动驾驶控制里基于运动学模型的LQR算法路径跟踪仿真感觉超有意思。先说说这个仿真用到了Matlab和Simulink联合仿真。在运动学模型实现的LQR横向控制这块真的能实现跟踪好多不同的路径呢像双移线、五次多项式还有各种自定义路径。代码分析咱就拿实现LQR横向控制来说吧。假设我们有个简单的车辆运动学模型大概长这样% 车辆运动学模型参数 L 2; % 轴距 dt 0.1; % 时间步长 % 状态空间定义 x [y; theta; v]; % y是横向位置theta是航向角v是纵向速度 u [delta]; % delta是转向角 % 状态转移矩阵 A [0 0 0; 0 0 0; 0 0 0]; % 输入矩阵 B [0; 0; L/dt]; % 离散化 Ad expm(A*dt); Bd Ad*B;这里定义了车辆的状态和输入然后通过状态转移矩阵和输入矩阵来描述车辆的运动特性再对其进行离散化处理。接着就是LQR控制器的设计啦% Q和R矩阵 Q [10 0 0; 0 10 0; 0 0 1]; R [1]; % 求解LQR增益 [K, S, E] lqr(Ad, Bd, Q, R);通过设置Q和R矩阵来调整控制器的性能然后求解得到LQR增益K。在Simulink里搭建模型就更直观啦。我们可以把车辆模型、路径模型还有LQR控制器连接起来。自动驾驶控制-基于运动学模型的LQR算法路径跟踪仿真 matlab和simulink联合仿真运动学模型实现的lqr横向控制可以跟踪双移线五次多项式以及其他各种自定义路径。 效果如图几乎0误差双移线路径误差在0.05m以内。比如在Simulink中有个“Integrator”模块用来对状态进行积分% 在Simulink中使用Integrator模块对状态进行积分 % 输入为当前状态x输出为下一时刻状态x_next x_next Ad * x Bd * u;这样就能实时更新车辆的状态啦。再看看跟踪路径的效果简直绝了几乎0误差双移线路径误差在0.05m以内。这整个过程真的让我对自动驾驶控制有了更深的理解感觉离真正的自动驾驶又近了一步。大家要是对这个感兴趣也可以自己动手试试呀#自动驾驶 #LQR算法 #路径跟踪 #Matlab #Simulink
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2496893.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!