基于LQR算法跟踪圆形轨迹,MATLAB 代码

编程入门 行业动态 更新时间:2024-10-13 04:24:27

基于LQR算法跟踪<a href=https://www.elefans.com/category/jswz/34/1769013.html style=圆形轨迹,MATLAB 代码"/>

基于LQR算法跟踪圆形轨迹,MATLAB 代码

希望做一个分享者

轨迹跟踪效果图

位姿误差图

 

参考博文

LQR 的直观推导及简单应用_白巧克力亦唯心的博客-CSDN博客_lqr算法

关键词:泰勒展开;黎卡提方程求解;状态反馈


clear all;
close all;
clc;%% 参数
ts=0.1;
t=30;
d=1.45;%% 初始状态
x(1)=0;
y(1)=0;
xita(1)=0;
v=3;
w=0.2;
u=[v;w];
Z(:,1)=[-3;-3;0.2];
for k=1:1:t/tstimes(k+1)=k*ts;X(:,k)=[cos(xita(k)) -d*sin(xita(k));sin(xita(k)) d*cos(xita(k));0 1]*u;%% 状态更新x(k+1)=x(k)+X(1,k)*ts;y(k+1)=y(k)+X(2,k)*ts;xita(k+1)=xita(k)+X(3,k)*ts;A=[0 0 -v*sin(xita(k))-d*w*cos(xita(k));0 0 v*cos(xita(k))-d*w*sin(xita(k));0 0 0];B=[cos(xita(k)) -d*sin(xita(k));sin(xita(k)) d*cos(xita(k));0 1];Q=[2 0 0;0 2 0;0 0 2];R=[1 0; 0 1];K=lqr(A,B,Q,R);Z_=(A-B*K)*Z(:,k);%每秒变化率Z(:,k+1)=Z(:,k)+Z_*ts;%每步变化率xc(k)=Z(1,k)+x(k);yc(k)=Z(2,k)+y(k);
endfigure(1)
for k=1:1:length(xc)
plot(x,y,'r','Linewidth',2);
hold on;
plot(xc(k),yc(k),'sb','MarkerSize',10);
pause(0.1);
end
figure(2)
plot(times,Z(1,:),'r');
figure(3)
plot(times,Z(2,:),'r');
figure(4);
plot(times,Z(3,:),'r');

更多推荐

基于LQR算法跟踪圆形轨迹,MATLAB 代码

本文发布于:2024-02-06 02:39:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1745768.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:圆形   算法   轨迹   代码   LQR

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!