无人机巡航问题的一点尝试

简介: 本文以完全遍历算法为基础,对多无人无人机在抢险救灾中的优化运用研究,在文章中对高程数据集进行了合并处理,使用了贪心算法、牛耕往复法等,并对模型进行了评估。首先确定了无人机在空中某一点时的最小巡视半径为400√3m;基于此高程数据集中进行了处理,将边长为36 个数据的正方形合并为一个点,合并后的数据集相邻两点之间的距离为1375.2m,无人机飞过合并后数据集的每个点即完成了对高程数据集对应区域的巡航。

问题:

2017年8月8日,四川阿坝州九寨沟县发生7.0级地震,造成了不可挽回的人员伤亡和重大的财产损失。由于预测地震比较困难,及时高效的灾后救援是减少地震损失的重要措施。无人机作为一种新型运载工具,能够在救援行动中发挥重要作用。震区的高程数据,共有2913列,2775行。第一行第一列表示(0,0)点处的海拔高度值(单位:米),相邻单元格之间的距离为38.2米,即第m行第n列单元格中的数据代表坐标(38.2(m-1), 38.2(n-1))处的高度值。震区存在7个重点区域。

无人机都假设平均飞行速度60千米/小时,最大续航时间为8小时,飞行时的转弯半径不小于100米,最大爬升(俯冲)角度为±15°,与其它障碍物(含地面)的安全飞行距离不小于50米,最大飞行高度为海拔5000米。所有无人机均按规划好的航路自主飞行,无须人工控制,完成任务后自动返回原基地。

  使用无人机携带视频采集装置巡查7个重点区域中心方圆10公里以内的灾情。假设无人机飞行高度恒为4200米,将在地面某点看无人机的仰角大于60°且视线不被山体阻隔视为该点被巡查。若所有无人机均从基地H(110,0)(单位:千米)处派出,且完成任务后再回到H,希望在4小时之内使区域S内海拔3000米以下的地方尽可能多地被巡查到,最少需要多少架无人机?覆盖率是多少?每架无人机的飞行路线应如何设计?在论文中画出相应的飞行路线图及巡查到的区域(不同的无人机的飞行路线图用不同的颜色表示)。

(本题地图数据见Excel表格)

  解答:

 0 基本符号说明

符号

说明

无人机飞行海拔高度

无人机在空中某点时巡查区域直径

问题一中需要巡视区域的最高海拔高度

 

无人机在空中某点时巡查区域半径的最小值

 

 

 

 

afterCol

beforeCol

afterRow

beforeRow

无人机在空中某点时巡查区域直径的最小值

高程数据集中相邻单元格之间的距离

高程数据集合并正方形一条边上数据点的个数

合并后的列数

合并前的列数

合并后的行数

合并前的行数

计算X与P的欧式距离

 1   问题分析

本题目从总体来说是对高程数据所代表地图的区间完全遍历问题,题目通过限定无人机的属性、设定探查范围等衍生出问题。

数据的合并处理。题目给出的数据集巨大,为了抽象化问题,对数据进行适当的处理是必要的。在高程数据集中相邻单元格之间的距离为38.2米,且有2775行、2913列,而无人机在空中某一位置所能探查的区域远大于此,因此考虑对高程数据集中的数据进行适当的合并。

数据在图中的表示。通过等高线图可以更好的理解数据集的特征,如图1所示为高程数据集地图的登高线表示:其中颜色越深的区域海拔高度越低,颜色越浅的区域海拔高度越高。由图1可知,数据集右侧地势较低,数据集左侧地势较高。此外,将震区7个重点区域方圆十公里内区域在登高线图中表示如图2所示,从图中可知,震区重点区域多位于海拔较低的右上方,此地区海拔在区间[1000,3000]的范围内。

c80bd132f847602bb30f8cf0f234024d8e0d50a6

图1 数据集等高线图

268f384bc0bac26f1ee523801b8a29b99248b403

图2 震区重点区域图

4.1问题一分析

