本发明属于移动机器人路径导航领域,具体涉及一种结合历史状态的移动机器人沿墙高效遍历算法。
背景技术:
在室内环境中,墙体是最基本的结构之一,而对于室内移动机器人来讲,能否沿着墙体移动是分辨室内移动机器人的能力重要条件。在许多情况下,都需要移动机器人具备沿墙走这一功能,比如室内地图的构建;根据构建的地图室内移动机器人可以移动到指定的位置;避障等。经过研究发现基于声呐的沿墙导航算法、模糊控制算法以及其他智能算法在沿墙走这一行为的表现较差,会出现确定方位差、串扰、镜面反射、需要大量模板等缺点。
技术实现要素:
本发明的目的是针对上述缺点,本发明提出一种结合历史状态的移动机器人沿墙高效遍历算法,本算法可以使移动机器人高效、快速的完成沿墙走的运动,并且该方法对室内环境有很好的适应性。
为了实现上述目的,本发明的技术方案如下:
一种结合历史状态的移动机器人沿墙高效遍历算法,其特征在于,包括以下步骤:
步骤一、根据移动机器人上传感器传来反馈,判断移动机器人当前所在位置的前方、左方以及右方是否有障碍物;
步骤二、再用变量k来表示当前时刻t的运动环境状态,判断当前位置属于哪种状态,用k的数值记录当前运动环境状态;
步骤三、用变量k1来表示历史时刻t-1的运动环境状态,判断历史时刻位置属于哪种状态,用k1的数值记录历史运动环境状态;
步骤四:将移动机器人的历史运动环境状态k1与当前运动环境状态k结合,即移动机器人t时刻的当前运动环境状态k和步骤二得到的它的前一时刻t-1时刻的历史运动环境状态k1相结合,得出当前移动机器人的运动方向。
作为改进,所述当前运动环境状态k和历史运动环境状态k1的取值范围均为1-8之间的自然数,具体如下:
状态1)移动机器人的前方、左方和右方均无障碍物,则k或者k1取1;
状态2)移动机器人只有左方有障碍物,前方和右方无障碍物,则k或者k1取2;
状态3)移动机器人只有前方有障碍物,左方和右方无障碍物,则k或者k1取3;
状态4)移动机器人只有右方有障碍物,前方和左方无障碍物,则k或者k1取4;
状态5)移动机器人的左方和前方都有障碍物,右方无障碍物,则k或者k1取5;
状态6)移动机器人的右方和前方都有障碍物,左方无障碍物,则k或者k1取6;
状态7)移动机器人的左方和右方都有障碍物,前方无障碍物,则k或者k1取7;
状态8)移动机器人的前方、左方以及右方均有障碍物,则k或者k1取8。
作为改进,当移动机器人根据当前运动环境状态k和历史运动环境状态k1无法判断当前时刻运动方向时,通过移动机器人当前时刻t之前的旋向信息fx判断,旋向信息fx定义如下:
移动机器人当前时刻t之前的旋向信息fx为累计值,fx初始值为fx=0,当移动机器人历史运动环境状态k1=2时,则=fx+1;当移动机器人历史运动环境状态k1=4时,则fx=fx-1,当移动机器人历史运动中处于其他环境状态时,fx的值不变,fx的值在移动机器人运动时,不断累积,当遇到需要旋向信息来判断移动机器人的运动方向时,就取t时刻之前fx的值,如果fx≥0,则说明移动机器人沿墙顺时针行走,结合旋向信息、当前时刻t的运动环境状态和时刻t-1的运动环境状态确定移动机器人当前运动方向;如果fx<0,则说明移动机器人沿墙逆时针行走,结合旋向信息、当前时刻t的运动环境状态和时刻t-1的运动环境状态确定移动机器人当前运动方向。
作为改进,结合移动机器人两边障碍物累计多少、历史运动环境状态k1与当前运动环境状态k判断移动机器人运动转向具体如下面表格所示:
表1移动机器人运动转向判断关系表
上表中fx为当前时刻t之前的旋向信息。
作为改进,所述移动机器人上的传感器采用激光雷达。
本发明有益效果是:
与现有技术相比,本发明提出的算法不会出现串扰、定位不准、需要提前学习、需要大量模板库等缺点,本发明提供的结合历史状态的移动机器人沿墙高效遍历算法,能够高效、快速、准确的完成沿墙走的运动,并且该方法对室内环境有很好的适应性。本发明将移动机器人的当前位置与历史运动环境状态相结合,准确判断移动机器人下一步的运动方向,能够很好的满足实际应用的需要。
附图说明
图1为运动环境状态k或k1值为1的示意图;
图2为运动环境状态k或k1值为2的示意图;
图3为运动环境状态k或k1值为3的示意图;
图4为运动环境状态k或k1值为4的示意图;
图5为运动环境状态k或k1值为5的示意图;
图6为运动环境状态k或k1值为6的示意图;
图7为运动环境状态k或k1值为7的示意图;
图8为运动环境状态k或k1值为8的示意图;
图9为当前运动环境状态为k=1结合历史运动环境状态为k1=2移动机器人的运动示意图;
图10为当前运动环境状态为k=1结合历史运动环境状态为k1=3移动机器人的运动示意图;
图11为当前运动环境状态为k=1结合历史运动环境状态为k1=4移动机器人的运动示意图;
图12为当前运动环境状态为k=1结合历史运动环境状态为k1=5移动机器人的运动示意图;
图13为当前运动环境状态为k=2结合历史运动环境状态为k1=1移动机器人的运动示意图;
图14为当前运动环境状态为k=2结合历史运动环境状态为k1=6移动机器人的运动示意图;
图15为当前运动环境状态为k=2结合历史运动环境状态为k1=7移动机器人的运动示意图;
图16为当前运动环境状态为k=3结合历史运动环境状态为k1=5移动机器人的运动示意图;
图17为当前运动环境状态为k=3结合历史运动环境状态为k1=6移动机器人的运动示意图;
图18为当前运动环境状态为k=4结合历史运动环境状态为k1=7移动机器人的运动示意图;
图19为当前运动环境状态为k=5结合历史运动环境状态为k1=3移动机器人的运动示意图;
图20为当前运动环境状态为k=6结合历史运动环境状态为k1=7移动机器人的运动示意图;
图21为当前运动环境状态为k=7结合历史运动环境状态为k1=3移动机器人的运动示意图;
图22为当前运动环境状态为k=8结合历史运动环境状态为k1=3移动机器人的运动示意图;
图23为当前运动环境状态为k=8结合历史运动环境状态为k1=4机器的运动示意图;
图24是本发明移动机器人沿墙高效遍历算法流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施对本发明做进一步说明,需要指出的是本发明移动机器人沿墙行走顺逆方向,均指俯视情况下,移动机器人沿墙障碍物整体走向的顺逆时针方向。
具体实施例:
一种结合历史状态的移动机器人沿墙高效遍历算法,当前状态为t时刻移动机器人所在位置的障碍物存在情况用k表示,即当前运动环境状态k,历史状态为t-1时刻移动机器人所在位置的障碍物存在情况用k1表示,即历史运动环境状态k1,当前t时刻之前移动机器人用变量fx记录的旋向信息。
步骤一:根据移动机器人上传感器的对障碍物的反馈,判断移动机器人当前位置的前方、左方以及右方是否存在障碍物,并根据障碍物的存在位置描述移动机器人的运动环境状态。
步骤二:对于移动机器人当前时刻t的运动环境状态用变量k表示,判断当前位置属于哪种状态,并用变量k取一个数值。
对于步骤二中用变量k表示移动机器人当前时刻t的运动环境状态,k的取值范围为[1,8],所述当前运动环境状态与k的取值对应关系如下:
状态1)参照图1所示,t时刻移动机器人的前方、左方和右方均无障碍物,则k=1;
状态2)参照图2所示,t时刻移动机器人只有左方有障碍物,前方和右方无障碍物,则k=2;
状态3)参照图3所示,t时刻移动机器人只有前方有障碍物,左方和右方无障碍物,则k=3;
状态4)参照图4所示,t时刻移动机器人只有右方有障碍物,前方和左方无障碍物,则k=4;
状态5)参照图5所示,t时刻移动机器人的左方和前方都有障碍物,右方无障碍物,则k=5;
状态6)参照图6所示,t时刻移动机器人的右方和前方都有障碍物,左方无障碍物,则k=6;
状态7)参照图7所示,t时刻移动机器人的左方和右方都有障碍物,前方无障碍物,则k=7;
状态8)参照图8所示,移动机器人的前方、左方以及右方均有障碍物,则k=8;
步骤三:将t-1时刻的历史运动环境状态(移动机器人历史位置的前方、左方以及右方是否存在障碍物)与当前时刻t的运动环境状态相结合。(确定历史运动环境状态与运动环境状态分别属于哪种状态)。
移动机器人t-1时刻的历史运动环境状态k1取值范围为[1,8],并用k1表示,所述历史运动环境状态与k1的取值对应关系如下:
状态1)如果t-1时刻移动机器人的前方、左方和右方均无障碍物,则k1=1;
状态2)如果t-1时刻移动机器人只有左方有障碍物,前方和右方无障碍物,则k1=2;
状态3)如果t-1时刻移动机器人只有前方有障碍物,左方和右方无障碍物,则k1=3;
状态4)如果t-1时刻移动机器人只有右方有障碍物,前方和左方无障碍物,则k1=4;
状态5)如果t-1时刻移动机器人的左方和前方都有障碍物,右方无障碍物,则k1=5;
状态6)如果t-1时刻移动机器人的右方和前方都有障碍物,左方无障碍物,则k1=6;
状态7)如果t-1时刻移动机器人的左方和右方都有障碍物,前方无障碍物,则k1=7;
状态8)如果t-1时刻移动机器人的前方、左方以及右方均有障碍物,则k1=8。
步骤四:根据结合的历史运动环境状态(历史状态包含t-1时刻的历史运动环境状态与k1、t时刻的当前运动环境状态k以及t时刻之前的旋向信息fx),判断移动机器人的运动方向(前进、左转和右转)。
所述移动机器人旋向判断具体包括为:
移动机器人当前时刻t之前的旋向信息fx为累计值,fx初始值为fx=0,当移动机器人历史运动环境状态k1=2时,则=fx+1;当移动机器人历史运动环境状态k1=4时,则fx=fx-1,当移动机器人历史运动中处于其他环境状态时,fx的值不变,fx的值在移动机器人运动时,不断累积,当遇到需要旋向信息来判断移动机器人的运动方向时,就取t时刻之前fx的值,如果fx≥0,则说明移动机器人沿墙顺时针行走,结合旋向信息、当前时刻t的运动环境状态和时刻t-1的运动环境状态确定移动机器人当前运动方向;如果fx<0,则说明移动机器人沿墙逆时针行走,结合旋向信息、当前时刻t的运动环境状态和时刻t-1的运动环境状态确定移动机器人当前运动方向。
步骤四具体为:
在步骤二中已经确定移动机器人t时刻运动环境状态的情况下,判断移动机器人t-1时刻历史运动环境状态属于哪种状态,结合历史运动环境状态确定移动机器人的运动方向。
1)如果已知移动机器人t时刻的当前运动环境状态k=1,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史运动环境状态下当前移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则移动机器人继续前进。
(2)参考图9所示,若移动机器人的历史运动环境状态为k1=2,则移动机器人左转。
(3)参考图10所示,若移动机器人的历史运动环境状态为k1=3,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则左转,逆时针行走则右转。
(4)参考图11所示,若移动机器人的历史运动环境状态为k1=4,则移动机器人右转。
(5)参考图12所示,若移动机器人的历史运动环境状态为k1=5,则移动机器人左转。
(6)若移动机器人的历史运动环境状态为k1=6,则移动机器人右转。
(7)若移动机器人的历史运动环境状态为k1=7,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则左转,逆时针行走则右转。
(8)若移动机器人的历史运动环境状态为k1=8,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
2)如果已知移动机器人t时刻的当前运动环境状态k=2,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史运动环境状态下移动机器人的运动方向:
(1)参考图13所示,若移动机器人的历史运动环境状态为k1=1,则移动机器人继续前进。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人继续前进。
(3)若移动机器人的历史运动环境状态为k1=3,则移动机器人继续前进。
(4)若移动机器人的历史运动环境状态为k1=4,则移动机器人右转。
(5)若移动机器人的历史运动环境状态为k1=5,则移动机器人继续前进。
(6)参考图14所示,若移动机器人的历史运动环境状态为k1=6,则移动机器人右转。
(7)参考图15所示,若移动机器人的历史运动环境状态为k1=7,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则前进,逆时针行走则右转。
(8)若移动机器人的历史运动环境状态为k1=8,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
3)如果已知移动机器人t时刻当前运动环境状态k=3,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史状态下移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人随机右转再前进或左转再前进。
(3)若移动机器人的历史运动环境状态为k1=3,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
(4)若移动机器人的历史运动环境状态为k1=4,则移动机器人右转。
(5)参考图16所示,若移动机器人的历史运动环境状态为k1=5,则移动机器人左转。
(6)参考图17所示,若移动机器人的历史运动环境状态为k1=6,则移动机器人右转。
(7)若移动机器人的历史运动环境状态为k1=7,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则左转,逆时针行走则右转。
(8)若移动机器人的历史运动环境状态为k1=8,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
4)如果已知移动机器人t时刻的当前运动环境状态k=4,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史状态下移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则移动机器人继续前进。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人左转。
(3)若移动机器人的历史运动环境状态为k1=3,则移动机器人继续前进。
(4)若移动机器人的历史运动环境状态为k1=4,则移动机器人继续前进。
(5)若移动机器人的历史运动环境状态为k1=5,则移动机器人左转。
(6)若移动机器人的历史运动环境状态为k1=6,则移动机器人直行前进。
(7)参考图18所示,若移动机器人的历史运动环境状态为k1=7,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则左转,逆时针行走则前进。
(8)若移动机器人的历史运动环境状态为k1=8,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
5)如果已知移动机器人t时刻的当前运动环境状态k=5,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史状态下移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则移动机器人右转。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人右转。
(3)参考图19所示,若移动机器人的历史运动环境状态为k1=3,则移动机器人右转。
(4)若移动机器人的历史运动环境状态为k1=4,则移动机器人右转。
(5)若移动机器人的历史运动环境状态为k1=5,则移动机器人右转。
(6)若移动机器人的历史运动环境状态为k1=6,则移动机器人右转。
(7)若移动机器人的历史运动环境状态为k1=7,则移动机器人右转。
(8)若移动机器人的历史运动环境状态为k1=8,则移动机器人右转之后继续右转。
6)如果已知移动机器人t时刻的当前运动环境状态k=6,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史状态下移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则移动机器人左转。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人左转。
(3)若移动机器人的历史运动环境状态为k1=3,则移动机器人左转。
(4)若移动机器人的历史运动环境状态为k1=4,则移动机器人左转。
(5)若移动机器人的历史运动环境状态为k1=5,则移动机器人左转。
(6)若移动机器人的历史运动环境状态为k1=6,则移动机器人左转。
(7)参考图20所示,若移动机器人的历史运动环境状态为k1=7,则移动机器人左转。
(8)若移动机器人的历史运动环境状态为k1=8,则移动机器人左转之后继续左转。
7)如果已知移动机器人t时刻的当前运动环境状态k=7,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史状态下移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则移动机器人继续前进。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人继续前进。
(3)参考图21所示,若移动机器人的历史运动环境状态为k1=3,则移动机器人继续前进。
(4)若移动机器人的历史运动环境状态为k1=4,则移动机器人继续前进。
(5)若移动机器人的历史运动环境状态为k1=5,则移动机器人继续前进。
(6)若移动机器人的历史运动环境状态为k1=6,则移动机器人继续前进。
(7)若移动机器人的历史运动环境状态为k1=7,则移动机器人继续前进。
(8)若移动机器人的历史运动环境状态为k1=8,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
8)如果已知移动机器人t时刻的当前运动环境状态k=8,判断其t-1时刻的运动环境状态,确定历史运动环境状态k1,与当前运动环境状态结合,得到移动机器人的运动方向,以下为不同历史状态下移动机器人的运动方向:
(1)若移动机器人的历史运动环境状态为k1=1,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
(2)若移动机器人的历史运动环境状态为k1=2,则移动机器人右转。
(3)参考图22所示,若移动机器人的历史运动环境状态为k1=3,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
(4)参考图23所示,若移动机器人的历史运动环境状态为k1=4,则移动机器人左转。
(5)若移动机器人的历史运动环境状态为k1=5,则移动机器人右转。
(6)若移动机器人的历史运动环境状态为k1=6,则移动机器人左转。
(7)若移动机器人的历史运动环境状态为k1=7,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
(8)若移动机器人的历史运动环境状态为k1=8,则先由旋向信息判断移动机器人整体沿墙顺逆走向,沿墙顺时针行走,则右转,逆时针行走则左转。
将上述移动机器人判断做成表格如下:
表1移动机器人运动转向判断关系表
上述表1中,当遇到需要fx决定转向时,首先通过fx判断移动机器人沿墙运动整体顺逆走向,当由fx判断移动机器人整体走向为顺时针,则按照表2规则判断,当由fx判断移动机器人整体走向为逆时针,则按照表3规则判断。
表2移动机器人沿墙顺时针行走运动转向判断关系表
表3移动机器人沿墙逆时针行走运动转向判断关系表
为了验证本发明中算法的有效性,所以设计了移动机器人沿墙走的实验。例如移动机器人的当前运动环境状态为k=1,而历史运动环境状态为k1=2,则移动机器人左转,能够很好的做贴墙运动。移动机器人的当前运动环境状态为k=4,而其历史运动环境状态为k1=2,则移动机器人左转,能够很好地完成沿墙走的行为。移动机器人当前运动环境状态为k=5,而移动机器人的历史运动环境状态也为k1=5,所以移动机器人右转。
经过多次实验证明了移动机器人采用本发明中所提出的结合历史运动环境状态的移动机器人沿墙高效沿墙遍历算法能够十分出色的完成室内沿墙走的运动。对于本发明中所提出的移动机器人所处其他状态时,移动机器人同样也能很好地实现沿墙走的功能。
本发明针对现有沿墙导航算法的不精确性,提出了结合历史运动环境状态的移动机器人沿墙高效遍历算法,根据移动机器人的历史运动环境状态,并结合移动机器人所处的当前位置,使得移动机器人能高效、精确的完成沿墙走的导航。