控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

目前研究的四旋翼无人机航迹跟踪控制系统跟踪过程不稳定,导致跟踪结果不准确;为此基于MPC设计了一种新的四旋翼无人机航迹跟踪控制系统。通过空中飞行控制器、地面控制器和人工干预器实现了无人机航线的跟踪控制;空中飞行控制器包括GPS导航定位模块、姿态评估模块(MTI)、飞行控制系统计算机,显示模块等;地面控制器探测周围飞行环境,规避障碍物、规划安全航线,传输至空中自主飞行控制系统,包括无线通讯的数据连接电路和地面终端控制模块;人工干预模块能对飞行过程中发生的意外情况进行人工干预以避免突发情况造成危险。​​

📚2 运行结果

控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)

控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)

控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)

控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)

主函数部分代码:

%% Robot Motion Planning and Control Assignment 
clc
clearvars
close all force
yalmip('clear')
​
%% Initialisation
Ts = 0.02;                      % sample time [s]
​
% Weighting matrices Q, Qt, R, W and control horizon N
mpc_sim.Q   =   [1e4   0   0   0   0   0;
                 0     1e2 0   0   0   0;
                 0     0   1e4 0   0   0;
                 0     0   0   1e2 0   0;
                 0     0   0   0   1e4 0;
                 0     0   0   0   0   1e2];                    
mpc_sim.Qt  = mpc_sim.Q*1e2;    % Terminal state matrix
mpc_sim.R   = eye(3)*1e2;       % Input matrix
mpc_sim.W   = mpc_sim.Q;        % Waypoint matrix
mpc_sim.N   = ceil(2/Ts);       % Control horizon [s]
​
%% Ring initialisation
% Ring 1
randx1 = -1+2*rand(1);  % Generate x-coordinate for ring 1
randy1 = 1+3*rand(1);   % Generate y-coordinate for ring 1
randz1 = -1+2*rand(1);  % Generate z-coordinate for ring 1
​
% Ring 2
randx2 = -1+2*rand(1);  % Generate x-coordinate for ring 2
randy2 = 5+4*rand(1);   % Generate y-coordinate for ring 2
randz2 = -1+2*rand(1);  % Generate z-coordinate for ring 2
​
%% Simulation settings
x0 = [0 0 0 0 0 0]';            % Define start position and velocity [m and m/s]
ring1 = [randx1 0  randy1  5  randz1  0];   % [x, desired x-velocity, y, desired y-velocity, z, desired z-velocity]
ring2 = [randx2 0  randy2  5 randz2  0];    % [x, desired x-velocity, y, desired y-velocity, z, desired z-velocity]
goal = [0 0 10 0 0 0];          % Define goal position and velocity [m and m/s]
simT = 7;                       % Simulation time [s]
ulim = [1 1 1]*7;               % Maximum absolute value input [N]
​
%% Run simulations
% Run simulation and MPC controller. Inputs are simulation settings, start
% en goal positions, simulation time and sampling time, ring locations.
[results] = MPC_Controller(mpc_sim, x0, simT, Ts, ulim, ring1, ring2, goal);
​
%% Construct rings
t = linspace(0,2*pi);
x = cos(t);
y = sin(t);
z = 0*t;
pnts = [x;y;z];
​
n0 = [0;0;0.1]; 
n0 = n0/norm(n0);
n1 = [0;1;0]; 
n1 = n1/norm(n1); 
​
c = dot(n0,n1) / ( norm(n0)*norm(n1) ); % cos(theta)
s = sqrt(0.1-c*c);                        % sin(theta)
u = cross(n0,n1) / ( norm(n0)*norm(n1) ); % rotation axis
u = u/norm(u); % unit rotation axis
C = 0.35-c;
​
% the rotation matrix
R = [u(1)^2*C+c, u(1)*u(2)*C-u(3)*s, u(1)*u(3)*C+u(2)*s
    u(2)*u(1)*C+u(3)*s, u(2)^2*C+c, u(2)*u(3)*C-u(1)*s
    u(3)*u(1)*C-u(2)*s, u(3)*u(2)*C+u(1)*s, u(3)^2*C+c];
​
% Rotated points
newPnts = R*pnts;
​
%% Plot results
figure; plot3(results.state(:, 1), results.state(:, 3), results.state(:, 5));
hold on
plot3(ring1(1)+1*newPnts(1,:), ring1(3)+1*newPnts(2,:), ring1(5)+1*newPnts(3,:), 'LineWidth',5)
plot3(ring2(1)+1*newPnts(1,:), ring2(3)+1*newPnts(2,:), ring2(5)+1*newPnts(3,:), 'LineWidth',5)
plot3(goal(1), goal(3), goal(5), 'b*')
plot3(x0(1), x0(3), x0(5), 'k*')
xlabel('x'); ylabel('y'); zlabel('z');
legend('Trajectory', 'ring 1', 'ring 2', 'goal', 'start')
grid on
xlim([-1.5 1.5]); ylim([0 10]); zlim([-1.5 1.5])
pbaspect([3 10 3])
​
%% Animate results
figure('units','normalized','outerposition',[0 0 1 1])
plot3(ring1(1)+1*newPnts(1,:), ring1(3)+1*newPnts(2,:), ring1(5)+1*newPnts(3,:), 'LineWidth',5)
hold on
plot3(ring2(1)+1*newPnts(1,:), ring2(3)+1*newPnts(2,:), ring2(5)+1*newPnts(3,:), 'LineWidth',5)
plot3(goal(1), goal(3), goal(5), 'b*')
plot3(x0(1), x0(3), x0(5), 'k*')
xlabel('x'); ylabel('y'); zlabel('z');
xlim([-1.5 1.5]); ylim([0 10]); zlim([-1.5 1.5])
pbaspect([3 10 3])
grid on
​
tic
for i = 1:simT/Ts
     plot3(results.state(1:i, 1), results.state(1:i, 3), results.state(1:i, 5), 'r--');
     p1 = plot3(results.state(i, 1), results.state(i, 3), results.state(i,5), 'r.');
     pause(Ts/2)