问题需对7个重点区域中心方圆10公里进行巡查,且无人机的飞行高度恒为4200米,所以首先需要分析7个重点区域的地形,并根据内部地形设计无人机在区域内部的飞行轨迹,在此基础上,再对无人机在区域间的飞行顺序进行设计,使得4小时内区域S内海拔3000米以下巡查覆盖率大,无人机的数量少。对于区域内部,分成两种情况进行讨论:第一种情况是区域内部不存在海拔高于4150米的山峰,在该种情况下,采用牛耕往复法对区域进行巡航;第二种情况是区域内部存在海拔高于4150米的山峰,需将无人机改变航向绕过障碍物。

 1   问题一模型建立与求解

1.1 无人机巡航最小半径的确定

当地面某点看无人机的仰角大于60°且视线不被山体阻隔视为该点被巡查,则无人机在空中巡视时,其对应的巡视区域为一个角为120°且边长无限的圆锥,如图5.1所示。无人机飞行海拔高度 ,需要巡视区域的最高海拔高度 ,考虑极限情况,当无人机巡视区域的海拔均为h时,无人机巡视面积取得最小值。

51efe0ce8b227a0509750802c9178a7de4fb3baf

图5.1 无人机巡视视野图

由题目可知, H_1=4200m, h_1=3000m,由勾股定理可知,无人机在空中某点时巡查区域半径r_1的最小值如式(1)所示:

  r_1=(H_1-h_1)/√(3 )=400√3 m                             公式(1)

  则无人机在空中某点时巡查区域直径d_1的最小值如式(2)所示:

  d_1=2r_1=800√3 m                               公式(2)

1.2 高程数据集的合并数据处理

  无人机在空中某点巡查的半径远大于高程数据集的间隔距离,则当无人机从数据集中某点dot正上方飞过时,无人机不仅探查了当前点,也探查了以dot为圆心,以r_1为半径的圆C_1的范围内的高程数据点。由此,我们可以将C_1范围内的点合并为dot,只要无人飞过dot,那么C_1范围内的高程数据就都被无人机探查过了。进一步考虑,无人机在空中不断移动位置,如图5.2所示,若无人机依次飞过A、B、C、D,那么无人机的探查范围为黄色区域,相较于矩形区域近损失了开始点与结尾点附近的区域,可以忽略不计,则可以将以dot为中心点,直径为〖2r〗_1的正方形区域内的数据合并。

   

6beb28a358b3a6e124dd7b70aa07ef042d9f24c3

图5.2 无人机探查范围示意图

由式(1)可知,d_1=800√3 m,高程数据集中相邻单元格之间的距离D=38.2m,则被合并正方形的一条边上有M个点,计算结果向下取整,则有公式(3):

  M=d_1/D≈36                                                             公式(3)

  则合并后两个相邻单元格之间的距离D_1如公式(4)所示:

  D_1=38.2*M=1375.2m                               公式(4)

  由题意可知,beforeCol=2913,高程数据集合并后的列数afterCol其结果向上取整,如式(5)所示:

             afterCol=beforeCol/M≈81                                  公式(5)

  由题意可知,beforeRow=2775,高程数据集合并后的行数beforeRow其结果向上取整,如式(6)所示:

             afterRow=beforeRow/M≈79                                公式(6)

其中,被合并正方形中数据表示为:

           CubeSet = [ N10,N11,N12……N1M,

                   N20,N21,N22……N2M,

                        ……

                      NM0,NM1,NM2……NMM  ]                               公式(7)

  由公式(4)可知合并后点dot的数值dotValue设置为CubeSet的平均值:

          

dotValue=∑_(i=1)^M?∑_(j=1)^M?N_ij                          公式(8)

高程数据集合并之后有79行,81列。第一行第一列表示(0,0)点处的海拔高度值(单位:米),相邻单元格之间的距离为38.2米,即第m行第n列单元格中的数据代表坐标(38.2(m-1), 38.2(n-1))处的高度值。

  对7个震源点进行坐标变换,结果如表1所示,以A为例,其X坐标表示

表1 震源坐标变换结果

中心点

X坐标

Y坐标

A

22.0,

