• 基于MATLAB的无人机路径规划设计


    目录
    一、研究目标 3
    (一)课题研究目的: 3
    (二)课题研究目标: 3
    二、研究开发方案 3
    三、关键技术 4
    四、研究开发计划 4
    (一)随机栅格地图的建立 4
    (二)学习复现A算法 5
    (三)将建立栅格地图和A
    算法结合起来 6
    (四)学习如何用MATLAB制作动图 7
    (五)将简单的A寻路制作成动图显示 8
    (六)动态扫描与死角退回 9
    (七)升级雷达扫描方式 10
    五、程序实现 12
    (一)代码1 12
    (二)代码2 14
    (三)代码3 17
    (四)调用函数myAstar 18
    (五)调用函数goahead 19
    (六)调用函数Drawapath 20
    (七)调用函数Drawamap 20
    (八)调用函数makeaGIF 21
    六、结果 22
    七、参考文献 23
    一、研究目标
    (一)课题研究目的:
    无人机路径规划,无人机由起点出发向终点飞行,事先不知道环境地图的分布;假设无人机装备了激光雷达,能够探测一定范围的障碍物信息;利用A
    算法规划当前认为可行的路径,不断探测障碍物,并不断规划路径使无人机最终到达目标点。
    (二)课题研究目标:
    ①实现最基本的地图加载、显示;
    ②实现路径规划与显示,在前面程序的基础上,实现A * 算法,在这个阶段可以假设环境地图都已知,规划全局的地图并显示;
    ③实现激光雷达的扫描,在上述程序基础上,模拟激光雷达扫描。模拟从当前位置发射多条射线,判断障碍物是否在射线上并将结果进行显示;
    ④动态路径规划,在上述的成果基础上,设计动态路径规划的算法并实现。
    二、研究开发方案
    本课题项目要求实现无人机的感知、路径规划,主要目的在于让我们理解无人机系统的感知与控制。而路径规划的前提是感知,如何设计感知方法,更好的模拟无人机雷达扫描策略是重点,所以我们的重心应该放在扫描策略的制定上,而之后的路径规划我们可以套用A算法并加以改进,因为原本的A算法是针对已知地图的一个“静态”的路径规划,而我们现在的无人机路径规划是一个逐步探索计算的过程,是具有“动态”属性的。
    所以最关键的点在于如何设计雷达扫描机制的基础上改进A算法。
    三、关键技术
    1、栅格地图的构建;
    2、雷达扫描方式的设计;
    3、A
    算法的改进。
    四、研究开发计划
    本项目首先使用MATLAB实现,确保项目的顺利完成,力求完美完成,在此基础之上利用剩余时间进行C++的学习,尽力使用C++做出一些成果。以下部分按照时间节点进行阐述。

    function [map,explore,path,nowlocation,barrier]=myAstar(explore,true_neighbor,path,barrier,nowlocation)
        %自己写的A*算法,根据上述函数的提供进行自己A*的计算
        worth = []; worth1 = []; worth2 = []; worth3  = [];    %设置每步的综合评价值
        n=size(explore,1);                                     %获取现在已经探索的路径有多少
        for i=1:size(true_neighbor,1)                          %将此步中获得的探索值写入探索路径矩阵,用来画图
            explore(n+i,:)=true_neighbor(i,:);
        end
    
        for i=1:size(true_neighbor,1)                          %为当前可选择的路进行排序
            worth(i,:) = [i, true_neighbor(i,3)+true_neighbor(i,4) , true_neighbor(i,4)];
        end
        
        %此处是第二个代码的核心修改
        if size(worth,1)==0
            %将此步骤移除路径矩阵,并将此处认定为障碍物,返回上一步,重新规划;
            barrier(path(size(path,1),:))=0;                         %将死角路径标记为障碍物
            path(size(path,1),:)=[];                                 %将次步骤从路径集合中删去
            n=size(path,1);                                     
            nowlocation(1,1) = path(n,1);                            %退回到上一步路径
            nowlocation(1,2) = path(n,2);
            
        else
            worth1 = sortrows(worth,2);  %此处仍需再排一次。
            worth2(1,:)=worth1(1,:);
            for i=1:size(worth1)-1
                if worth1(i+1,2)~=worth1(i,2)
                    break
                else
                    worth2(i+1,:)=worth1(i+1,:);
                end
            end
            worth3=sortrows(worth2,3);
                    
                
            %更新当前位置坐标
            nowlocation(1,1) = true_neighbor(worth3(1),1);
            nowlocation(1,2) = true_neighbor(worth3(1),2);
            barrier(nowlocation(1,1),nowlocation(1,2))=0.5;          %并将其进行标记,避免返回原来走过的路径
    
            n=size(path,1);                                          %获取现在已经走过的路径有多少,为后面的撞墙返回提供索引
            path(n+1,:)=[nowlocation(1,1),nowlocation(1,2)];
    
        end
        map = barrier;
        return
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    跳跃表和整数集合
    k8s快速入门教程-----8 secret and configmap
    图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂
    javaWEB如何实现一个电影票预定购票系统javaee电影选票选座平台
    变限积分的导数
    [附源码]java毕业设计小区宠物管理系统
    算法题Day71
    2300. 咒语和药水的成功对数 : 经典二分运用题
    【BOOST C++ 16 语言扩展】(3) Boost.Parameter
    Nodered系列——发送QQ邮件
  • 原文地址:https://blog.csdn.net/sheziqiong/article/details/126760496