%      F(i) = getframe;
     delete(p1)
end

🎉3 参考文献

[1]聂博文,马宏绪,王剑,王建文.微小型四旋翼飞行器的研究现状与关键技术[J].电光与控制,2007(06):113-117.

部分理论引用网络文献,若有侵权联系博主删除。文章来源地址https://www.toymoban.com/news/detail-472459.html

🌈4 Matlab代码实现

到了这里,关于控制四旋翼飞行器以进行多目标航点导航的MPC算法(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 飞控学习笔记-飞行器数学模型(2)

    十字型模型 模型仿真 反扭力 仿真

    2024年02月12日
    浏览(47)
  • 航拍飞行器经营商城小程序的作用是什么

    航拍人群越来越越多,一款靠谱的装备往往能达到预期效果,随着互联网信息传播度加深,也吸引了大批同样的爱好者加入航拍序列。 对航拍飞行器企业/经营商来说,市场增幅下也带来了不少商机,然在实际销售及客户赋能方面还是面临一些痛点。 通过【 雨科 】平台 搭建

    2024年02月07日
    浏览(46)
  • UE4罗技X56飞行器开发配置

    提示:使用罗技X56模拟器映射键盘输入 文章目录 前言 一、下载罗技X56驱动X56 H.O.T.A.S. 二、使用方法 1.使用UE4插件Windows Rawlnput 2.X56 H.O.T.A.S.配置文件 总结:以上两种方法都可以实现我们需要的效果,方法二对应键盘的映射,使用更简单 如下(示例):在U4中找到-插件-Window

    2024年02月09日
    浏览(67)
  • Arduino无人机四轴飞行器(esp8266)

    想要更多项目私wo!!!  硬件组成:    Arduini Nan ESP8266 MPU6050 模块 有刷电机 螺旋桨 电池包 Si2302场效应管 无人机架 ESP8266模块         为了与无人机通信,我们需要蓝牙或WIFI连接,所以我们使用ESP8266 Wi-Fi模块,因为它有内置的Wi-Fi,我们可以使用它进行通信。 ESP8266开源、

    2024年02月12日
    浏览(49)
  • 零基础DIY四轴飞行器超级详细保姆级教程(STM32F407ZGT6主控、WIFI图传、陀螺仪平衡、气压计/超声波定高、手机蓝牙控制等功能)

             大四毕业后暑假没事做就花了一点DIY了一个四轴飞行器,是比较大的那种F450机架,不是那种PCB板做机架的小四轴,因为我也是从零基础开始做的四轴,现在就想把自己的过程写成博客分享在网上。下面我会从机械结构、主控和各传感器模块这些方面进行详细介绍

    2024年02月12日
    浏览(63)
  • ChatGPT带我做四轴飞行器和自平衡小车

    按照ChatGPT的说法,这款主板的的主控MCU、无线通信、电源管理、外设接口可以共用,需要差异化的有电机驱动、传感器的选择、控制算法和软件、电源供电。ChatGPT说的共用部分没啥争议,有差异化的地方需要细想下:电机驱动显然应该不同,比如四轴飞行器使用空心杯电机

    2024年02月13日
    浏览(42)
  • 航空飞行器运维VR模拟互动教学更直观有趣

    传统的二手车鉴定评估培训模式存在实践性不强、教学样本不足、与实际脱节等一些固有的不足。有了VR虚拟仿真技术的加持,二手车鉴定评估VR虚拟仿真实训系统逐渐进入实训领域,为院校及企业二手车检测培训提供了全新的解决方案。 高职院校汽车专业虚拟仿真实训平台

    2024年01月20日
    浏览(46)
  • 单片机毕业设计 stm32四轴飞行器设计与实现

    Hi,大家好,今天向大家介绍一个学长做的单片机项目 基于stm32的四轴飞行器设计 大家可用于 课程设计 或 毕业设计 这次尝试制作一个四旋翼飞控的过程 这个飞控是基于STM32,整合了MPU6050,即陀螺仪和重力加速计,但没有融合电子罗盘; 这是飞控程序的控制流程(一个执行

    2024年02月14日
    浏览(44)
  • 基于Matlab构建适用于无人机或四轴飞行器的IMU+GPS融合算法(附源码)

    此示例演示如何构建适用于无人机 (UAV) 或四轴飞行器的 IMU + GPS 融合算法。此示例使用加速度计、陀螺仪、磁力计和 GPS 来确定无人机的方向和位置。 设置采样率。在典型系统中,加速度计和陀螺仪以相对较高的采样率运行。在融合算法中处理来自这些传感器的数据的复杂

    2024年02月03日
    浏览(63)
  • 无人机飞行控制系统功能,多旋翼飞行控制系统概述

    飞行控制系统存在的意义 行控制系统通过高效的控制算法内核,能够精准地感应并计算出飞行器的飞行姿态等数据,再通过主控制单元实现精准定位悬停和自主平稳飞行。 在没有飞行控制系统的情况下,有很多的专业飞手经过长期艰苦的练习,也能控制飞行器非常平稳地飞

    2024年02月21日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包