一种基于动态窗口和冗余节点过滤的路径优化方法与流程

文档序号:26503380发布日期:2021-09-04 06:19阅读:225来源:国知局
一种基于动态窗口和冗余节点过滤的路径优化方法与流程

1.本发明涉及移动机器人技术中的运动规划领域,更具体地涉及一种可用于移动机器人的路径规划及优化方法。


背景技术:

2.机器人技术作为一个综合了多个学科的技术,是多年研究的热门。其中,路径规划作为移动机器人技术研发的关键技术,其目的在于参照某一个参数的指标(如代价最低、选择路径最短、运算时间最短等),在任务区域选择出一条可以从起点运动到终点的最优或次优的避障路径。路径规划按照机器人对工作区域信息的理解层次,可以分为给予完整区域信息理解的全局路径规划和基于部分区域信息理解的局部路径规划,两者各有优缺。现在实际工作中大多情况下都需要融合兼用全局和局部路径规划,前者旨在寻找全局优化路径,后者旨在实时避障。
3.a
*
算法作为最流行的全局路径查找选择方式之一,具有高度灵活性,且可以广泛应用于不同的环境之中。a
*
算法的成功秘诀在于它结合了dijkstra算法使用的信息(对接近起点的位置有利)和贪婪最佳优先搜索使用的信息(对接近目的地的位置有利)。其通过计算路由节点成本,选择成本最低的节点,通过依次扩展具有最小启发函数的节点来寻找最优路径。虽然传统的a*算法能得到一条长度相对比较优秀的路径,但是该路径存在的问题也很明显:有冗余节点、转折点较多,这些对机器人实际的运动都是不利的存在。
4.动态窗口法因为其符合移动机器人的运动特征,具有灵活性强等优点,成为了动态环境下局部避障的主要算法。动态窗口法的基本思想是结合移动机器人的运动特性,在路径规划过程中,实时预测时间t内移动机器人的速度空间(v
t
,w
t
)和状态空间(x
t
,y
t
,yaw
t
,v
t
,w
t
),模拟移动机器人在预测时间内的运动轨迹,再根据评价函数确定最优的运动轨迹,从而到达目标位置完成路径规划。该方法属于一个局部的路径规划,机器人如果只在这个算法下运动,虽然可以保证一个良好的运动姿态,但是要达到目标点需要遍历太多节点,效率很低。


技术实现要素:

5.针对现有技术存在的上述问题,本发明的要解决的技术问题是:如何尽可能的优化路线,使机器人的路线更平滑和可靠。
6.为解决上述第一个技术问题,本发明采用如下技术方案:一种基于动态窗口和冗余节点过滤的路径优化方法,包括以下步骤:
7.s100:利用已有的栅格地图数据集,确定运动的起始位置和目标位置的坐标信息,在栅格地图中标注目标节点和障碍物节点;
8.s200:利用a
*
算法规划出一条全局路径;
9.s300:利用a
*
算法规划处的全局路径进行全局优化,过滤掉冗余节点;
10.s400:结合动态窗口法对s300优化后的全局路径进行分段局部优化,得到最终的
全局路径。
11.作为改进,所述s200中利用a
*
算法规划出一条全局路径,其包括以下步骤:
12.s210:构建并且初始化两个空表openlist和closelist,将起始位置设置为当前节点并存入openlist列表;如果当前节点不是目标点,那么调用扩充节点函数选出与当前节点相邻且可扩展的所有节点,并且将扩展的所有节点信息都存入openlist列表;
13.s220:调用插入节点函数,遍历可以扩展的所有节点,计算出这些节点对应的代价函数f,代价函数表示为:
14.f(n)=g(n)+h(n)
15.其中,n表示当前节点;f(n)是当前节点n的代价函数;g(n)是移动机器人从初始节点到节点n的实际代价值;h(n)是从当前节点n到达目标点的代价值,选取这两点之间的欧式距离代表h(n),h(n)函数表示为:
[0016][0017]
其中,(x
g
,y
g
)代表目标节点在栅格地图中的坐标,(x
n
,y
n
)代表当前节点在栅格地图中的坐标;
[0018]
s230:选出代价函数f(n)最小值所对应的节点,将其从openlist列表中删除,存入closelist列表之中,同时将该节点设为当前节点连接至上一节点,重复s220,直至当前节点为目标点,导出该全局路径。
[0019]
作为改进,所述s300利用a
*
算法规划处的全局路径进行全局优化,过滤掉冗余节点,包括以下步骤:
[0020]
s310:将s200得到的closelist列表中的路径节点集记为p{p
i
,1≤j≤n},其中p1为路径的起点,p
n
为路径的终点,创建初始值只有p1和p
n
的关键点集合u{p1,p
n
}用于存放路径优化之后的关键节点;
[0021]
s320:对于节点集p{p
i
,1≤j≤n},令m=2,3,4

