# 无人机代码 **Repository Path**: the-waves-cry-at-night/uav-code ## Basic Information - **Project Name**: 无人机代码 - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-03-19 - **Last Updated**: 2022-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 单无人机区域搜索代码 #### 介绍 本代码主要实现无人机自主执行区域搜索任务。 最终代码存放在py_node/my_aruco文件夹中。(/home/amov/Prometheus/Modules/object_detection/py_nodes) #### 代码实现功能 ![输入图片说明](%E6%96%B0%E5%BB%BA%20PPT.png) 假定存在一块较大的四边形未知区域K,内部可能存在一个敌方目标,在无人机搜索过程中可能会出现若干可疑目标干扰无人机的搜索,无人机要完成的任务是确认未知区域K内是否存在敌方目标以及目标的位置及性质。无人机自主搜索采用高空探测发现疑似目标、抵近排查确认的搜索方法,实现在未知区域K内搜索目标的要求。 两种方法实现:① 采用传统的SHOP任务规划方法进行任务分解实现(对应area_det文件夹)。 ② 迭代式任务规划方法,采用多次规划多次执行的方法解决不确定信息问题(对应area_dynamic_det文件夹)。 #### 软件架构 a、area_det文件夹(传统SHOP规划方法) ①local_pyhop.py文件,原版pyhop文件。 ②method_point2.py文件,是SHOP任务规划的领域知识,包括辅助函数,原子任务,复合任务分解的方法。 ③action_point.py文件,主要是无人机订阅和发布的各类话题,以及原子任务对应的执行函数。 ④main.py文件,主程序。启动运行的节点,获取终端输入,设置任务完成的框架实现。主要分为四步:获取外部输入,包括侦察区域、目标编号;获取初始状态;利用层次任务网进行任务规划;任务执行。 b、area_dynamic_det文件夹(迭代式规划方法) ①local_pyhop.py文件,主要是在原版pyhop文件基础上修改result的输出,使其适用于重规划的情况。 ②method_point.py文件,是SHOP任务规划的领域知识,包括辅助函数,5个原子任务,6个复合任务分解的方法。 ③action_point.py文件,主要是无人机订阅和发布的各类话题,以及原子任务对应的执行函数。 ④main.py文件,主程序。启动运行的节点,获取终端输入,设置任务完成的框架实现。主要两部分:(1)获取外部输入,包括侦察区域、目标编号;(2)任务规划。获取初始状态;利用层次任务网进行任务规划;任务执行。执行过程中出现不确定信息进行重规划,采用多次规划多次执行的方法解决不确定信息问题。 #### 环境支持 代码运行在Prometheus[项目介绍](https://gitee.com/freegho/Prometheus?_from=gitee_search)框架下,在运行前需要启动环境launch,以启动基本支持代码。后附环境支持文件夹,包括修改的launch文件和对应的world,在纯净版Prometheus框架对应文件夹下添加即可运行本代码。 (安装Prometheus的乌班图镜像:链接:https://pan.baidu.com/s/1cMB_yEw029cwuIyehRfLtA?pwd=amov 提取码:amov ) 运行方式:① 终端运行roslaunch prometheus_gazebo my_sitl_aruco.launch ② 对应文件夹下,./main.py,运行主程序。 ③ 根据提示输入搜索目标(默认20号二维码,可以修改)、搜索区域。 ④ 无人机自主执行搜索任务,发现目标回传信息后自主返回。