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

该博客文章详细介绍了线性二次调节器(LQR)的直观推导及其在轨迹跟踪问题中的应用。通过MATLAB代码展示了如何利用LQR算法进行状态反馈控制,以减少位姿误差并实现系统的最优控制。泰勒展开和黎卡提方程在求解过程中起关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

希望做一个分享者

轨迹跟踪效果图

位姿误差图

 

参考博文

LQR 的直观推导及简单应用_白巧克力亦唯心的博客-优快云博客_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/ts
    times(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);
end


figure(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');

内容概要:本文深入探讨了无人机轨迹跟踪控制中常用的三种控制算法——PID、线性二次型调节器(LQR)和模型预测控制(MPC)。首先介绍了每种算法的基本原理及其优缺点,随后展示了具体的Matlab仿真实现代码。PID算法因其简单易用而广泛应用于各类控制系统,但在复杂非线性系统的应对能力有限;LQR通过求解最优反馈增益矩阵实现系统性能最优化,适用于线性系统,但对模型精度要求较高;MPC则利用预测模型对未来状态进行优化,能够处理复杂的约束条件,但计算量较大。文中不仅提供了详细的代码示例,还比较了不同算法圆形轨迹、直线加速等多种情况下的性能表现,如超调量、稳态误差和CPU占用率等。 适合人群:对无人机控制感兴趣的研究人员和技术爱好者,尤其是有一定Matlab基础并希望深入了解控制算法原理的人群。 使用场景及目标:帮助读者理解PID、LQR和MPC三种控制算法的工作机制,掌握其在Matlab环境下的具体实现方法,从而为实际项目提供理论支持和技术指导。同时,通过对不同算法性能的对比分析,辅助选择最适合特定应用场景的控制策略。 其他说明:文章附带了丰富的参考资料,包括书籍、文献和GitHub仓库链接,方便读者进一步学习和实践。此外,特别强调了从仿真到实际应用过程中需要注意的问题,如参数调整和硬件适配等。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值