n,由p1开始依次连接p2,p3,

,p
m
,判断直线p1p
m
之间是否存在阻碍物节点,如果存在,则节点p
m
‑1为路径的必经节点;如果直线p1p
m
没有穿过障碍物节点,则判定p
m
‑1为冗余节点;
[0022]
将所有必经节点都添加至集合u中,关键点选取完成之后,集合u{p1,p
m
‑1,...,p
m+k
,p
n
}(2≤m≤n,1≤k≤n

m)包含了所有关键节点,假设u中的节点数目为r,即u{p1,p2,...,p
r
},(1≤r≤n);
[0023]
s330:依次连接集合u中的所有节点,完成对路径的全局优化。
[0024]
作为改进,所述s400所述的结合动态窗口法对s300优化后的全局路径进行分段局部优化,得到最终的全局路径的具体步骤如下:
[0025]
s410:针对集合u,从起点p1开始,依次将除开终点p
r
之外的所有节点作为局部路径规划的起点,记作{s1,s2,...,s
r
‑1};同时将集合u中的第二个节点p2开始,依次将{p2,p3,...,p
r
}记作局路径规划的终点{d1,d2,...,d
r
‑1},则可以将全局路径分为s1d1,s2d2,...,s
r
‑1d
r
‑1共r

1段,记s1在栅格地图中的坐标值为d1的坐标值为以此类推;
[0026]
s420:初始化移动机器人的状态参数集l(l),l(x,y,yaw,v,w)记录机器人运动在规划路径中的状态参数,包括位置、航向角、线速度、角速度,设定机器人的初始线速度为v(m/s),初始角速度为w(rad/s)和初始导航角yaw(rad);
[0027]
s430:计算s
i
d
i
的倾斜角度,计算公式如下:
[0028][0029]
其中,分别是d
i
的横纵坐标,分别是s
i
的横纵坐标;
[0030]
将s
i
d
i
段路径的倾斜角度转换为弧度值作为移动机器人的初始航向角,斜率角度转化为弧度值的公式为:
[0031]
yaw
i
=α
×
180
°÷
π
[0032]
得到在s
i
d
i
段路径中机器人的所有状态参数l
i
(x
i
,y
i
,yaw
i
,v
i
,w
i
),1≤i≤r,其中,x
i
,y
i
是节点s
i
的横纵坐标,v
i
是s
i
d
i
段路径中读取的上一段路径的终点处的线速度,w
i
是s
i
d
i
段路径中读取的上一段路径的终点处的角速度;
[0033]
s440:按照s430中计算s
i+1
d
i+1
段路径的倾斜角度α
i+1
,同时将机器人上一个状态参数l
i
中的yaw
i
转换为角度值β,弧度值转化为角度值的公式如下:
[0034]
β=yaw
i
×
π
÷
180
°
[0035]
比较α
i+1
和β,如果|α
i+1

β|<60
°
,则机器人保持最新的状态l
i+1
(x
i+1
,y
i+1
,yaw
i+1
,v
i+1
,w
i+1
),如果|α
i+1

β|≥60
°
,为避免移动机器人因为绕路转弯造成了冗余路段和耗费不必要运动时间,则令机器人导航角
[0036]
s450:重复步骤s440,直至移动机器人到达第r

