基于未知环境下四旋飞行器运动规划应用研究(Matlab代码实现)

news2024/11/15 8:17:50

 👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

无人机现在利用最佳搜索策略,使用PRISM模型检查器生成,以寻找目标。本文设计并编写了一种对抗性模式搜索算法来比较性能。

四旋翼无人机由于具有可悬停,可垂直起降,在设计速度范围内向任意方向飞行的运动特点,以及结构简单,构造容易,成本低廉等特点,被广泛运用于巡检、救灾、农业植保等各个领域。对于四旋翼无人机来说,运动规划就是在给定的障碍环境中,从无人机当前的未知到给定摘要未知找到一条安全的无人机可以执行的轨迹,而在未知环境下进行运动规划是无人机执行复杂任务的关键能力。本文以此为应用研究背景,从软件系统设计层面,本文的研究主要包括三个关键方面:路径规划、轨迹规划以及在未知环境下整个运动规划系统控制问题。本文首先针对四旋翼无人机的硬件平台及飞行系统,对未知环境下的运动规划应用进行了分析,将整个应用分成了:地图表示、运动规划、安全检测、状态管理四个关键组成。确立了以运动规划问题为主要研究对象,并结合运动规划问题的评价标准,使用路径规划加轨迹规划来解决运动规划问题。对于路径规划问题,本文采用确定性算法,采用路径搜索的思想在真实环境下规划出一条最短路径。使用状态栅格算法,基于四旋翼无人机的运动学,通过离散控制空间的方法构建搜索图并使用图搜素算法找到最优路径,并对状态栅格算法进行了改进,通过解决最优边界值问题基于运动学重新设计了算法的启发式函数,提高了图搜素过程的速度,并通过仿真实验对结果进行了验证。

📚2 运行结果

动态视频,这里就放几张运行结果图: 

 

Transporting decreased battery by 8 ; Coordinates = (2,2); New battery value: 8 
Time 125.74 s: Identifying target
Time 125.75 s: Moving above target
    Above target
Time 130.56 s: Descending to grab
    Target within reach
Time 133.59 s: Grabbing target
    Grabbed successfully
Time 133.60 s: Ascending to transport
    At transport height
Time 136.93 s: Transporting target
    Above drop zone
Time 141.12 s: Descending to deposit
    Releasing grabber
Time 144.44 s: Dropping target
    All targets deposited
Time 144.45 s: Landing
    Landed
Time 146.77 s: Agent idle
    MISSION COMPLETE

Simulation complete
Time taken: 31.02 s


+- VISUALISATIONS -------------------------
|
|  1: Animate agents  
|  2: Compare states  
|  3: Compare inputs  
|  0: Exit  
|  x: Exit and close all windows  
|
|  Select visualisation: 2
|
+------------------------------------------

Generating state comparison...


+- AGENT STATE COMPARISON -----------------
|
|  Select property to compare:  
|    
|  Individual rigid-body states:  
|  x, y, z, phi, theta, psi,  
|  xdot, ydot, zdot, p, q, r,  
|    
|  Grabber arm position:  
|  xG, yG, zG, xGdot, yGdot, zGdot  
|    
|  Combined rigid-body states:  
|  position, attitude, velocity, ang rates,  
|  Gposition, Gvelocity  
|    
|  Camera gimbal states:  
|  phiG, thetaG  
|    
|  Other properties:  
|  battery, airspeed  
|
|  Selection: battery
|
|  Comparing results for battery...
|
+------------------------------------------

Returning to main menu...


+- VISUALISATIONS -------------------------
|
|  1: Animate agents  
|  2: Compare states  
|  3: Compare inputs  
|  0: Exit  
|  x: Exit and close all windows  
|
|  Select visualisation: 1
|
+------------------------------------------

Animating agents...

Transporting decreased battery by 8 ; Coordinates = (2,2); New battery value: 8 
Time 125.74 s: Identifying target
Time 125.75 s: Moving above target
    Above target
Time 130.56 s: Descending to grab
    Target within reach
Time 133.59 s: Grabbing target
    Grabbed successfully
Time 133.60 s: Ascending to transport
    At transport height
Time 136.93 s: Transporting target
    Above drop zone
Time 141.12 s: Descending to deposit
    Releasing grabber
Time 144.44 s: Dropping target
    All targets deposited
Time 144.45 s: Landing
    Landed
Time 146.77 s: Agent idle
    MISSION COMPLETE

Simulation complete
Time taken: 31.02 s


+- VISUALISATIONS -------------------------
|
|  1: Animate agents  
|  2: Compare states  
|  3: Compare inputs  
|  0: Exit  
|  x: Exit and close all windows  
|
|  Select visualisation: 2
|
+------------------------------------------