65.0

B

48.0

62.0

C

72.0

56.0

D

54.0

44.0

E

42.0

35.0

F

63.0

16.0

G

68.0

 35.0

    对起飞点P(110,0)进行坐标变换后,得到P(81,0)。

使用以上方法对数据集进行合并,使用合并后的数据集作图,绘制出7个震区重点区域及数据集中大于H_1的数据,该图中蓝色区域即为题中要求无人机需要巡查的全部范围,黑色区域为数据集中大于H_1的数据,如图5.3所示。

  5cb35809543a3e19201bf65c6ea27a11eae9c0af

图5.3 无人机巡航区域示意图

 

1.3 震区重点区域内部巡航方式

由上文可知,震区重点区域是半径为10km的圆。则在合并后的数据集中,无人机巡航震区重点区域就是遍历以震源为圆心,以10km为半径的圆中所包含的数据点,如图5.4所示。对于单个连续区域的完全遍历问题有两种解决方式:(1)牛耕往复法,即从震区圆形区域上一点出发,沿直径方向折返遍历,如图5.5中黄色线所示;(2)内外螺旋法,即从震区圆形区域上一点出发,绕圆心向内遍历。其中,使用牛耕往复法巡逻一个震区重点区所走过的路程小于内外螺旋法,所以这里我们采用牛耕往复法巡航震区重点区域内部。

        c2d13eb3c55f2c7ca256713fffa3c9dca050ae19     73d24cf6f645c46d803ee2412f851bb232388faa

图5.4 震区重点区域数据点图                 图5.5 牛耕往复法遍历震区重点区域

1.4 震区重点区域外部巡航方式

无人机在巡查完毕一个震区圆形区域后,如果还有充足的时间,那么可以飞向下一个震区圆形区域。同时需要注意,由于我们在震区重点区域内部巡航使用牛耕往复法,该遍历方法需要水平或垂直的遍历震区圆形区域才能够保证算法效率。因此在外部巡航时,无人机总是从震区圆形区域与坐标线相切的点进出震区圆形区域,如图5.6中红色点所示,该红色点称为外部巡航进出点。并且无人机的外部巡航进点与出点欧式距离为

fae51bf93e5914ff5388cd82323c21e684b8802d

图5.6外部巡航方式进出震区重点区域的位置

若无人机飞离当前震区圆形区域且时间充足,则下一个震区圆形区域的选择使用贪心法求解,求解步骤为:

    Step0:创建包含7个震区重点区域的数据集S

Step1:求取起飞地点与S中数据的4个外部巡航进出点的欧式距离,取与起飞点距离最短的数据data,并从S移除数据data

Step2:求取data与S中数据的4个外部巡航进入点的欧式距离,取与起飞点距离最短的数据更新为data,并从S移除数据data。若此时S不为空,重复Step2。

算法执行后的结果如表2所示,表中入点,出点的坐标为合并数据后该点在高程数据集中的位置表示。在图中表示为图5.7,沿红色箭头方向即为巡航完毕当前震区圆形区域且有时间富裕的无人机的去向。即若F震区的无人机遍历本震区后有充足时间,那么飞往G;若G震区的无人机遍历本震区后有充足时间,那么飞往D;若D震区的无人机遍历本震区后有充足时间,那么飞往E;若E震区的无人机遍历本震区后有充足时间,那么飞往A;若A震区的无人机遍历本震区后有充足时间,那么飞往C;若C震区的无人机遍历本震区后有充足时间,那么飞往B;

表2 震区重点区域巡航出入点

中心点

入点

出点

F

(70, 16)

(56, 16)

G

(68, 28)

(68, 42)

D

(61, 44)

(47, 44)

E

(42, 42)

(42, 28)

A

(48, 55)

(48, 69)

C                  

(65, 56)

(79, 56)

B

(29, 65)

(15, 65)

 1c7a8cc3faa63b147635cfb593f7970cc3306933

图5.7 贪心法选择飞往下一个震区圆形区域

1.5 结果