1路段的终点d
r
‑1,得到记录移动机器人所有的状态参数集l(l1,l2,...,l
i
,l
i+1
,...,l
r
),完成局部路径的优化。
[0037]
相对于现有技术,本发明至少具有如下优点:
[0038]
1.本发明一种基于动态窗口和冗余节点过滤的路径优化方法,通过将a
*
算法和动态窗口融合,并且对全局规划和局部规划进行优化处理,一方面在很大程度上缓解了两种算法各种的局限性,传统的a*算法能得到一条长度相对比较优秀的路径,但是该路径有冗余节点、转折点较多;而动态窗口法属于一个局部的路径规划,机器人如果只在这个算法下运动,虽然可以保证一个良好的运动姿态,但是要达到目标点需要遍历太多节点,效率很低。本专利首先利用在一个地图中已经规划好的一个全局路径的基础上,先进行去除冗余节点的操作,之后在此优化后路径的基础上,利用动态窗口法进行有针对性(针对折点)的局部优化,达到取长补短的目的,最后能够取得一个长度比较优秀,同时符合机器人实际运动的一个更加平滑的路径。另一方面使得规划出的路径更加平滑更加安全,使得移动机器人的运动更有效率。首先,通过a
*
算法规划出一条全局路径,再利用一种过滤冗余节点保留关键节点的算法剔除全局路径中的没必要节点,保证路径的全局最优。之后,根据关键节点,结合动态窗口法的思想对每段局部进行局部优化,提高路径的安全性和平滑性。
[0039]
2.本发明具有较高的准确性、安全性和运动的效率性,根据不同场景的路径规划也具备优秀的适应能力,能够很好支持移动机器人在特定环境下的巡逻任务。
[0040]
3.本发明所述方法将全局路径规划a
*
算法和局部路径规划动态窗口算法组合,并且分别进行优化处理,从而为移动机器人规划出路径长度最短、路径平滑度高、安全性高的可靠路径。
附图说明
[0041]
图1是本发明路径规划及优化方法的流程示意图。
[0042]
图2是a
*
算法及全局优化的程序流程示意图。
[0043]
图3为基于动态窗口法思想的局部优化的流程示意图。
具体实施方式
[0044]
下面结合附图附本发明的实施方式进行详细描述。
[0045]
参见图1

3,一种基于动态窗口和冗余节点过滤的路径优化方法,包括以下步骤:
[0046]
s100:利用已有的栅格地图数据集,确定运动的起始位置和目标位置的坐标信息,在栅格地图中标注目标节点和障碍物节点;其中地图数据集可通过人工测量、遥感测量、摄影测量、卫星数据等途径得到,也可通过操作移动机器人在未知环境重复采集地图信息得到。
[0047]
s200:利用a
*
算法规划出一条全局路径,包括如下步骤:
[0048]
s210:构建并且初始化两个空表openlist和closelist,将起始位置设置为当前节点并存入openlist列表;如果当前节点不是目标点,那么调用扩充节点函数选出与当前节点相邻且可扩展的所有节点【去掉障碍物节点后的所有节点】,并且将扩展的所有节点信息都存入openlist列表;
[0049]
s220:调用插入节点函数,遍历可以扩展的所有节点,计算出这些节点对应的代价函数f,代价函数表示为:
[0050]
f(n)=g(n)+h(n)
[0051]
其中,n表示当前节点;f(n)是当前节点n的代价函数;g(n)是移动机器人从初始节点到节点n的实际代价值;h(n)是从当前节点n到达目标点的代价值,选取这两点之间的欧式距离代表h(n),h(n)函数表示为:
[0052][0053]
其中,(x
g
,y
g
)代表目标节点在栅格地图中的坐标,(x
n
,y
n
)代表当前节点在栅格地图中的坐标;
[0054]
s230:选出代价函数f(n)最小值所对应的节点,将其从openlist列表中删除,存入closelist列表之中,同时将该节点设为当前节点连接至上一节点,重复s220,直至当前节点为目标点,导出该全局路径。
[0055]
s300:利用a
*
算法规划处的全局路径进行全局优化,过滤掉冗余节点,包括以下步骤:
[0056]
s310:将s200得到的closelist列表中的路径节点集记为p{p
i
,1≤j≤n},其中p1为路径的起点,p
n
为路径的终点,创建初始值只有p1和p
n
的关键点集合u{p1,p
n
}用于存放路径优化之后的关键节点;
[0057]
s320:对于节点集p{p
i
,1≤j≤n},令m=2,3,4

n,由p1开始依次连接p2,p3,

,p
m
,判断直线p1p
m
之间是否存在阻碍物节点,如果存在,则节点p
m
‑1为路径的必经节点;如果直线p1p
m
没有穿过障碍物节点,则判定p
m
‑1为冗余节点;
[0058]
将所有必经节点都添加至集合u中,关键点选取完成之后,集合u{p1,p
m
‑1,...,
p
m+k
,p
n
}(2≤m≤n,1≤k≤n

m)包含了所有关键节点,假设u中的节点数目为r,即u{p1,p2,...,p
r
},(1≤r≤n);
[0059]
s330:依次连接集合u中的所有节点,完成对路径的全局优化,包括如下步骤:具体步骤如下:
[0060]
s410:针对集合u,从起点p1开始,依次将除开终点p
r
之外的所有节点作为局部路径规划的起点,记作{s1,s2,...,s
r
‑1};同时将集合u中的第二个节点p2开始,依次将{p2,p3,...,p
r
}记作局路径规划的终点{d1,d2,...,d
r
‑1},则可以将全局路径分为s1d1,s2d2,...,s
r
‑1d
r
‑1共r

