模拟可执行的四旋翼模型——在未知环境下运动规划应用研究(Matlab代码实现)

news2025/1/16 16:38:14

1 概述

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

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

2 运行结果

 

 

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', simNum, NumSims)
    Data = Sim.SimLoop;
    fprintf('\nInstance #%d of %d complete\n', simNum, NumSims)
    fprintf('Time taken: %.2f s\n\n',Sim.Time)
    %fprintf('Mission Status:',  ,'\n\n',toc(SimTime))

    Quad = Sim.Agents.Quad;

    TargetsRemaining = Quad.NumTargets - Quad.TargetCount;

    if Quad.MissionComplete
        status = "Success";
    else
        status = "Failed";
    end
    
    entry = [mat2str(simNum), mat2str(Sim.Time), mat2str(Quad.MissionComplete), mat2str(Quad.BatteryUsage), mat2str(TargetsRemaining), Quad.InitialSearchType, Quad.SearchType, Quad.FailureType];
    
    results = [results;entry];
    
    %if mod(row,10)
    %    writetable(cell2table(num2cell(results)),"MCResults.xlsx",'Sheet',1,'Range',strcat("A",mat2str(row+1),":H",mat2str(row+11)))
    %    results = [];
    %else
    %    row = row + 1;
    %end
end

fprintf("Simulations complete; writing results to CSV file.\n")

writetable(cell2table(num2cell(results)),"MCResults.xlsx")

fprintf("Complete: Results table successfully written.\n")

4 数据

后台私信博主。

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

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

相关文章

解析异常SAXParseExceptionis如何处理

1.问题背景 今天一位同事找我寻求帮助,售后向他反馈的问题不知道如何排查,他尝试分析服务器端日志文件, 但是日志文件中并没有报错信息,查询源码时候发现,报错信息被try...catch处理 2.排查过程 顺便提一句&#xff…

微服务框架 SpringCloud微服务架构 4 Ribbon 4.3 饥饿加载

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构4 Ribbon4.3 饥饿加载4.3.1 饥饿加载4.3.2 总结4 Ribbon 4.3 饥饿加载 4…

实验四-----数据库

一、实验目的 1.理解SQL 的视图以及与基本表的区别; 2.掌握SQL 视图的定义、查询、更新; 二、实验环境 1.实验室名称:软件实验室 2.主要仪器设备:PC机、SQL Server2008环境 三、实验内容 1.对学生数据…

阿里云服务器ECS共享型和企业级是什么?

阿里云服务器分为企业级和共享型,企业级具有高性能、稳定计算能力和平衡网络性能的特点,共享型云服务器采用非绑定CPU调度模式,每个vCPU会被随机分配到任何空闲CPU超线程上,不同实例vCPU会争抢物理CPU资源,并导致高负载…

前端策略模式:react hooks 表单验证

react hooks 表单验证—策略模式 1.前置知识概述 策略模式的定义 定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换,策略模式的目的就是将算法的使用与算法的实现分离开来,避免使用多重条件判断。 策略类封装了具…

Day14--商品详情-渲染商品导航区域

1.渲染商品导航区域 我的操作: 1》在UI结构处加上一个展示的位置 2》在data中写配置项 官方文档: 我的书写: 3》补齐其UI结构在1》中的留存的位置上 4》看看效果图: 5》美化其样式【固定定位】 ******************************…

WinCC通过OPCUA链接Kepware(WinCC作为客户端)

OpcUaServerWinCC服务暂停导致WinCC OPCUA功能不能使用 解决方法: 第一步 下载 连通包 connectivity pack 第二步 使用 Sim_EKB_Install_2017_06_03.exe 授权 connectivity 对应版本号 第三步 运行起来WinCC,查看OpcUaServerWinCC服务是否启动,否则重启。 网上关于OPCUA配置…

七客咖啡50店齐开,拓展咖啡赛道

疫情似乎成了餐饮界品牌的篦子,它检验着品牌的强弱及面对突发状况时的应对能力,从2020年至今,不少品牌都关门以求自保或直接破产。然而,七客咖啡却在6月3号微博发文宣布再开50家门店,具体在上海、武汉、成都、广州等地…

Spark系列之Spark应用程序运行机制

title: Spark系列 第六章 Spark应用程序运行机制 6.1 Spark的基本运行流程 Spark任务的核心执行流程主要分为四大步骤: Driver工作:Build DAG DAGScheduler工作:Split DAG to Stage TaskScheduler工作:Change Stage to TaskSet…

java成神之路-基础篇

java成神之路-基础篇 最近关注了个 主播,Hollis 阿里巴巴的一位专家,该博主总结了一份java成神之路的知识图谱,基于图谱打算出 几期总结文档也有助于自己巩固与学习。于是有了这篇文章。 图谱有着么几个阶段,附件我放到资源里 基…

最全面的SpringMVC教程(三)——跨域问题

前言 本文为 【SpringMVC教程】跨域问题 相关内容介绍。当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同时,就会产生跨域。那么究竟什么是跨域,跨域问题该如何解决,本文具体将对同源策略,什么是跨域&#xff0…

Kvaser Leaf light HS v2 | 如何使用Excel发送和接收CAN报文数据

从1980年代,Kvaser就开始CAN产品的研发,在相关产品开发领域有近40多年的经验,对CAN和相关总线技术有着非常深入的研究。我们将分享一些有趣的发现和一些特定情况的技术处理,欢迎关注❤️广州智维电子科技有限公司❤️!…

【微信小程序】冒泡事件与非冒泡事件、将文章数据从业务中分离、wxml的模块化

🏆今日学习目标:第十四期——冒泡事件与非冒泡事件、将文章数据从业务中分离、wxml的模块化 😃创作者:颜颜yan_ ✨个人主页:颜颜yan_的个人主页 ⏰预计时间:30分钟 🎉专栏系列:我的第…

Day14--商品详情-渲染商品详情的数据并优化详情页的显示

提纲挈领: 那么如何在小程序中将这些html的字符串渲染成这莫好看的结构呢? 官方文档:【使用uni-ui组件库中的rich-text组件】 1.渲染商品详情信息 我的操作: 1》在页面结构中,使用 rich-text 组件,将带有…

盘点一个批量提取pdf文件目标信息的实用案例

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤你若盛开,清风自来。大家好,我是皮皮。一、前言前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求,需要批量提取pdf文…

【零基础入门SpringMVC】第六期——尾声

一、注解配置SpringMVC 采用全注解开发,替代我们的web.xml和SpringMVC的核心配置文件 我们需要创建对应的配置类,继承AbstractAnnotationConfigDispatcherServletInitializer 使用的Servlet版本要求在3.0以上项目启动后容器会找到配置了,基于…

台积电跪舔美国,日本却醒悟了而选择独立发展芯片产业

近期台积电大举包机10架将精英人才和设备转往美国引发争议,然而这个时候日本却选择了独立发展芯片产业的道路,摆脱美国的限制,显然日本清醒地认识到依赖美国不会有好结果。台积电之前还在左右摇摆,希望既能继续获得美国芯片的订单…

测试用例的重要性,看完这篇就够了

测试用例对于测试工作的作用:1、指导测试的实施测试用例主要适用于集成测试、系统测试和回归测试。在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试。并对测试情况记录在测试用例管理软件中&#x…

干货 | 数字经济创新创业——如何发展绿色经济

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”(数字经济创新创业课程)的精彩内容。主讲嘉宾:Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

[附源码]计算机毕业设计springboot房屋租赁系统

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