【轨迹跟踪】LQR无人机轨迹跟踪【含Matlab源码 3501期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、模型预测控制MPC无人驾驶车辆轨迹跟踪简介

1 模型预测控制原理
模型预测控制(MPC)的最核心思想就是利用三维的空间模型加上时间构成四维时空模型,然后在这个时空模型的基础上,求解最优控制器。MPC控制器基于一段时间的时空模型,因此得到的控制输出也是系统在未来有限时间步的控制序列。 由于,理论构建的模型与系统真实模型都有误差;从而,更远未来的控制输出对系统控制的价值很低,MPC仅执行输出序列的中第一个控制输出。模型预测控制(以下简称 MPC)是一种依赖于系统模型进行数学优化的复杂控制器。它利用优化算法计算有限时间范围内一系列的控制输入序列,并优化该序列,但控制器仅执行序列中的第一组控制输入,然后再次重复该循环。MPC 主要分为 3 个关键步骤:模型预测、滚动优化、反馈校正。

2 MPC在轨迹跟踪过程中的应用
在轨迹跟踪应用领域,通常 MPC 建模可根据机器人的控制方式选择基于运动学运动状态方程建模或者基于动力学运动状态方程建模。前者是根据车辆转向的几何学角度关系和速度位置关系来建立描述车辆的运动的预测模型,一般只适用于低速运动场景;后者是对被控对象进行综合受力分析,从受力平衡的角度建模,一般应用在高速运动场景,如汽车无人驾驶。本文基于双轮差速运动学模型,推导实现差速运动的MPC轨迹跟踪控制。 双轮差速运动学线性 MPC 轨迹跟踪实现的基本思路是状态方程–线性化–离散化–预测方程–约束线性化–非线性目标函数转为二次规划–求解最优问题。其中线性化可采用泰勒级数展开忽略高次项的方式,离散化可采用后向差分法,这两个部分都有一定的模型精度丢失。

⛄二、部分源代码

function LQR_1()
%这里先从简单开始,给定一个直线车道和车辆位置偏差。
%参考轨迹的生成方法有两种:
%1.车辆在Path上投影,然后在PATH上选取一系列的点作参考点
%现在遇到的问题是Q R的参数怎么设置。而且通用性怎么办?%

clear all;
close all;
clc;
%% 给定参数:

vel = 6; % 纵向车速,单位:m/s
L=2.85;%轴距
T=0.05;% sample time, control period
% 给定圆形参考轨迹
CEN=[0,0]; % 圆心
Radius=20; % 半径

%% 设置参数
Hp =10;%predictive horizion, control horizon
N_l=200;% 设置迭代次数

Nx=3;%状态变量参数的个数
Nu=1;%控制变量参数的个数

FWA=zeros(N_l,1);%前轮偏角
FWA(1,1)= 0; %初始状态的前轮偏角

x_real=zeros(Nx,N_l);%实际状态
x_real(:,1)= [22 0 pi/2]; %x0=车辆初始状态X_init初始状态
% x_piao=zeros(N_l,Nx);%实际状态与参考轨迹的误差
%
% u_real=zeros(N_l,Nu);%实际的控制量
% u_piao=zeros(N_l,Nu);%实际控制量与参考控制量的误差

% X_PIAO=zeros(N_l,3Hp);%通过DR估计的状态
%
% XXX=zeros(N_l,3
Hp);%用于保持每个时刻预测的所有状态值

RefTraj=zeros(3,1);
Delta_x = zeros(3,1);

Q=[10 0 0; 0 10 0; 0 0 100];
R=[10];%r是对控制量误差的weighting matrice

Pk=[1 0 0; 0 1 0; 0 0 1]; %人为给定,相当于QN
Vk=[0 0 0]'; %人为给定,相当于QN

%% 算法实现
u_feedBackward=0;
u_feedForward=0;

%首先生成参考轨迹,画出图来作参考%
[RefTraj_x,RefTraj_y,RefTraj_theta,RefTraj_delta]=Func_CircularReferenceTrajGenerate(x_real(1,1),x_real(1,2),CEN(1),CEN(2),Radius,250,vel,T,L);

figure(1) %绘制参考路径
plot(RefTraj_x,RefTraj_y,‘k’)
xlabel(‘x’,‘fontsize’,14)
ylabel(‘y’,‘fontsize’,14)
title(‘Plot of x vs y - Ref. Trajectory’);
legend(‘reference traj’);
axis equal
grid on
hold on

for i=1:1:N_l

G_Test = 3;
%先确定参考点和确定矩阵A,B.这里姑且认为A和B是不变的
[RefTraj_x,RefTraj_y,RefTraj_theta,RefTraj_delta]=Func_CircularReferenceTrajGenerate(x_real(1,i),x_real(2,i),CEN(1),CEN(2),Radius,Hp,vel,T,L);
u_feedForward = RefTraj_delta(G_Test);%前馈控制量

% u_feedForward=0;
Delta_x(1,1) = x_real(1,i) - RefTraj_x(G_Test);
Delta_x(2,1) = x_real(2,i) - RefTraj_y(G_Test);
Delta_x(3,1) = x_real(3,i) - RefTraj_theta(G_Test);
if Delta_x(3,1) > pi
Delta_x(3,1) = Delta_x(3,1)-2pi;
else if Delta_x(3,1) < -1
pi
Delta_x(3,1) = Delta_x(3,1) +2*pi;
else
Delta_x(3,1) = Delta_x(3,1);
end
end

 % 通过Backward recursion 求K    
for  j=Hp:-1:2   
    Pk_1 = Pk;
    Vk_1 = Vk;     
    A=[1    0   -vel*sin(RefTraj_theta(j-1))*T; 0    1   vel*cos(RefTraj_theta(j-1))*T; 0    0   1;];

% B=[cos(RefTraj_theta(j-1))T 0; sin(RefTraj_theta(j-1))T 0; 0 velT/L;];
COS2 = cos(RefTraj_delta(j-1))^2;
B=[ 0 0 vel
T/(L*COS2)]';

    K = (B'*Pk_1*A)/(B'*Pk_1*B+R);
    Ku = R/(B'*Pk_1*B+R);
    Kv = B'/(B'*Pk_1*B+R);

    Pk=A'*Pk_1*(A-B*K)+Q;   
    Vk=(A-B*K)'*Vk_1 - K'*R*RefTraj_delta(j-1); 
end

 u_feedBackward = -K*(Delta_x)-Ku*u_feedForward-Kv*Vk_1;  

FWA(i+1,1)=u_feedForward+u_feedBackward;

 [x_real(1,i+1),x_real(2,i+1),x_real(3,i+1)]=Func_VehicleKineticModule_Euler(x_real(1,i),x_real(2,i),x_real(3,i),vel,FWA(i,1),FWA(i+1,1),T,L);  

end

%% 绘图
% figure(1);
% plot(RefTraj_x,RefTraj_y,‘b’)
% hold on;
plot(x_real(1,:),x_real(2,:),‘r*’);
title(‘跟踪结果对比’);
xlabel(‘横向位置X’);
% axis([-1 5 -1 3]);
ylabel(‘纵向位置Y’);

end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]李国杰、李建平、李建华.模型预测控制:算法与工程实现[D].

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值