宋颖丽,李彩虹
(山东理工大学计算机科学与技术学院,山东 淄博 255049)
移动机器人漫游行为是指在没有给定目标和任务的情况下,机器人在环境中随意运动,并自主躲避障碍物的行为.这种行为常用于机器人探索未知环境和制作地图.机器人在完成具有漫游性质的任务时,最重要的是避障.目前常用的避障方法有栅格法[1]、模糊控制法[2]、行为控制法[3]等.其中行为控制法是一种重要的智能控制方法,具有计算量小、实时性强、能实现多种复杂功能的特点,近几年得到了广泛应用.
本文针对Pioneer 3移动机器人,采用设计紧急行为、避障行为和自由行为的方法,使机器人在漫游运动中能够实时有效地避开障碍物.并利用随机动作概念解决了传统算法中容易出现的死锁问题.
研究中所用到的移动机器人是先锋机器人Pioneer 3.机器人的头部装有8个方向的声纳传感器,传感器的位置如图1所示.
图1 传感器分布图形
在运动规划中,将机器人模型化为点状机器人,环境中的障碍物根据机器人的实际尺寸及安全性要求进行“膨化”处理.机器人的传感区域定义为位于机器人正前方的一个半径为r_sense的半圆,机器人每前进一步,实时扫描正前方180°范围内的环境信息.0号和7号传感器探测到的障碍物距离信息对机器人前进影响很小,为减少数据量,便于实时传输数据,本文只采用1~6号传感器探测到的距离信息Dobs={d1,d2,d3,d4,d5,d6}.每个数据对应相应方向上测得的最近障碍物的距离信息.假设在这个方向上所检测到的障碍物是obs1,obs2,…,obsn,则:
依据机器人与障碍物距离的远近程度,将移动机器人探测到的半圆形范围分为3个区域[4],从内到外依次为危险区、避障区和安全区,如图2所示,其中“O”点为机器人当前位置.区域的大小设计原则是:
1)危险区的大小依据机器人的安全性要求设置.此区域中,机器人距离障碍物很近,要保证机器人的安全,不能与障碍物碰撞.
2)安全区大小的设置主要依靠经验.估计出哪个距离范围内的障碍物对机器人运动影响小.
设置距离阈值d_danger,d_saf e.图2中,d_danger=OA,d_saf e=OB,r_rense=OC.通过声纳传感器探测的环境信息及以下条件判断机器人所处的区域:
1)如果对任何i(i=1,…,6)都有di≤d_dnger,则机器人处于危险区.
2)如果∃i使d_dnger<di≤d_safe,则机器人处于避障区,机器人运动时要考虑避开障碍物.
图2 探测区域划分
3)如果对任何i(i=1,…,6)都有di>d_saf e,障碍物与机器人的距离较远,对机器人运动影响很小,障碍物可以不予考虑,此区域中机器人可自由移动.
移动机器人在环境未知的情况下,每前进一步要根据传感器探测到的实时环境信息做出不同决策,即选择相应的行为.根据机器人与障碍物的距离关系,将机器人的漫游行为分为在三个区域内的不同行为:危险区内的紧急行为、避障区内的避障行为和安全区内的自由行为.紧急行为在机器人与障碍物非常接近时启动;避障行为使机器人避免与障碍物发生碰撞;自由行为使机器人在安全区随意运动;最后机器人依据行为融合规则,决定每一步要采取的行为.
如果机器人探测到的6个方向上的距离信息都满足di≤d_danger,则机器人处于危险区.为避免与障碍物发生碰撞,机器人立即停止运动.为逃离障碍物的危险区,采取以下策略:以当前运动方向为参考,原地顺时针旋转 θ(10°≤θ≤50°)角度,θ为定值,大小自定义.每次旋转后,探测器实时检测机器人的环境信息,一旦检测到机器人脱离障碍物危险区,则停止旋转,并根据当前的环境信息采取相应的避障行为,一步步走出危险区.
移动机器人处于避障区内,要根据当前探测到的环境信息选择最佳避障动作.以机器人当前的运动方向为参考,将机器人下一步的移动方向量化处理,取为 Δ θ=kΔ α,(这里取k=0,±1,±2,±3,±4,±5,Δ α=10°).假设顺时针旋转为正,逆时针旋转为负.可取的动作为11个,a0~a10表示在 Δ θ=kΔ α中,k分别取-5,-4,-3,-2,-1,0,+1,+2,+3,+4,+5时所对应的动作.11个动作的位置分布如图3所示.
图3 位置分布图
在运行环境中,障碍物对机器人排斥力的大小反映了机器人距离障碍物的远近程度.根据机器人上传感器的位置,检测到6个方向(1~6号传感器)上障碍物的距离信息为Dobs={d1,d2,d3,d4,d5,d6},则其对应方向上的排斥力为
di为相应方向上的距离信息.在时刻n机器人受到的排斥力之和为
di的幂次m的大小根据障碍物对规划路径的影响程度来选择,这里取为2.ki为相应方向上的距离加权值,并且满足 ∑ki=1.
距离加权值ki的设置采用固定加权值和动态加权值两种设置方法.
1)固定加权值方法
依据6个方向上障碍物对规划的影响程度,给出一组固定的数值K={k1,k2,k3,k4,k5,k6}.在运行过程中k1~k6始终保持不变.这种方法使用简单,但当环境信息动态改变时,加权值不能很好地反应障碍物对规划的影响.
2)动态加权值方法
依据探测到的距离信息,实时调整每个方向上距离加权值的大小.如:当探测到某方向上障碍物与机器人的距离di>d_safe时,此方向上障碍物对机器人运动的影响可以不考虑,相应的该方向上距离加权值ki=0,而其它方向上的距离加权值则相应增大.本文采用动态权值设置法,设计加权值调节器,依据机器人与障碍物的距离关系信息,实时调整每个方向上距离加权值的大小.
取最小距离阈值d_min和最大距离阈值d_max(d_min,d_max的大小自定义).如果对于任何i(i=1,…6)都有di≤d_min,相应的fi→∞,即F→∞,此时判为发生碰撞.而当di≥d_max时,则相应的fi=0.合力总体较大表明机器人离障碍物较近,反之则较远.相邻时刻的受力之差为
受力之差的正负反映了相邻时刻机器人与障碍物的距离变化.如果Δ F(n)<0,表明机器人正远离障碍物;反之,则表明机器人靠近障碍物.
机器人下一步的运动方向计算步骤如下:
1)计算机器人当前的环境信息
通过声纳传感器探测机器人当前的环境信息S(n)={Pxy(n),θr(n),Dobs(n)}.其中Pxy(n)是机器人的位置坐标,θr(n)为机器人当前的移动方向,Dobs(n)={d1(n),d2(n),d3(n),d4(n),d5(n),d6(n)}为探测到的6个方向上的障碍物的距离信息.依据公式(3),计算出此时机器人受到的排斥力之和F(n).
2)机器人前进一步可能受到的排斥力
机器人下一步可选择的动作为a0~a10,如果机器人选择a0动作,则执行此动作后机器人探测到的障碍 物距离Dobs0(n+1)={d'1,d'2,d'3,d'4,d'5,d'6},那么机器人此时受到的排斥力记为F0(n+1).若机器人选择a1动作,则受到的排斥力记为F1(n+1).依次类推,机器人分别选择动作a0~a10后,其对应的排斥力为F0(n+1)~F10(n+1).
3)比较相邻时刻机器人的受力之差,并选择最优动作
由步骤2)可得,下一时刻,机器人可能受到的排斥为F0(n+1)~F10(n+1).则相邻时刻的受力之差用公式表示为
求Δ Fi(n)的最小值:
f为Δ Fi(n)的最小值,j为最小值所对应动作的下标.则机器人下一步的运动方向为
即机器人以当前运动方向为参考,旋转aj所对应的角度.
4)更新机器人前进一步后的环境信息.
机器人每前进一步,都要重新检测机器人的环境信息S(n+1)={Pxy(n+1),θr(n+1),Dobsj(n+1),再根据上述步骤求出机器人下一时刻的运动方向,实时的避开障碍物.
机器人进入安全区后,障碍物对机器人的运动影响很小.依据所设计的避障行为算法,如果机器人处于大范围的无障碍区,在状态S(n)下,机器人所受的斥力F(n)=0,分别执行11个不同动作后,机器人的状态为Si(n+1),所对应的斥力为Fi(n+1)=0.利用公式(5)~(7),求取机器人下一步的运动方向时,选择的都是a0动作所对应的方向,即在当前运动方向的基础上逆时针旋转50°.由此就会出现机器人在此区域内徘徊,以圆为运动轨迹的情况,即出现死锁,如图4所示.在仿真图形中障碍物用圆形物体表示,路径用星号来表示,发出探测线的位置为机器人的起始点.
图4 机器人死锁现象
为避免机器人在进入安全区后发生死锁情况,本文提出随机动作概念.当机器人11个方向上相邻时刻的受力之差都为0时,表明机器人进入死锁状态.这时使用随机动作,即机器人随机选择a0~a10中的任一动作ai.机器人下一步的移动方向为在当前运动方向的基础上旋转动作ai所对应的角度.由于机器人每次选择的动作,有很大的随机性,出现连续多次选择同一动作的几率很小,所以机器人做圆形轨迹运动的情况很少发生.应用此概念后,机器人发生死锁的几率大大降低.
死锁问题的发生除上述提到的情况外,还有可能在机器人左右两侧的障碍物的分布对称时发生,此时机器人在此区域来回往复运动,但始终不能走出此区域.解决此种问题的方法同样是使用随机动作概念.
行为融合是决定机器人如何漫游的关键因素.机器人根据探测到的6个方向上的环境信息,判断其所处区域,并选择相对应的行为.具体规则如图5所示.
图5中di(i=1,…,6)为相应方向上测得的最近障碍物的距离.当对任何i(i=1,…6)都有di≤d_danger时,机器人采取紧急行为;当对任何i(i=1,…6)都有di>d_safe时,机器人执行自由行为;当检测到的距离信息不符合以上两种条件时,机器人执行避障行为;判断结束后,机器人根据融合结果运动,同时声纳传感器重新检测当前的环境信息.
图5 融合规则示意图
利用以上设计的漫游行为,对移动机器人在具有不同障碍物的环境进行仿真.仿真图形如图4所示.仿真结果如图6~9所示.
图6 普通障碍物环境
仿真结果表明,机器人在如图6所示障碍物的环境下中,能有效的躲避障碍物,并能在大部分区域中漫游.在图7所示的具有特殊的U型障碍物的环境,机器人能逃离U性区域并漫游.图8表明机器人在处于危险区时,利用紧急行为,能快速逃离危险区.图9是机器人在处于大范围的无障碍物的区域内,利用随机动作,避免了死锁情况的发生.
图7 U型障碍物环境
图8 存在危险区的环境
图9 安全区较大的环境
本文提出了一种移动机器人在不确定环境下漫游行为的设计方法,仿真结果表明,算法具有以下特点:
1)能够在具有U型障碍物和危险区的复杂环境下有效地实现漫游行为.
2)通过使用随机动作,解决了传统算法中容易出现的死锁问题.
3)障碍物是以圆形实现的,但是算法同样适用于其它形状的障碍物.
算法能较好地完成机器人漫游行为,但也存在一些不足之处,如规划路径中存在多段重复的漫游路径,以及机器人尚不能完全遍历环境中的障碍物.这些问题将是今后研究的方向及重点.
[1]章苏书,吴敏,曹卫华.一种局部动态环境下的避障算法[J].计算机技术与自动化,2003,22(1):12-15.
[2]Das T,Kar I N.Design and implementation of an adaptive fuzzy logic-based controller for wheeled mobile robots[J].IEEE Transactions on Control System Technology,2006,14(3):501-510.
[3]单建华.基于行为的实时路径规划[J].控制工程,2009,16(3):367-370.
[4]宋梅萍,顾国昌,张汝波.移动机器人的自适应式行为融合方法[J].哈尔滨工业大学学报,2005,26(5):580-590
[5]李彩虹.移动机器人智能体混合式体系结构研究[D].济南:山东大学,2007