根据5.3及5.4的内容可画出无人机机群在七个震区圆形区域整体的轨迹图,如图5.8所示。无人机机群在不受山体阻隔时的整体航行路线是:在震区圆形区域内采用牛耕往复法巡逻,在震区圆形区域间采用贪心法选择下一个区域。由于题目希望在4小时内对震区3000m以下区域进行巡逻,则每架无人机只有4小时时间飞达震区巡视并返回,那么无人机的有效巡视路径长度如公式(9)所示,其中v是无人机的飞行速度,v=60km/h,X为飞机巡航的震区的中心位置,||X-P||   为震区X到起飞点P的欧式距离,D_1为合并后两个单元格之间的长度。

         Sp=v*4-D_1* ||X-P||                                                             公式(9)

巡航每个震区圆形区域所要走过的路径长度S可近似表示为公式(10):

          S=〖(M-1)〗^2   *D_1                                          公式(10)

    

   


1da3f8aa91402510e70cb5134292efa26b30e20a

图 5.8 无人机机群巡航轨迹图

则无人机组的飞行轨迹可以视为:起飞点到震区,震区巡视,震区返航三个部分,其中震区巡视路段的轨迹构成图5.8中形状,起飞点到震区,震区返航两部分的路径长度可以近似表示为起飞点到震区中心的位移,使用迭代算法计算每架飞机的路径,计算可得所需最少无人机数为14架,每架飞机的飞行路径如图5.9所示,具体见附录:

356f2469ac6c06640b7a818e72ac7ba639399c5d

  图5.9 无人机飞行路线图

由于山体阻隔,部分震区重点区域未能覆盖,由图1可知,覆盖率 如公式(11)所示,其中S为一个震区重点区域的面积:

           P_S=(7S-1/2S-1/2S)/7S≈0.867=86.7%                     公式(11)

       

 

 

 



目录
相关文章
|
2月前
|
传感器 机器学习/深度学习 算法
植保机器人避障与地形适应
植保机器人避障与地形适应
41 2
|
2月前
|
传感器 监控 安全
植保机器人,尤其是无人机喷雾系统
植保机器人,尤其是无人机喷雾系统
35 1
|
10月前
|
机器学习/深度学习 传感器 算法
【无人机】基于quadrotor实现四旋翼无人机航路规划附matlab代码
【无人机】基于quadrotor实现四旋翼无人机航路规划附matlab代码
|
11月前
|
人工智能 自动驾驶 安全
无人车驾驶地面避障(Matlab代码实现)
无人车驾驶地面避障(Matlab代码实现)
|
12月前
|
机器学习/深度学习 传感器 算法
【无人机巡航】基于模拟退火算法求解无人机巡航问题附Matlab代码
【无人机巡航】基于模拟退火算法求解无人机巡航问题附Matlab代码
|
12月前
|
算法 机器人
多无人机空中机器人施工任务分配(Matlab代码实现)
多无人机空中机器人施工任务分配(Matlab代码实现)
|
机器学习/深度学习 传感器 算法
【路径规划】基于fmincon实现无人机航路避障规划附matlab代码
【路径规划】基于fmincon实现无人机航路避障规划附matlab代码
|
机器学习/深度学习 传感器 算法
空中无人机和地面无人车协同运输附matlab代码
空中无人机和地面无人车协同运输附matlab代码
|
机器学习/深度学习 传感器 算法
【卡车无人机协同】基于遗传算法卡车和两架无人机配送路径规划附matlab代码
【卡车无人机协同】基于遗传算法卡车和两架无人机配送路径规划附matlab代码
|
机器人
长一寸强一寸:无人机链组成空中机械手,可以滞空拧开工业阀门
最近,空中机器人正在受到广泛的关注,其中最具潜力的领域之一是室内。一旦无人机飞行器进入室内,就会有各种各样的障碍物出现,比如门、墙壁、窗户、人、家具、悬挂植物、灯罩等这对空中机器人来说是非常危险的。
103 0
长一寸强一寸:无人机链组成空中机械手,可以滞空拧开工业阀门

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    27
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    27
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    27
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    28
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    25
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    21
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    20