基于可视图和A*算法深度融合的机器人路径规划方法与流程

文档序号:15252852发布日期:2018-08-24 20:08阅读:185来源:国知局

本发明涉及一种机器人路径规划方法,更具体的涉及一种基于可视图和a*算法深度融合的机器人路径规划方法。



背景技术:

在机器人路径规划方法中,传统的可视图算法和搜索算法的结合是一种全局规划算法,是在将环境地图构建完整的模型后,再运用搜索算法寻找最优路径。然而,这种方法存在以下缺陷:(1)随着环境的复杂度增大,其运行速度和效率大大降低;(2)该方法往往忽略了机器人自身的结构,在实际运用中,往往会造成机器人与障碍物的碰撞。

目前,对该种方法的改进主要是对可视图进行简化,减少节点和可视线的数量,其后运用搜索算法。但改进后的方法对环境具有较强依赖性,如遇突发情况而导致环境变化,需全部重新建模,再进行路径搜索,此方法自适应能力差、控制响应慢和运算效率低。



技术实现要素:

发明目的:本发明目的在于针对现有技术的不足,提供一种基于可视图和a*算法深度融合的机器人路径规划方法,自适应能力强,控制响应快,运算效率高。

技术方案:本发明所述一种基于可视图和a*算法深度融合的机器人路径规划方法,所述机器人行走机构的边缘宽度为l,其特征在于,按如下步骤进行:

s1、确定机器人的起始点s和目标点g,利用计算机扫描机器人运动所涉及的地图环境,识别地图环境中的所有障碍物并通过封闭多边形进行包络,并计算其平行包络为(l/2)*1.1,保留图形;

s2、初始化地图环境中各节点,设置默认值,并对访问始节点赋值,初始化函数及始节点赋值函数,如下:(1)g(n)=infinityf(n)=infinity,(2)g(s)=0,(4)f(s)=h(s),(5)current=s,其中,g(n)表示节点n与起始点s之间的距离,infinity表示无穷大;h(n)为启发函数,h(n)表示对节点n与目标点g之间距离的估算;f(n)为评价函数,f(n)=g(n)+h(n),f(n)表示从起始点s经由节点n到目标点g之间距离的估计;

s3、如果min(f)值不为infinity,采用全局路径规划算法进行整体路径规划。

本发明技术方案的进一步限定为,步骤s3中采用全局路径规划算法进行整体路径规划时,具体步骤为:

q1、如果当前访问节点current的评价函数f(n)的值不为无穷大,构造当前访问节点current即起始点s和目标点g之间的穿越线段current-g,穿越线段与n个障碍物相交(n为大于0的整数),取与所述穿越线段current-g相交的第一个障碍物,在所述穿越线两侧,各取所述障碍物平行包络上距离穿越线最远的节点,判断是否超出地图环境边界,如果是,则删除节点;如果否,则将所述节点加入待访问节点列表,并更新节点的g值、f值和父节点parent;

q2、n是否大于1,如果否,执行步骤q3;如果是,则继续对每一个障碍物,在穿越线两侧,各取离穿越线最远一点,共(n-1)*2个,命名为ai(i=1...2*(n-1)),连接sai并判断与障碍物是否相交,若是,执行步骤q3;若否,判断节点是否超出处理边界,若是,删除节点;若否将节点添加为待访问节点,更新其g值,f值和父节点parent;

q3、利用评价函数f(n)对所有待访问节点进行测评,取出最小的节点为n*;连接当前访问节点current与节点n*作为穿越线段current-n*,如果穿越线段current-n*不与障碍物相交,那么将节点n*更新为当前访问节点current,将节点n*移出待访问节点列表,继续执行步骤q1,直至遍历完成待访问节点列表;

q4、构建起始点s与目标点g之间的最优路径,通过跟随父节点,从目标点g查找到起点s从而得到规划路径。

进一步地,步骤q1中,如果n=0,则起始点s和目标点g之间的穿越线为规划路径。

进一步地,步骤q3中,如果穿越线段current-n*与障碍物相交,则:如果穿越线段current-n*与n个障碍物相交,则将n*移出待访问节点,并取线段current至n*方向上第一个障碍物距离线段current-n*两侧最远的两个点作为节点,将线段current至n*方向上第一个障碍物的两个节点加入待访问节点列表并更新节点的g值、f值和父节点;

