【轨迹跟踪】模型预测控制MPC无人机轨迹跟踪【含Matlab源码 3958期】

本文介绍了如何通过Matlab中的模型预测控制(MPC)算法实现无人机的轨迹跟踪,提供两种获取代码的方式,包括完整代码下载和付费专栏订阅。代码展示了如何计算航向角、曲率并调用MPC控制器进行实时路径调整。
摘要由CSDN通过智能技术生成

在这里插入图片描述

⛄一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【轨迹跟踪】基于matlab模型预测控制MPC无人机轨迹跟踪【含Matlab源码 3958期】
点击上面蓝色字体,直接付费下载,即可。

获取代码方式2:
付费专栏Matlab物理应用(初级版)

备注:
点击上面蓝色字体付费专栏Matlab物理应用(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab物理应用(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码

⛄二、部分源代码

% 利用MPC跟踪轨迹
clc
clear
close all
load path.mat

%% 初始参数
dt = 0.1; % 时间步长
L = 2.9; % 轴距
max_steer =60 * pi/180; % in rad
target_v =30.0 / 3.6;

%% 参考轨迹的相关参数
% 定义参考轨迹
refPos = path;
refPos_x = refPos(:,1);
refPos_y = refPos(:,2);

% 计算航向角和曲率
diff_x = diff(refPos_x) ;
diff_x(end+1) = diff_x(end);
diff_y = diff(refPos_y);
diff_y(end+1) = diff_y(end);
derivative1 = gradient(refPos_y) ./ abs(diff_x); % 一阶导数
derivative2 = del2(refPos_y) ./ abs(diff_x); % 二阶导数
refHeading = atan2(diff_y , diff_x); % 航向角
refK = abs(derivative2) ./ (1+derivative1.2).(3/2); % 计算曲率

% 根据阿克曼转向原理,计算参考前轮转角
refDelta = atan(L*refK);

% 绘图
figure
plot(refPos_x,refPos_y,‘r-’)
hold on

%% 主程序
x = refPos_x(1)+0.5;
y = refPos_y(1) + 0.5;
yaw = refHeading(1)+0.02;
v = 0.1;
U = [0.01;0.01];
idx =0;
pos_actual = [refPos_x,refPos_y];
latError_MPC = [];

% 循迹
while idx < length(refPos_x)-1

% 调用MPC控制器
[Delta,v,idx,latError,U] = mpc_control(x,y,yaw,refPos_x,refPos_y,refHeading,refDelta,dt,L,U,target_v) ;

% 误差太大,退出程序
if abs(latError) > 3
    disp('误差过大,退出程序!\n')
    break
end

% 更新状态量
[x,y,yaw] = updateState(x,y,yaw,v , Delta, dt,L, max_steer); 

% 保存每一步的实际量
pos_actual(end+1,:) = [x,y];
latError_MPC(end+1,:) = [idx,latError];

% 画跟踪轨迹图
scatter(x,y,150,'b.')
pause(0.01);

end

%% 保存
path_MPC = pos_actual;
save path_MPC.mat path_MPC
save latError_MPC.mat latError_MPC

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]王宇航,李晓峰.无人机轨迹跟踪控制方法研究综述[J].2018

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

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值