Generating state comparison...


+- AGENT STATE COMPARISON -----------------
|
|  Select property to compare:  
|    
|  Individual rigid-body states:  
|  x, y, z, phi, theta, psi,  
|  xdot, ydot, zdot, p, q, r,  
|    
|  Grabber arm position:  
|  xG, yG, zG, xGdot, yGdot, zGdot  
|    
|  Combined rigid-body states:  
|  position, attitude, velocity, ang rates,  
|  Gposition, Gvelocity  
|    
|  Camera gimbal states:  
|  phiG, thetaG  
|    
|  Other properties:  
|  battery, airspeed  
|
|  Selection: battery
|
|  Comparing results for battery...
|
+------------------------------------------

Returning to main menu...


+- VISUALISATIONS -------------------------
|
|  1: Animate agents  
|  2: Compare states  
|  3: Compare inputs  
|  0: Exit  
|  x: Exit and close all windows  
|
|  Select visualisation: 1
|
+------------------------------------------

Animating agents...

🌈3 Matlab代码实现

部分代码:

% Monte Carlo simulation script based on RunSimSingle.
% Runs 1000 instances of the simulation recording run time and mission
% status.

close all
clearvars -except h GlobalTime Count Run Runs SaveFile
clc

fprintf('-----------------------------------------------------\n')
fprintf('Monte Carlo Simulation of UAV\n')
fprintf('Douglas H Fraser\n')
fprintf('March 2019\n')
fprintf('-----------------------------------------------------\n\n')

SimTime = tic;
NumSims = 100;

fprintf('Running %d simulations...\n\n', NumSims)
results = ["Sim #","Time","Status","Battery Used","Remaining Objects","Initial Search Mode","Final Search Mode","Details"];