将当前访问节点current分别与线段current至n*方向上第2-n个障碍物距离线段current-n*两侧最远的两个点连接,构成2*(n-1)条线段,判断2*(n-1)条线段是否与线段current至n*方向上的障碍物相交;如果全部相交,那么跳转至步骤q3;如果不相交,那么判断线段current至n*方向上第2-n个障碍物的节点是否超出地图环境的物理边界;若超出地图环境的物理边界,则删除节点;若不超出地图环境的物理边界,则将相应节点加入待访问节点列表并更新节点的g值、f值和父节点,再跳转至步骤q3。

进一步地,更新节点n的g值、f值和父节点的函数为:

评价函数f(n)=h(n)+g(n),其中,xn和yn分别表示节点n的横坐标和纵坐标,xg和yg分别表示目标点g的横坐标和纵坐标;如果g(n)>g(current)+distance(currentton),则g(n)=g(current)+distance(currentton),g(current)表示当前访问节点current的g值,distance(currentton)表示当前访问节点current到节点n之间的距离;节点n的父节点n.parent=current。

有益效果:本发明通过设置规则生成必要可视图的同时引入启发函数h(n)进行搜索,简化其规则,将可视图与a*算法深度融合,在建图的过程之中进行搜索并不断更新待访问节点,提高机器人路径规划的响应速度,大大的减少的需要访问的节点,增强其自适应能力和智能化程度;本发明根据起始点动态的建立路径+进行搜索,可视图的建立是动态的,环境改变对其影响不大;本发明通过设置判断规则,对可视图进行简化,删除不必要的节点,提高机器人搜索效率;本发明通过设置障碍物的平行包络,避免机器人运动过程中与障碍物的碰撞,减小碰撞几率,增强可靠性。

附图说明

图1为本发明中障碍物的平行包络示意图;

图2为本发明的第一可视图;

图3为本发明的第二可视图;

图4为本发明的第三可视图;

图5为本发明的第四可视图;

图6为本发明的第五可视图;

图7为本发明的第六可视图。

具体实施方式

下面通过附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。

实施例1:一种基于可视图和a*算法深度融合的机器人路径规划方法,首先采用全局路径规划算法进行整体路径的计算,若存在路径,则机器人导入路径并按照规划路径前进,直至到达终点,否则结束。

机器人行走模块安装采用的四轮驱动结构,所述机械臂模块为安装在于机器人行走模块之上,为串联式六自由度机械臂,机器人边缘结构取决于行走部件,其宽度为l。本实施例中,通过附图2~7中的地图详细说明具体的操作步骤如下:

s1、确定机器人的起始点s和目标点g,利用计算机扫描机器人运动所涉及的地图环境,识别地图环境中的所有障碍物并通过封闭多边形进行包络,并计算其平行包络为(l/2)*1.1,保留图形;障碍物的平行包络示意图如图1所示。

s2、初始化地图环境中各节点,设置默认值,并对访问始节点赋值,初始化函数及始节点赋值函数,如下:(1)g(n)=infinityf(n)=infinity,(2)g(s)=0,(4)f(s)=h(s),(5)current=s,其中,g(n)表示节点n与起始点s之间的距离,infinity表示无穷大;h(n)为启发函数,h(n)表示对节点n与目标点g之间距离的估算;f(n)为评价函数,f(n)=g(n)+h(n),f(n)表示从起始点s经由节点n到目标点g之间距离的估计;current当前访问节点。

s3、如果min(f)值为infinity,则报告路径为空,结束路径规划。

如果min(f)值不为infinity,采用全局路径规划算法进行整体路径规划。

全局路径规划算法进行整体路径规划时,具体步骤为:

q1、如果当前访问节点current的评价函数f(n)的值不为无穷大,构造当前访问节点current即起始点s和目标点g之间的穿越线段current-g。

穿越线段与n个障碍物相交,如果n=0,则起始点s和目标点g之间的穿越线为规划路径。如果(n为大于0的整数),取与所述穿越线段current-g相交的第一个障碍物,在所述穿越线两侧,各取所述障碍物平行包络上距离穿越线最远的节点,判断是否超出地图环境边界,如果是,则删除节点;如果否,则将所述节点加入待访问节点列表,并更新节点的g值、f值和父节点parent。

本实施例中,穿越线段current-g与障碍物相交,即线段current-g与n个障碍物相交(n大于0的整数),本实施例中,n=3,即穿越线段与3个障碍物相交,分别是2,3,4,在穿越线两侧,每个障碍物各取离穿越线最远一点,为b1、b2、c1、c2、d1、d2。

