一种面向区域监测的多机器人遍历方法
1.本发明属于机器人智能控制领域,更具体地,涉及一种面向区域监测的多机器人遍历方法。
背景技术:
2.区域监测的目的为感知、建模和跟踪目标区域内感兴趣的物理、生物和化学量。无线传感器网络是进行区域监测的传统工具。虽然相比以往的手工测量有了一定的进步,但其只提供固定的监测点,无法适应环境的变化,且对于较大的区域,往往需要大量的传感器节点,提高了系统成本。随着多机器人技术的不断发展,多个移动机器人搭载传感器组成的移动传感器网络解决了这个问题。
3.在区域监测问题中,由于只能通过对部分离散位置的采样测量来对未被测量的其他位置进行回归预测,所以如何提高预测精度是一个关键的问题。在传感器精度和预测模型确定的情况下,采样点的数量与位置决定了预测的精度,而冗余的采样点又将增加任务执行的时间。因此,需要对采样点的部署进行优化。
技术实现要素:
4.针对现有技术的以上缺陷或改进需求,本发明提供了一种面向区域监测的多机器人遍历方法,其目的在于优化采样点的部署,以在保证预测精度的前提下,最小化多机器人系统完成采样所需的时间。
5.为实现上述目的,按照本发明的一个方面,提供了一种面向区域监测的多机器人遍历方法,包括:
6.步骤s1:确定采样半径r
max
;
7.步骤s2:基于目标区域的栅格地图,对采样点进行初始化部署,舍弃落入障碍物及目标区域外的采样点x
obs
,形成初始采样点集x
init
;
8.步骤s3:完成所有采样点xi∈x
obs
覆盖空洞的再部署,形成补充采样点集,x
extra
对于每个采样点进行再部署的步骤包括:
9.步骤s31:确定xi覆盖区域边界l
cover
,l
cover
上各栅格满足到xi的距离不大于r
max
且至少一个相邻栅格到xi的距离大于r
max
;将l
cover
内部到最近采样点x
′
∈x
init u x
extra
的距离大于r
max
的自由栅格和边界栅格编号为fi;在编号为fi的栅格a中,若存在有编号不为fi且未被标记的相邻栅格,则对栅格a进行标记;将l
cover
内部相邻的标记栅格组成对应采样点xi的覆盖空洞的边界集合borderi={b
i1
,b
i2
,...b
ij
...,b
in
},n≥1,其中,b
ij
表示采样点xi的第j个覆盖空洞的边界;
10.步骤s32:做b
ij
的最小外接圆c,若圆心o(x,y)所在的栅格为自由栅格,则将栅格x
new
=o(x,y)添加至补充采样点集x
extra
中,否则,将b
ij
中距离o(x,y)最近的自由栅格x
new
=o
′
(x,y)加入到x
extra
中,完成b
ij
的再部署;在完成边界集合borderi的再部署后,判断是否存在b
ij
的最小外接圆c的圆心所在栅格不为自由栅格,若是,则返回步骤s31,若否,则表示完
成对采样点xi覆盖空洞的再部署;
11.步骤s4:控制多机器人遍历初始采样点和补充采样点x
init
∪x
extra
。
12.在其中一个实施例中,对采样点进行初始化部署的方法包括:
13.采用正三角形的模式进行采样点的部署,每个采样点的覆盖边界将目标区域分割为蜂窝网络状的图形。
14.在其中一个实施例中,对栅格a进行标记的方法为将栅格a的编号乘以负数变为负编号,将具有负编号的栅格作为标记栅格,当具有正编号的栅格作为未标记的栅格。
15.在其中一个实施例中,步骤s4包括:
16.步骤s41:对地图进行预处理,向左右两侧扩展每个障碍物的边界,使得[u
l
,o
l
)和[u
l
,or]内的初始采样点列数均可以被n整除,其中,n+1为机器人的数量,u
l
为目标区域的左边界,o
l
和or分别为障碍物扩展后的左边界和右边界;
[0017]
步骤s42:使用牛耕分解法对预处理后的地图进行纵向分解得到多个子区域,除最右侧子区域外,每个子区域的初始采样点的列数均可被n整除;
[0018]
步骤s43:当最右侧子区域中的初始采样点的列数大于n时,则将最右侧子区域分别为左侧区域和右侧区域,其中,左侧区域中的初始采样点的列数能被n整除,右侧区域中的初始采样点的列数小于n;
[0019]
步骤s44:将子区域横向分解为边界区域c
border
和内部区域c
inside
,内部区域满足不包含补充采样点且初始采样点的列数可被n整除和初始采样点的行数为偶数三个条件,否则为边界区域;
[0020]
步骤s45:规划遍历路径,对于内部区域,控制n个机器人组成机器人编队进行遍历,对于边界区域,控制1个机器人进行遍历,根据采样结果对未被采样的其他位置进行高斯回归预测。
[0021]
在其中一个实施例中,在步骤s44中一个子区域分为一个c
inside
和位于c
inside
上方的上边界区域和位于c
inside
下方的下边界区域;
[0022]
步骤s44包括:
[0023]
先初步确定上边界区域的顶端为r
uu
、上边界区域的初始底端为r
ud
,下边界区域的初始顶端为r
du
、下边界区域的底端为r
dd
;
[0024]
再将r
ud
向下平移至第一个含有初始采样点的行作为c
inside
的上边界r
iu
,将r
du
向上平移至第一个含有初始采样点的行作为c
inside
的下边界r
id
,且r
id
与r
iu
之间含有偶数行初始采样点,上边界区域的上下范围更新为[r
uu
,r
iu-1],下边界区域的上下范围更新为[r
id
+1,r
du
],其中,r
iu-1表示朝顶端方向上移一行,r
id
+1表示朝底端方向下移一行。
[0025]
在其中一个实施例中,对于边界区域的遍历方法包括:
[0026]
步骤s451:将每个边界区域c
border
纵向分解为多个单元的集合c={c1,c2,...cj...,c
nc
},cj为第j单元,nc为当前边界区域的初始采样点的列数,每个单元仅包含一列初始采样点;
[0027]
步骤s452:对于每一个j<nc,规划path
j1
和path
j2
,path
j1
表示以c
ju
为起点,以c
(j+1)u
为终点,遍历了c
ju
和c
(j+1)u
中所有采样点的最短路径,path
j2
表示以c
jd
为起点,以c
(j+1)d
为终点,遍历了c
jd
和c
(j+1)d
中所有采样点的最短路径,c
ju
和c
jd
分别为cj单元最顶部和最底部的初始采样点,c
ju
表示cj中纵坐标大于c
ju
的采样点的集合,c
jd
表示cj中纵坐标小于cjd
的采样点的集合;
[0028]
步骤s453:对于j=1和j=nc,按照纵坐标从大到小的方向规划path
j3
,按照纵坐标从小到大的方向规划path
j4
,path
j3
表示以c
ju
为起点,遍历了cj中c
ju
以下所有采样点的路径,path
j4
表示以c
jd
为起点,遍历了cj中c
jd
以上所有采样点的路径;纵坐标由地图底部到顶部逐渐增大;
[0029]
步骤s454:对于每一个1<j<nc,规划以c
ju
为起点、c
jd
为终点,遍历cj中所有初始采样点的直线路径path
j5
;
[0030]
步骤s455:通过path
j1
到path
j5
的不同组合形成了以c
border
的四个角作为起始点、遍历c
border
中所有采样点的子区域内路径path
i1
到path
i4
。
[0031]
在其中一个实施例中,若nc为偶数,则以左上角为起点的路径path
i1
为以为起始路径方向、以为结束路径方向连成的之字形路径,以左下角为起点的路径path
i2
为以为起始路径方向、以为结束路径方向连成的之字形路径,以右上角为起点的路径以右下角为起点的路径其中,表示与path路径相同、反向相反;
[0032]
若nc为奇数,则以左上角为起点的路径path
i1
为以为起始路径方向、以为结束路径方向连成的之字形路径,以左下角为起点的路径path
i2
为以为起始路径方向、以为结束路径方向连成的之字形路径,以右上角为起点的路径以右下角为起点的路径
[0033]
在其中一个实施例中,针对所有边界区域c
border
,通过动态规划方法规划出每个边界区域c
border
的内部遍历路径起点和子区域的访问顺序,从而得到边界区域的遍历路径;
[0034]
针对所有内部区域c
inside
,通过动态规划方法规划出每个内部区域c
inside
的内部遍历路径起点和子区域的访问顺序,从而得到内部区域的遍历路径。
[0035]
在其中一个实施例中,所述动态规划方法通过最小化来规划遍历同一类子区域的路径,表示某类子区域的集合,d(t,i,q)的计算方式为:
[0036][0037]
其中,g(k,l,i,q)表示出发于子区域k的角点l,遍历子区域i内所有目标点,并结束于角点q的路径长度,k为在路径序列中在子区域i之前的子区域,(0,0)表示仓库x0,path
iq1
表示子区域i内部遍历路径的起点;g(k,l,i,q)的计算方式:
[0038][0039]
其中,d(a,b)表示a和b之间的最短路径长度,s
kl1
表示区域k内以角点l为起点的遍
历路径的第一个点,表示区域i内以角点q为起点的遍历路径的最后一个点,表示区域i内以角点q为起点的遍历路径的第m个点,ni表示区域i内遍历路径上采样点的数量,表示以角点q为起点的单元i内采样点遍历路径。
[0040]
在其中一个实施例中,在规划两点之间的路径时,若两点之间的直线路径与障碍物冲突,使用a*算法对两点之间的路径进行规划。
[0041]
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0042]
由于目标区域内存在障碍物,在进行初始化部署时,部分采样点因为落在了障碍物区域而被舍弃,导致出现了覆盖空洞。除此之外,落在目标区域之外的采样点也会被舍弃,同样也会导致覆盖空洞的出现。覆盖空洞对整体的预测精度有着直接影响,覆盖空洞内的预测精度无法保证,因此需要采取措施对其进行修复。在本技术中,对于采样点的部署分为两个阶段,初始化部署阶段和对覆盖空洞进行修复的再部署阶段,其中,初始化部署阶段可以采用常规方法部署初始采样点阵列,在再部署阶段,对每一个舍弃的采样点所导致的覆盖空洞进行修复,其中,先选定一个舍弃的采样点并确定覆盖空洞,然后再通过外接圆确定修复空洞的补充采样点,以此完成所有覆盖空洞的修复。初始化部署阶段的初始采样点和再部署阶段的补充采样点共同形成采样点的部署方案,由此可以消除目标区域内的覆盖空洞,从而保证对整个目标区域的预测结果的精度,同时减少了所需的采样点的数量。
附图说明
[0043]
图1为一实施例的面向区域监测的多机器人遍历方法的步骤流程图;
[0044]
图2为一实施例的控制多机器人遍历采样点的步骤流程图;
[0045]
图3为一实施例的规划边界区域遍历路径的步骤流程图;
[0046]
图4为一实施例的环境栅格地图的示意图;
[0047]
图5为一实施例的初始化部署的部署模式示意图;
[0048]
图6为一实施例的初始化部署后的采样点及覆盖区域示意图;
[0049]
图7为一实施例的覆盖空洞示意图;
[0050]
图8为一实施例的覆盖空洞修复后的采样点及覆盖区域示意图;
[0051]
图9(a)为一实施例的扩展障碍物边界的示意图;
[0052]
图9(b)为一实施例的对地图进行纵向分解的示意图;
[0053]
图9(c)为一实施例的分解最右侧子区域的意图;
[0054]
图9(d)为一实施例的对子区域进行横向分解的示意图;
[0055]
图10为一实施例的横向分解界限示意图;
[0056]
图11为一实施例的内部区域中的目标点示意图;
[0057]
图12(a)为一实施例的一边界区域中以左上角为起点的遍历路径示意图;
[0058]
图12(b)为一实施例的一边界区域中以左下角为起点的遍历路径示意图;
[0059]
图13为一实施例的遍历内部区域的编队形状示意图;
[0060]
图14为一实施例的标量场真值分布图;
[0061]
图15为一实施例的采样点位置和机器人路径图;
[0062]
图16为一实施例的标量场预测值分布图;
[0063]
图17为一实施例的标量场预测误差分布图。
具体实施方式
[0064]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0065]
如图1所示为一实施例中的面向区域监测的多机器人遍历方法,其包括:
[0066]
步骤s100:确定采样半径r
max
。
[0067]
其中,采样半径即为机器人位于采样点时所覆盖范围的半径,单个采样点的覆盖区域为以该采样点为圆心、以r
max
为半径的圆盘。
[0068]
具体的,可以根据高斯核函数计算保证预测精度的最大采样半径r
max
:
[0069][0070]
其中,l、σ0为已知的高斯核函数(rbf)的超参数。ω2为传感器测量噪声的方差,δ为对预测误差的容忍阈值。
[0071]
步骤s200:基于目标区域的栅格地图,对采样点进行初始化部署,舍弃落入障碍物及目标区域外的采样点x
obs
,形成初始采样点x
init
。
[0072]
先建立目标区域的栅格地图。
[0073]
在一实施例中,使用栅格法建立环境的栅格地图,使用1表示完全被障碍物占用的栅格,称其为障碍栅格,使用0表示没有被障碍物占用的栅格,称其为自由栅格,使用2表示部分被障碍物占用的栅格,称其为边界栅格。使用该种方法对环境的建模结果如图4所示,图中灰区域表示障碍物。
[0074]
然后,初始化部署采样点,将初始化部署的采样点组成的集合称之为初始采样点集x
init
。
[0075]
初始化部署阶段的目的是使用均匀分布的采样点对目标监测区域进行确定性部署,采样点组成某种形式的网格以最小化采样点的数量。通过初始化部署,相邻的多个采样点形成了固定的形状,在最小化重复覆盖区域的同时,也为使用机器人编队进行采样提供了方便。根据网格的形状,圆盘覆盖模式可分为三种:正三角形、正方形和正六边形等,相邻圆盘之间的圆心距越长,重复覆盖区域的面积就越小。
[0076]
在本实施例中,采用正三角形的部署模式,覆盖相同大小的面积,正三角形部署所需要的采样点的数量为正方形部署的0.87倍,为正六边形部署的0.66倍。若使用正三角形部署模式,相邻圆盘的圆心距为每个采样点所负责覆盖的区域为一个正六边形,目标区域被分割为蜂窝网络状的图形,如图5所示。
[0077]
具体的,采用正三角形的部署模式,按照从上到下、从左到右的方向,进行采样点的部署,如图5所示。在栅格地图中,奇数行采样点的第一个采样点距左边界的距离为
偶数行采样点的第一个采样点距离左边界的距离为处于不同列的两个相邻采样点之间的横向距离为纵向距离为纵向距离为表示向下取整,res表示栅格的边长,距离均以栅格数来表示。假设栅格地图有nr行、nc列,采样点共有na行、第b行有nb个采样点,那么则有:
[0078][0079][0080]
其中b=1,2,
…
,na,表示向上取整,bmod2=0表示偶数行,bmod2=1表示奇数行。初始化部署之后的采样点分布及覆盖区域如图6所示,其中,阴影部分表示舍弃采样点后所导致的覆盖空洞。
[0081]
步骤s300:完成所有采样点xi∈x
obs
覆盖空洞的再部署。
[0082]
为了方便描述,首先定义一些变量。定义记覆盖空洞为h,障碍物为obs,初始化部署阶段被舍弃的采样点为x
obs
,以x
obs
为圆心、r
max
为半径的圆盘为q
obs
,初始采样点集合为x
init
,通过再部署补充的采样点组成的集合为补充采样点集合x
extra
,已部署的所有采样点为x=x
init i x
extra
,已被覆盖的区域为q
cover
,则有覆盖空洞如图7所示,其中阴影区域为h,白区域为q
cover
,黑区域为obs。
[0083]
对于每一个被舍弃的采样点x
obs
,进行再部署的过程包括:
[0084]
步骤s310:在栅格地图中确定覆盖空洞。
[0085]
步骤s320:进行再部署以对覆盖空洞进行修复。
[0086]
其中,步骤s310具体包括:
[0087]
步骤s311:确定由xi覆盖的区域的边界l
cover
,l
cover
上的每一个栅格都满足两个条件:
[0088]
条件1:l
cover
上的每一个栅格到xi的距离不大于r
max
;
[0089]
条件2:l
cover
上的每一个栅格至少存在一个相邻栅格到xi的距离大于r
max
。
[0090]
步骤s312:将l
cover
内部到最近采样点x
′
∈x
init u x
extra
的距离大于r
max
的自由栅格和边界栅格编号为fi。
[0091]
其中,x
′
为已部署采样点中最近的采样点,已部署采样点包括初始部署的初始采样点x
init
和再部署中已经添加的补充采样点x
extra
。对于l
cover
以内的任意栅格a,若其为自由或边界栅格,且到最近的x
′
∈x
init u x
extra
的距离大于r
max
,将栅格a的编号设为fi。若不存
在该类栅格,则表示不存在覆盖空洞,方法结束。fi为采样点xi的编号。
[0092]
步骤s313:在编号为fi的栅格a中,若存在有编号不为fi且未被标记的相邻栅格,则对栅格a进行标记。
[0093]
具体的,对于l
cover
以内的任意编号为fi的栅格a,若其上下左右相邻的编号为不等于fi且未被标记,将栅格a进行标记,具体标记方法是在标记之前编号全为正数,标记时将编号乘以-1作为新的编号。
[0094]
步骤s314:将l
cover
内部相邻的标记栅格组成对应采样点xi的覆盖空洞的边界集合borderi={b
i1
,b
i2
,...b
ij
...,b
in
},n≥1,其中,b
ij
表示采样点xi的第j个覆盖空洞的边界。
[0095]
具体,一个采样点可能对应有多个覆盖空洞,当标记栅格为编号为负的栅格,寻l
cover
以内的所有编号小于0的栅格,相邻的栅格组成了对应采样点xi的覆盖空洞的边界集合borderi={b
i1
,b
i2
,...b
ij
...,b
in
}。
[0096]
其中,步骤s320包括:
[0097]
步骤s321:做b
ij
的最小外接圆c,若圆心o(x,y)所在的栅格为自由栅格,则将栅格x
new
=o(x,y)添加至x
extra
中,否则,将b
ij
中距离o(x,y)最近的栅格x
new
=o
′
(x,y)加入到x
extra
中,完成b
ij
的再部署。
[0098]
记b
ij
为xi所导致的第j个覆盖空洞,b
ij
为对应于h
ij
的覆盖边界,首先做b
ij
的最小外接圆c,c的圆心和半径分别为o(x,y)和r。由于h
ij
为q
obs
与obs和q
cover
的差,所以r≤r
max
。然后对o(x,y)的栅格属性进行判断,若其为自由栅格,将x
new
=o(x,y)加入到x
extra
中,完成对空洞h
ij
的修复。否则,寻b
ij
中距离o(x,y)最近的栅格o
′
(x,y)作为新的采样点部署位置,将x
new
=o
′
(x,y)加入到x
extra
中。
[0099]
步骤s322:在完成边界集合borderi的再部署后,判断是否存在b
ij
的最小外接圆c的圆心所在栅格不为自由栅格,若是,则返回步骤s310,若否,则表示完成对采样点xi覆盖空洞的再部署。
[0100]
完成再部署的采样点分布及覆盖区域如图8所示,其中三角形代表了补充采样点。
[0101]
步骤s400:控制多机器人遍历初始采样点和补充采样点x
init
∪x
extra
。
[0102]
在完成采样点的部署之后,根据上文所部署的采样点规划遍历路径,便可以控制机器人遍历各采样点。在使用多个机器人进行区域监测时,通常的方式为将目标区域被分为多个子区域,每个机器人执行子区域内的监测任务。此种方式将多机器人系统视作多个机器人的简单叠加,没有发挥出多机器人系统的优势。若将多机器人组成编队来对目标区域进行监测,通过机器人之间的协作,可以使得系统具有更强的鲁棒性和更复杂的功能。
[0103]
在一实施例中,如图2所示,步骤s400包括以下子步骤:
[0104]
步骤s410:对地图进行预处理,向左右两侧扩展每个障碍物的边界,使得[u
l
,o
l
)和[u
l
,or]内的初始采样点列数均可以被n整除,其中,n+1为机器人的数量,u
l
为目标区域的左边界,o
l
和or分别为障碍物扩展后的左边界和右边界。
[0105]
如图9(a)所示,对地图进行预处理。记目标区域的左右边界分别为u
l
和ur,障碍物的左右边界分别为o
l
和or,向两侧扩展障碍物的边界,使得[u
l
,o
l
)和[u
l
,or]内的nc均可以被n整除,nc为对应区域内的输出采样点的列数。
[0106]
步骤s420:使用牛耕分解法对预处理后的地图进行纵向分解得到多个子区域,除最右侧子区域外,每个子区域的初始采样点的列数均可被n整除。
[0107]
如图9(b)所示,使用原始牛耕分解法(boustrophedon cell decomposition,bcd)对处理之后的地图进行纵向分解。对于已经进行处理的障碍物,使用bcd法进行分解,分解之后的结果,除最右边的子区域以外,每个子区域celli的nc均可被n整除。
[0108]
步骤s430:当最右侧子区域中的初始采样点的列数大于n时,则将最右侧子区域分别为左侧区域和右侧区域,其中,左侧区域中的初始采样点的列数能被n整除,右侧区域中的初始采样点的列数小于n。
[0109]
如图9(c)所示,将地图恢复为处理前的形状,随后对最右边的子区域的nc进行判断,若其大于n,将其纵向分割为两个子区域:左侧区域的nc可被n整除,右侧的nc小于n。
[0110]
步骤s440:将子区域横向分解为包含补充采样点的边界区域c
border
和不含补充采样点的内部区域c
inside
。内部区域满足不包含补充采样点、初始采样点的列数可被n整除,且初始采样点的行数为偶数三个条件,否则即为边界区域。
[0111]
如图9(d)所示,将子区域横向分解为边界区域c
border
(阴影部分)和内部区域c
inside
(白部分)。
[0112]
在这一步中,如图10所示,每个子区域celli原则上可以分为两个c
border
和一个c
inside
。记子区域celli的上边界区域的顶端为r
uu
、上边界区域的底端为r
ud
、下边界区域的顶端为r
du
、下边界区域的底端为r
dd
,则c
inside
的上边界r
iu
为从r
ud
向下第一个含有初始采样点的行,下边界r
id
为从r
du
向上第一个含有初始采样点的行,且r
id
与r
iu
之间含有偶数行初始采样点。两个边界区域的上下范围分别为[r
uu
,r
iu-1]和[r
id
+1,r
du
]。若r
uu
>r
iu-1或r
id
+1>r
du
,则对应的边界区域不存在;而若r
id
<r
iu
,则对应的内部区域不存在。
[0113]
步骤s450:规划遍历路径,对于内部区域,控制n个机器人组成机器人编队进行遍历,对于边界区域,控制1个机器人进行遍历,根据采样结果对未被采样的其他位置进行高斯回归预测。
[0114]
由于内部区域的初始采样点的列数能够被n整除,因此,可以控制n个机器人联合遍历,对于边界区域,由于其列数小于n,因此,只控制1个机器人进行遍历。
[0115]
多机器人系统通过对目标点的遍历完成对采样点的遍历。在边界区域中,采样点即为目标点;在内部区域中,目标点为n个相邻采样点的质心。在一实施例中,内部区域中的目标点的示意图如图11所示。
[0116]
通过步骤s450,实现了控制多机器人系统对所有采样点进行遍历采样的目的。在内部区域中,使用多个机器人组成编队进行遍历,通过机器人之间的协作,可以降低对于单个机器人的要求,降低系统的成本;同时也可通过多源数据融合来提高预测精度。
[0117]
在一实施例中,如图3所示,步骤s450包括以下子步骤:
[0118]
步骤s451:将每个边界区域c
border
纵向分解为多个单元的集合cj为第j单元,nc为当前边界区域的初始采样点的列数,每个单元仅包含一列初始采样点。
[0119]
具体的,将边界区域c
border
纵向分解为多个单元的集合每个单元仅包含一列初始采样点。假设cj单元所含初始采样点的横坐标为xj,则cj的范围为j=2,3,l,n
c-1。c1单元的左边界为c
border
的左边界,
单元的右边界为c
border
的右边界。
[0120]
步骤s452:对于每一个j<nc,规划path
j1
和path
j2
,path
j1
表示以c
ju
为起点,以c
(j+1)u
为终点,遍历了c
ju
和c
(j+1)u
中所有采样点的最短路径,path
j2
表示以c
jd
为起点,以c
(j+1)d
为终点,遍历了c
jd
和c
(j+1)d
中所有采样点的最短路径,c
ju
和c
jd
分别为cj单元最顶部和最底部的初始采样点,c
ju
表示cj中纵坐标大于c
ju
的采样点的集合,c
jd
表示cj中纵坐标小于c
jd
的采样点的集合。
[0121]
具体的,对于所有j<nc,规划path
j1
和path
j2
。path
j1
表示以c
ju
为起点,以c
(j+1)u
为终点,遍历了c
ju
和c
(j+1)u
中所有采样点的最短路径。path
j2
表示以c
jd
为起点,以c
(j+1)d
为终点,遍历了c
jd
和c
(j+1)d
中所有采样点的最短路径。c
ju
为cj单元最顶部的初始采样点,c
jd
为最底部的初始采样点,若该单元无初始采样点,则c
ju
和c
jd
为cj中横坐标最靠近单元中心的采样点。c
ju
表示cj中纵坐标大于c
ju
的采样点的集合,即c
ju
={c|y(c)>y(c
ju
)且c∈cj}。c
jd
表示cj中纵坐标小于c
jd
的采样点的集合,即c
jd
={c|y(c)<y(c
jd
)且c∈cj}。函数f1基于动态规划法规划最短路径。
[0122]
步骤s453:对于j=1和j=nc,按照纵坐标从大到小的方向规划path
j3
,按照纵坐标从小到大的方向规划path
j4
,path
j3
表示以c
ju
为起点,遍历了cj中c
ju
以下所有采样点的路径,path
j4
表示以c
jd
为起点,遍历了cj中c
jd
以上所有采样点的路径。纵坐标由地图的底部到顶部逐渐增大。
[0123]
具体的,对于首尾单元,根据纵坐标,按照从上至下的方向规划path
j3
,按照从下至上的方向规划path
j4
。path
j3
表示以c
ju
为起点,遍历了cj中c
ju
以下所有采样点的路径,path
j4
表示以c
jd
为起点,遍历了cj中c
jd
以上所有采样点的路径。
[0124]
步骤s454:对于每一个1<j<nc,规划以c
ju
为起点、c
jd
为终点,遍历cj中所有初始采样点的直线路径path
j5
。
[0125]
对于非首尾单元,规划以c
ju
为起点,c
jd
为终点,遍历cj中所有初始采样点的直线路径path
j5
。
[0126]
步骤s455:通过path
j1
到path
j5
的不同组合形成了以c
border
的四个角作为起始点、遍历c
border
中所有采样点的子区域内路径path
i1
到path
i4
。
[0127]
其中,若nc为偶数,则以左上角为起点的路径path
i1
为以为起始路径方向、以为结束路径方向连成的之字形路径,以左下角为起点的路径path
i2
为以为起始路径方向、以为结束路径方向连成的之字形路径,以右上角为起点的路径以右下角为起点的路径其中,表示与path路径相同、反向相反。边界区域备选内部遍历路径规划算法如下:
[0128][0129]
如图12(a)所示为一实施例中,对某个子区域,以其左上角为起点规划的path
i1
,图12(b)所示则为以左下角为起点规划的path
i2
。其中圆形点为初始采样点,三角形点为补充采样点,虚线表示了单元的分割。
[0130]
在一实施例中,当为每个边界区域规划出路径path
i1
到path
i4
后,还包括:
[0131]
步骤ss456:基于所有边界区域c
border
的路径path
i1
到path
i4
,通过动态规划方法规划出每个边界区域c
border
的内部遍历路径起点和子区域的访问顺序,从而得到每个边界区域c
border
的遍历路径。
[0132]
同样,对于所有的内部区域c
inside
,也可以通过动态规划方法规划出每个内部区域c
inside
的内部遍历路径起点和子区域的访问顺序,从而得到内部区域的遍历路径。
[0133]
具体的,使用动态规划方法通过最小化来规划遍历所有的某类子区域的路径。d(t,i,q)为从仓库出发,遍历t中所有子单元中的目标点并结束于子区域i的角点q的最短路径,其中i∈t,且表示目标子单元的子集。d(t,i,q)的计
算方式为:
[0134][0135]
当t只包括一个子单元时,d(t,i,q)等于g(0,0,i,q),g(k,l,i,q)表示从出发于子区域k的角点l,遍历子区域i内的每一个目标点,并结束于角点q的路径长度。(0,0)表示仓库x0,g(k,l,i,q)可以由f(i,q)得到:其中当时,d(t,i,c
iq
)为无穷大。d(x,y)为从位置x到位置y的路径长度。在计算d(x,y)时,首先判断x到y的直线路径是否会产生碰撞。若未发生碰撞,d(x,y)即为x到y的直线距离,否则使用a
*
算法来规划从x到y的路径来得到d(x,y)。当t中包含多个子区域时,d(t,i,q)等于d(t-{i},k,l)+g(k,l,i,q)的最小值,其中子区域k为在路径序列中在i之前的子区域,l为子单元k的退出点。
[0136]
其中,g(k,l,i,q)由如下的方式计算:
[0137][0138]
其中,d(a,b)表示a和b之间的最短路径长度,表示以角点q为起点的单元i内采样点遍历路径。
[0139]
步骤ss456中子区域入口和访问顺序优化算法的伪代码如下,其中,minpath为返回的子区域遍历路径,mindis为返回的minpath的长度。算法使用h来保存d对应的路径。算法的输入为子区域的集合和其对应的子区域的备选内部遍历路径,子区域的集合为边界区域或内部区域的集合;输出则为遍历子区域内所有目标点的路径及其长度。
[0140][0141]
在规划路径之后,控制n个机器人形成编队沿着内部区域遍历路径进行采样,控制1个机器人沿着边界区域遍历路径进行采样,根据采样结果对未被采样的其他位置进行高斯回归预测。在传统技术中,在使用多个机器人进行区域监测时,通常的方式为将目标区域被分为多个子区域,每个机器人执行子区域内的监测任务。此种方式将多机器人系统视作多个机器人的简单叠加,没有发挥出多机器人系统的优势。而本技术中,将多机器人组成编队来对目标区域进行监测,通过机器人之间的协作,可以使得系统具有更强的鲁棒性和更复杂的功能。
[0142]
以下,以一具体的实施例进行说明。
[0143]
用一个五个机器人组成的机器人系统为例说明该面向区域检测的多机器人编队遍历路径规划算法的效果。五个机器人中,四个机器人组成图13所示的机器人编队,对内部区域进行遍历,一个机器人对边界区域进行遍历,仓库的坐标为场地的正中央:(20,20)。在一个40m
×
40m的环境中,使用圆形嵌入算法生成了一个在2000
×
2000网格上的空间随机过程,使用双线性插值法来得到网格点之间的场值,将该值作为待监测标量场f的真实值,l和σ0的值分别为6和10,f的最大值和最小值分别为39和0。如图14所示,机器人在采样点p∈i2处的测量值为f(p+ε
p
)+εs,为定位误差,为传感测量误差。长度尺度l和信号方差σ0在生成空间随机过程时手动给出。在获得在各个采样点的测量
值以后,根据这些测量值通过高斯回归对其他位置的值进行预测。高斯回归操作通过matlab提供的gpml工具箱来实现。所进行的各步骤则均由python语言在linux环境下实现。
[0144]
令δ为f的最大值与最小值的差的10%,即得δ=3.9,则计算出的r
max
为1.19。采样点部署位置和机器人的路径如图15所示。
[0145]
实验的预测结果则如图16所示,真实值和预测值之间的差则如图17所示。可以观测到最大误差为0.33,小于δ=3.9,满足预先规定的精度要求。
[0146]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种面向区域监测的多机器人遍历方法,其特征在于,包括:步骤s1:确定采样半径r
max
;步骤s2:基于目标区域的栅格地图,对采样点进行初始化部署,舍弃落入障碍物及目标区域外的采样点x
obs
,形成初始采样点集x
init
;步骤s3:完成所有采样点x
i
∈x
obs
覆盖空洞的再部署,形成补充采样点集,x
extra
对于每个采样点进行再部署的步骤包括:步骤s31:确定x
i
覆盖区域边界l
cover
,l
cover
上各栅格满足到x
i
的距离不大于r
max
且至少一个相邻栅格到x
i
的距离大于r
max
;将l
cover
内部到最近采样点x
′
∈x
init
ux
extra
的距离大于r
max
的自由栅格和边界栅格编号为f
i
;在编号为f
i
的栅格a中,若存在有编号不为f
i
且未被标记的相邻栅格,则对栅格a进行标记;将l
cover
内部相邻的标记栅格组成对应采样点x
i
的覆盖空洞的边界集合border
i
={b
i1
,b
i2
,...b
ij
...,b
in
},n≥1,其中,b
ij
表示采样点x
i
的第j个覆盖空洞的边界;步骤s32:做b
ij
的最小外接圆c,若圆心o(x,y)所在的栅格为自由栅格,则将栅格x
new
=o(x,y)添加至补充采样点集x
extra
中,否则,将b
ij
中距离o(x,y)最近的自由栅格x
new
=o
′
(x,y)加入到x
extra
中,完成b
ij
的再部署;在完成边界集合border
i
的再部署后,判断是否存在b
ij
的最小外接圆c的圆心所在栅格不为自由栅格,若是,则返回步骤s31,若否,则表示完成对采样点x
i
覆盖空洞的再部署;步骤s4:控制多机器人遍历初始采样点和补充采样点x
init
∪x
extra
。2.如权利要求1所述的面向区域监测的多机器人遍历方法,其特征在于,对采样点进行初始化部署的方法包括:采用正三角形的模式进行采样点的部署,每个采样点的覆盖边界将目标区域分割为蜂窝网络状的图形。3.如权利要求1所述的面向区域监测的多机器人遍历方法,其特征在于,对栅格a进行标记的方法为将栅格a的编号乘以负数变为负编号,将具有负编号的栅格作为标记栅格,当具有正编号的栅格作为未标记的栅格。4.如权利要求1所述的面向区域监测的多机器人遍历方法,其特征在于,步骤s4包括:步骤s41:对地图进行预处理,向左右两侧扩展每个障碍物的边界,使得[u
l
,o
l
)和[u
l
,o
r
]内的初始采样点列数均可以被n整除,其中,n+1为机器人的数量,u
l
为目标区域的左边界,o
l
和o
r
分别为障碍物扩展后的左边界和右边界;步骤s42:使用牛耕分解法对预处理后的地图进行纵向分解得到多个子区域,除最右侧子区域外,每个子区域的初始采样点的列数均可被n整除;步骤s43:当最右侧子区域中的初始采样点的列数大于n时,则将最右侧子区域分为左侧区域和右侧区域,其中,左侧区域中的初始采样点的列数能被n整除,右侧区域中的初始采样点的列数小于n;步骤s44:将子区域横向分解为边界区域c
border
和内部区域c
inside
,内部区域满足不包含补充采样点且初始采样点的列数可被n整除和初始采样点的行数为偶数三个条件,否则为边界区域;步骤s45:规划遍历路径,对于内部区域,控制n个机器人组成机器人编队进行遍历,对于边界区域,控制1个机器人进行遍历,根据采样结果对未被采样的其他位置进行高斯回归
预测。5.如权利要求4所述的面向区域监测的多机器人遍历方法,其特征在于,在步骤s44中一个子区域分为一个c
inside
和位于c
inside
上方的上边界区域和位于c
inside
下方的下边界区域;步骤s44包括:先初步确定上边界区域的顶端为r
uu
、上边界区域的初始底端为r
ud
,下边界区域的初始顶端为r
du
、下边界区域的底端为r
dd
;再将r
ud
向下平移至第一个含有初始采样点的行作为c
inside
的上边界r
iu
,将r
du
向上平移至第一个含有初始采样点的行作为c
inside
的下边界r
id
,且r
id
与r
iu
之间含有偶数行初始采样点,上边界区域的上下范围更新为[r
uu
,r
iu-1],下边界区域的上下范围更新为[r
id
+1,r
du
],其中,r
iu-1表示朝顶端方向上移一行,r
id
+1表示朝底端方向下移一行。6.如权利要求4所述的面向区域监测的多机器人遍历方法,其特征在于,对于边界区域的遍历方法包括:步骤s451:将每个边界区域c
border
纵向分解为多个单元的集合c
j
为第j单元,n
c
为当前边界区域的初始采样点的列数,每个单元仅包含一列初始采样点;步骤s452:对于每一个j<n
c
,规划path
j1
和path
j2
,path
j1
表示以c
ju
为起点,以c
(j+1)u
为终点,遍历了c
ju
和c
(j+1)u
中所有采样点的最短路径,path
j2
表示以c
jd
为起点,以c
(j+1)d
为终点,遍历了c
jd
和c
(j+1)d
中所有采样点的最短路径,c
ju
和c
jd
分别为c
j
单元最顶部和最底部的初始采样点,c
ju
表示c
j
中纵坐标大于c
ju
的采样点的集合,c
jd
表示c
j
中纵坐标小于c
jd
的采样点的集合;步骤s453:对于j=1和j=n
c
,按照纵坐标从大到小的方向规划path
j3
,按照纵坐标从小到大的方向规划path
j4
,path
j3
表示以c
ju
为起点,遍历了c
j
中c
ju
以下所有采样点的路径,path
j4
表示以c
jd
为起点,遍历了c
j
中c
jd
以上所有采样点的路径;纵坐标由地图底部到顶部逐渐增大;步骤s454:对于每一个1<j<n
c
,规划以c
ju
为起点、c
jd
为终点,遍历c
j
中所有初始采样点的直线路径path
j5
;步骤s455:通过path
j1
到path
j5
的不同组合形成了以c
border
的四个角作为起始点、遍历c
border
中所有采样点的子区域内路径path
i1
到path
i4
。7.如权利要求6所述的面向区域监测的多机器人遍历方法,其特征在于,若n
c
为偶数,则以左上角为起点的路径path
i1
为以为起始路径方向、以为结束路径方向连成的之字形路径,以左下角为起点的路径path
i2
为以为起始路径方向、以为结束路径方向连成的之字形路径,以右上角为起点的路径以右下角为起点的路径其中,表示与path路径相同、反向相反;若n
c
为奇数,则以左上角为起点的路径path
i1
为以为起始路径方向、以为结束路径方向连成的之字形路径,以左下角为起点的路径path
i2
为以为起始路径
方向、以为结束路径方向连成的之字形路径,以右上角为起点的路径以右下角为起点的路径8.如权利要求4所述的面向区域监测的多机器人遍历方法,其特征在于,针对所有边界区域c
border
,通过动态规划方法规划出每个边界区域c
border
的内部遍历路径起点和子区域的访问顺序,从而得到边界区域的遍历路径;针对所有内部区域c
inside
,通过动态规划方法规划出每个内部区域c
inside
的内部遍历路径起点和子区域的访问顺序,从而得到内部区域的遍历路径。9.如权利要求8所述的面向区域监测的多机器人遍历方法,其特征在于,所述动态规划方法通过最小化来规划遍历同一类子区域的路径,表示某类子区域的集合,d(t,i,q)的计算方式为:其中,g(k,l,i,q)表示出发于子区域k的角点l,遍历子区域i内所有目标点,并结束于角点q的路径长度,k为在路径序列中在子区域i之前的子区域,(0,0)表示仓库x0,path
iq1
表示子区域i内部遍历路径的起点;g(k,l,i,q)的计算方式:其中,d(a,b)表示a和b之间的最短路径长度,s
kl1
表示区域k内以角点l为起点的遍历路径的第一个点,表示区域i内以角点q为起点的遍历路径的最后一个点,表示区域i内以角点q为起点的遍历路径的第m个点,n
i
表示区域i内遍历路径上采样点的数量,表示以角点q为起点的单元i内采样点遍历路径。10.如权利要求6或9所述的面向区域监测的多机器人遍历方法,其特征在于,在规划两点之间的路径时,若两点之间的直线路径与障碍物冲突,使用a*算法对两点之间的路径进行规划。
技术总结
本发明公开了面向区域监测的多机器人遍历方法,其包括:基于目标区域的栅格地图,对采样点进行初始化部署以及舍弃采样点覆盖空洞修复的再部署;再部署的步骤包括:确定任意舍弃点x