% Simulation Loop --------------------------------------------------
for simNum = 1:NumSims
    close all
    clearvars -except h GlobalTime row results simNum NumSims Count Run Runs SaveFile

    % Initialize controller and environment for simulation.
    DecisionsFile = 'ControllerV2/scenario3b_5x5_1'; % Initial state: 303
    [States, Transitions] = LoadDecisions(DecisionsFile);

    Environment = cEnvironment('Grid size',[5, 5]);

    Agents.Quad = cQuadrotor('Quad',Environment,'Pose',[0 0 0 0 0 0]',...
        'States', States, 'Transitions', Transitions);

    % Targets
    NumTargets = 3;
    Shapes = {'Cube','Ball','Pyramid'};
    for i = 1:NumTargets
        Agents.Target(i) = cTarget(Shapes{i},Environment);
    end

    % Simulation properties
    t = 0;          % Initialise time (s)
    tfin = 500;      % End time (s)
    dt = 0.002;      % Solver increment (s)
    tsamp = dt;    % Sample increment (s)
    tsamp = 0.05;

    % Initialise blackbox
    Data = cBlackBox;

    % Initialise
    Sim = cSimEngine(Data,Environment,Agents,t,tfin,dt,tsamp);

    % Simulation loop
    fprintf('Running instance #%d of %d\n',

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT QDoubleSpinBox 浮点计数器控件(使用详解)

本文详细的介绍了QDoubleSpinBox控件的各种操作,例如:新建界面、获取数值、设置前后缀、设置最大/小值、设置显示精度、关联信号槽、优化信号、关联控件、文件源码、样式表等等操作。 本文是QT控件使用详解的第十五篇 QT QDoubleSpinBox 浮点计数器控件(…

【ArcGIS风暴】ArcGIS栅格影像去除黑边(背景值)方法汇总

文章目录 1. 数据加载时属性中设置去除黑边2. 应用setnull工具去除黑边3. 应用栅格计算器去除黑边4. 应用复制栅格工具去除黑边5. 应用影像分析去除黑边6. 应用镶嵌数据集去除黑边影像产生黑边的原因无外乎在设置无效值时,将无效值设成了0,而影像在导入软件进行渲染时,并没有…

制作一个简单HTML静态网页(HTML+CSS)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

TensorRT安装

本文是为了记录安装TensorRT过程中遇到的一些问题。 首先进入TensorRT下载页面,选择你要下载的TensorRT版本。 因为TensorRT不同的版本依赖于不同的cuda版本和cudnn版本。所以很多时候我们都是根据我们自己电脑的cuda版本和cudnn版本来决定要下载哪个TensorRT版本。…

[附源码]计算机毕业设计校园招聘系统设计Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

如何收到消息第一时间将网站置灰,难道让程序员上个线?

注意:文本不是讲如何将网站置灰的那个技术点,那个技术点之前汶川地震的时候说过。 本文不讲如何实现技术,而是讲如何在第一时间知道消息后,更快速的实现这个置灰需求的上线。 实现需求不是乐趣,指挥别人去实现需求才…

安全研究 # 二进制代码相似性检测综述

本文参考: [1]方磊,武泽慧,魏强.二进制代码相似性检测技术综述[J].计算机科学,2021,48(05):1-8. (信息工程大学数学工程与先进计算国家重点实验室, 国家重点研发课题,北大核心) 摘要 代码相似性检测常用于代码预测、知识产权保护和漏洞搜索等领域,可分为…

Numpy入门[11]——生成数组的函数

Numpy入门[11]——生成数组的函数 参考: https://ailearning.apachecn.org/ 使用Jupyter进行练习 import numpy as nparange arange 类似于Python中的 range 函数,只不过返回的不是列表,而是数组: arange(start, stop None, st…

Java并发编程—java内存模型2

文章目录重排序数据依赖性as-if-serial重排序对多线程的影响顺序一致性同步程序的顺序一致性效果同步/异步总线事务双重校验锁—————————————————————————————————— 重排序 数据依赖性 数据依赖不能进行重排序 as-if-serial as-if-seri…

[附源码]计算机毕业设计大学生心理健康测评系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Compressed Bloom Filters论文总结

Compressed Bloom Filters论文总结AbstractI. INTRODUCTIONII. COMPRESSED BLOOM FILTERS:THEORYA. Bloom FiltersB. Compressed Bloom FiltersIII. COMPRESSED BLOOM FILTERS:PRACTICEA. ExamplesIV. DELTA COMPRESSIONV. COUNTING BLOOM FILTERSVI. CONCLUSIONAbstract 我们…

Elasticsearch面试题

Elasticsearch面试题 1 为什么要使用Elasticsearch? 系统中的数据,随着业务的发展,时间的推移,将会非常多,而业务中往往采用模糊查询进行数据的搜索,而模糊查询会导致查询引擎放弃索引,导致系统查询数据…

C#/WPF/.NET 找到的程序集清单定义与程序集引用不匹配

vs 窗口报错 引发的异常:“System.Windows.Markup.XamlParseException”(位于 PresentationFramework.dll 中) “初始化“CircularGauge.CircularGaugeControl”时引发了异常。”,行号为“288”,行位置为“23”。代码位置报错 FileLoadException: 未能…

【Qt记录】属性 Q_PROPERTY

使用: Qt 拥有一个属性系统。我经常在QSS中使用 QWidget#SWNotifyMsgDialog QLabel#label_sure[status"normal"]配合在代码中使用 ui.label_sure->setProperty("status","warning"); 函数原型:bool QObject:setProp…

物联网开发笔记(56)- 使用Micropython开发ESP32开发板之手机蓝牙控制舵机

一、目的 这一节我们学习如何使用我们的ESP32开发板来实现通过蓝牙控制接在ESP32开发板上的舵机。 二、环境 ESP32 MG90S舵机 Thonny IDE 几根杜邦线 手机 舵机的链接方法见第54节:物联网开发笔记(54)- 使用Micropython开发ESP32开发板之…

Win11的两个实用技巧系列之电脑死机解决办法

目录 Win11电脑突然死机卡住不动?Win11电脑死机屏幕静止 方法一: 方法二: sfc包括有以下命令: 方法三: 点击拿去 Win11电脑突然死机卡住不动?Win11电脑死机屏幕静止 在使用Win11系统时,很多用户经常会遇到自己…

12月3日下午:thinkphp框架中的视图以及模型剩余部分

回忆知识: dump()与halt()方法 dump():输出内容后不会终止脚本,会继续向下执行 halt():输出内容后会终止脚本,结束程序 //dump()和halt()public function haltTest(){$result \db(demo)->where(id,,1)->select…

【Qt记录】Windows 窗口层级(Z-order)

功能:软件有一个提示弹窗,希望让他永远在最上面,保证该窗口在任何情况下不会被遮挡。 由上面的问题就查找对应的api找到了SetWindowPos()。 在说这个函数之前,先了解以下概念: Z-order(Z顺序&#xff09…

6. SpringBoot 整合 RabbitMQ

二八佳人体似酥&#xff0c;腰间仗剑斩愚夫。虽然不见人头落&#xff0c;暗里教君骨髓枯。 创建一个 普通的 Spring Boot Web 项目 整合 RabbitMQ pom.xml 添加依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…

【云原生】一文带你吃透FlexManager数据传入华为云IOT

文章目录一、华为云设备接入服务1、创建设备接入基础版2、创建产品实例3、在产品下创建设备实例二、FlexManager部署一、华为云设备接入服务 设备接入服务&#xff08;IoTDA&#xff09;是华为云的物联网平台&#xff0c;提供海量设备连接上云、设备和云端双向消息通信、批量设…