取与所述穿越线段current-g相交的第一个障碍物,在所述穿越线两侧,各取所述障碍物平行包络上距离穿越线最远的节点(b1、b2),判断是否超出地图环境边界,如果是,则删除节点;如果否,则将所述节点加入待访问节点列表,结果两节点b1、b2加入待访问节点列表,并更新节点的g值、f值和父节点parent。连接sc1,sc2,sd1,sd2,判断四连接线是否与障碍物相交,结果全部相交,如图2所示。

g(n)=infinityf(n)=infinity

g(s)=0f(s)=h(s)

current=s

此时,判断n是否大于1,如果n不大于1,则跳转至q3,如果n大于1,则执行步骤q2,本实施例中,n=3,因此,继续执行步骤q2。

q2、n是否大于1,如果否,执行步骤q3;如果是,则继续对每一个障碍物,在穿越线两侧,各取离穿越线最远一点,共(n-1)*2个,命名为ai(i=1...2*(n-1)),连接sai并判断与障碍物是否相交,若是,执行步骤q3;若否,判断节点是否超出处理边界,若是,删除节点;若否将节点添加为待访问节点,更新其g值,f值和父节点parent;

q3、利用评价函数f(n)对所有待访问节点进行测评,取出最小的节点为n*,得到评价函数值最小的节点n*=b1。连接当前访问节点current与节点n*作为穿越线段sb1,如图3所示。

判断穿越线与障碍物是否相交,如果穿越线段current-n*不与障碍物相交,那么将节点n*更新为当前访问节点current,将节点n*移出待访问节点列表,current=n*。继续执行步骤q1,直至遍历完成待访问节点列表。

如果穿越线段current-n*与障碍物相交,本实施例与障碍物1相交,则将n*移出待访问节点,并取线段current至n*方向上障碍物距离线段current-n*两侧最远的两个点作为节点,将线段current至n*方向上障碍物的两个节点加入待访问节点列表并更新节点的g值、f值和父节点。即将n*=b1移出待访问节点列表,对于障碍物1,取穿越线两侧最远节点a1、a2,加入待访问节点列表中,更新节点的g值、f值和父节点parent。

本实施例中,继续执行步骤q1,结果为n*=a2。连接current和为n*构造穿越线,即sa2,如图4,判断穿越线与障碍物是否相交,结果为否,将节点更新为当前访问节点并移出待访问节点列表:current=n*,即为a2,并跳转q1。连接节点current和终点g,即连接起点a2和终点g,如图5,构造穿越线a2g,结果b1加入待访问节点列表,且b1.parent=a2;重复步骤q3:结果n*=b1;连接a2和b1,如图6,结果current=b1,并跳转步骤3;穿越线b1g与障碍物3、4相交,经判断c1、c2、d1加入待访问节点列表并更新各值;重复步骤q3,经判断判断current=c1其后跳转步骤3,重复以上动作。

将当前访问节点current分别与线段current至n*方向上第2-n个障碍物距离线段current-n*两侧最远的两个点连接,构成2*(n-1)条线段,判断2*(n-1)条线段是否与线段current至n*方向上的第一个障碍物相交;如果全部相交,那么跳转至步骤q3;如果不相交,那么判断线段current至n*方向上第2-n个障碍物的节点是否超出地图环境的物理边界;若超出地图环境的物理边界,则删除节点;若不超出地图环境的物理边界,则将相应节点加入待访问节点列表并更新节点的g值、f值和父节点,再跳转至步骤q3。

q4、g.parent=current,构建起始点s与目标点g之间的最优路径,通过跟随父节点,从目标点g查找到起点s从而得到规划路径。

上述步骤中,更新节点n的g值、f值和父节点的函数为:

评价函数f(n)=h(n)+g(n),其中,xn和yn分别表示节点n的横坐标和纵坐标,xg和yg分别表示目标点g的横坐标和纵坐标;如果g(n)>g(current)+distance(currentton),则g(n)=g(current)+distance(currentton),g(current)表示当前访问节点current的g值,distance(currentton)表示当前访问节点current到节点n之间的距离;节点n的父节点n.parent=current。

图2~图6,粗实线代表穿越线,虚线代表辅助连接线,通过不断的迭代最终g.parent=d2,此时从g节点开始,不断地从每个节点移向其父节点,直到到达起点,从而完成最优最完备路径的构造,结果如图7。

如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1