1段,记s1在栅格地图中的坐标值为d1的坐标值为以此类推;
[0061]
s420:初始化移动机器人的状态参数集l(l),l(x,y,yaw,v,w)记录机器人运动在规划路径中的状态参数,包括位置、航向角、线速度、角速度,设定机器人的初始线速度为v(m/s),初始角速度为w(rad/s)和初始导航角yaw(rad);
[0062]
s430:计算s
i
d
i
的倾斜角度,计算公式如下:
[0063][0064]
其中,分别是d
i
的横纵坐标,分别是s
i
的横纵坐标;
[0065]
将s
i
d
i
段路径的倾斜角度转换为弧度值作为移动机器人的初始航向角,斜率角度转化为弧度值的公式为:
[0066]
yaw
i
=α
×
180
°÷
π
[0067]
得到在s
i
d
i
段路径中机器人的所有状态参数l
i
(x
i
,y
i
,yaw
i
,v
i
,w
i
),1≤i≤r,其中,x
i
,y
i
是节点s
i
的横纵坐标,v
i
是s
i
d
i
段路径中读取的上一段路径的终点处的线速度,w
i
是s
i
d
i
段路径中读取的上一段路径的终点处的角速度;
[0068]
s440:按照s430中计算s
i+1
d
i+1
段路径的倾斜角度α
i+1
,同时将机器人上一个状态参数l
i
中的yaw
i
转换为角度值β,弧度值转化为角度值的公式如下:
[0069]
β=yaw
i
×
π
÷
180
°
[0070]
比较α
i+1
和β,如果|α
i+1

β|<60
°
,则机器人保持最新的状态l
i+1
(x
i+1
,y
i+1
,yaw
i+1
,v
i+1
,w
i+1
),如果|α
i+1

β|≥60
°
,为避免移动机器人因为绕路转弯造成了冗余路段和耗费不必要运动时间,则令机器人导航角
[0071]
s450:重复步骤s440,直至移动机器人到达第r

1路段的终点d
r
‑1,得到记录移动机器人所有的状态参数集l(l1,l2,...,l
i
,l
i+1
,...,l
r
),完成局部路径的优化。
[0072]
s400:结合动态窗口法对s300优化后的全局路径进行分段局部优化,得到最终的全局路径。
[0073]
动态窗口法简称dwa,dwa的核心是通过不同的角速度和线速度来预测机器人的未来轨迹,本发明是利用dwa方法在行进过程中的实况进行优化,简单的可以理解为:a
*
算法规划出一条全局路径,该全局路径就是机器人的运动路径,过滤掉冗余节点就相当于不让机器人多走冤枉路。当机器人行走在优化后的全局路径上时,利用dwa方法,避开了该路径上的“坑坑洼洼”就好比开车时避让路上石头,坑洼,弯道很宽,我们从内圈转弯。
[0074]
实验对比:
[0075]
针对本发明专利提及的可用于移动机器人的路径规划及优化方法,为凸显该发明的创新点,将该技术与传统a
*
算法、dijkstra算法、rrt算法进行对比仿真实验得到下表数据。在仿真实验中,构建了三个尺寸一致、障碍物随机生成的栅格地图;水平方向35个方格,竖直方向33个方格,分辨率10cm*10cm;设定起点坐标为(0,0),终点坐标为(31,28)。
[0076]
不同算法之间的长度、计算时间与拐点数对比如下表所示。
[0077][0078]
由上表我们可以得知,在三个仿真实验中,4种路径规划的算法都能够规划出路径,但是在路径长度、计算时间、拐点数等方面处在一定的差异。
[0079]
从表中内容我们可以看出,rrt算法的计算时间最短,但是其拐点数过多,造成这个结果的原因在于该算法的路径是由一个一个随机树节点组成,可能包含棱角,不够光滑,并非理想的平滑曲线,无利于机器人的实际运动。dijkstra算法、a
*
算法、本算法都获得了相比较rrt算法更优的全局路径,但是相比较于dijkstra算法和a
*
算法,本算法的优势在于路径长度更短,其拐点较少,路径的平滑性更好,适合移动机器人的实际运动,便于机器人执行路径轨迹达到目标点。
[0080]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1