机器人运动算法学习笔记(一)

Bug Algorithms

Bug1算法

机器人运动算法学习笔记(一)_第1张图片  机器人运动算法学习笔记(一)_第2张图片

        Bug算法假定机器人是平面上的一个点,通过接触传感器或者零距离传感器进行避障。假设该机器人是一个具有完美定位(无定位误差)的点,该点具有一个接触传感器,当该点机器人“碰触”障碍物边界时,该传感器可以检测到该障碍物边界。机器人还可以测量任意两点x和y之间的距离d(x, y)。最后,假设工作空间是有界的。

         start和goal分别标记为qstart和qgoael。让qLO = qstart和m线是连接qLi和qgoal的线段。一开始,i = 0。Bug1算法表现出两种行为:到目标的运动和边界跟随。在运动到目标的过程中,机器人沿着m线向qgoal移动,直到遇到目标或障碍物。如果机器人遇到障碍物,让qH1为机器人第一次遇到障碍物的点,称这个点为命中点。然后机器人绕过障碍物,直到回到qH1。然后,机器人在障碍物周围确定离目标最近的点,并穿过这个点。这个点称为离开点,标记为qL1。从qL1开始,机器人又一次直接向目标前进,即,它将重新调用从动作到目标的行为。如果连接qL1和目标的直线与当前的障碍相交,那么就没有到达目标的路径;注意,这个交叉将在离开qL1后立即发生。

机器人运动算法学习笔记(一)_第3张图片

Bug2算法

        在运动到目标的过程中,机器人在m线上向目标移动;然而,在Bug2中,m线连接qstart和qgoal,因此保持固定。当机器人遇到障碍时,会调用边界遵循行为,但这种行为与Bug1不同。对于Bug2,机器人会绕过障碍物,直到它到达m线上一个比最初接触障碍物的点更接近目标的新点为止。此时,机器人向目标前进,如果遇到目标,重复这个过程。如果机器人再次遇到从m线出发的初始点,则没有到达目标的路径(图2.3、2.4)。设为机器人当前位置,i = 1, qLO为起始位置。有关Bug2方法的描述,请参见算法2

机器人运动算法学习笔记(一)_第4张图片   机器人运动算法学习笔记(一)_第5张图片

机器人运动算法学习笔记(一)_第6张图片

通过比较两种算法经过的长度:如果经过n个障碍物,第一种算法经过的距离:

pi为障碍物的周长。

第二种算法经过的距离:

      

假设路径长度比较复杂,与障碍物ni次相交。

Tangent Bug算法

      Tangent buig算法是对bug2算法的一种改进,相较于前两种,它使用360度无限方向分辨率的距离传感器确定到目标的较短路径,我们用原始距离函数对该距离传感器进行建模。对于处在每个位置的机器人,在它所处的位置发射出射线,对于每个θS1,ρ值(x,θ)是到该角度到障碍的最近的距离。同时因为传感器的距离范围有限,定义饱和的距离函数如下面第二个函数:

 

机器人运动算法学习笔记(一)_第7张图片    机器人运动算法学习笔记(一)_第8张图片

规划器假设机器人可以检测不连续的pR如上图,对于固定的点x,连续性间隔被定义为自由空间边界上的点集,并对应相应的角θ.细线是原始距离函数的值,ρR(x,θ),对于来自固定点的图像,粗线表示不连续性,这是由于障碍物遮挡另一个或达到感测范围而产生的。请注意,在自由空间中终止的线段表示无限长的光线。这些间隔的端点出现在ρR(x,θ)失去连续性的地方,这是由于一个障碍物阻挡另一个障碍物或传感器达到其范围极限。端点表示为Oi。下图中包含ρR失去连续性的示例。点O1,O2,O3,O5,O6,O7和O8对应于与阻挡图像的其他部分的障碍相关联的连续性损失,其中光线与此处的障碍物相切。点O4是不连续的,因为障碍物边界落在传感器的范围之外。 O1和O2,O3和O4,O5和O6,O7和O8之间的自由空间边界上的点集是连续性的间隔。


        当机器人最初感测到障碍物时,半径R的圆变得与障碍物相切。 紧接着,此切点分成两个Oi,它们是间隔的端点。 如果障碍物位于机器人前方,则该间隔与连接机器人和目标的区段相交。在往目标点的运动过程中,也是同前面的两个bug算法,分成两个部分。

        然后机器人向Oi移动,最大程度地减少到目标的启发距离。 启发式距离的示例是总和d (x,Oi)+ d(Oi,qgoal)。 (当考虑关于障碍物的可用信息时,启发式距离可能更复杂。在下图左中,机器人从书中看到wo1并且驱动到O2,因为i = 2使d(x,Oi)+ d最小化 (Oi,qgoal)。 当机器人位于x时,它无法知道wo2阻挡了从O2到目标的路径。 在下图(右)中,当机器人位于x但目标不同时,它有足够的传感器信息来推断wo2确实阻挡了从O2到目标的路径,因此朝向O4行驶。 因此,即使向O2行驶最初可能最小化d(x,Oi)+ d(Oi,qgoal)而不是向O4行驶,规划器有效地为d(O2,qgoal)分配无限成本,因为它有足够的信息来推断 任何通过O2的路径都不是最理想的。

机器人运动算法学习笔记(一)_第9张图片       机器人运动算法学习笔记(一)_第10张图片

并且机器人在靠近目标的过程中会不断地更新O点集,就这样机器人向着目标运动,直到不再更新到目标的启发式距离的值。

       当机器人切换到边界跟随时,它在障碍物的感测部分上找到点M,其在障碍物上具有到目标的最短距离。 请注意,如果传感器范围为零,则M与Bug1和Bug2算法的命中点相同。 这种被感知的障碍物也被称为跟随障碍物。 我们区分了跟随障碍物和阻挡障碍物。 设x为机器人的当前位置。 阻挡障碍物是传感器范围内与段(1-λ)x +λqgoal∀λελ[0,1]相交的最近障碍物。 最初,阻挡障碍物和跟随的障碍物是相同的。现在,机器人以与运动到目标行为相同的方向移动。 它在所选方向的后续障碍物上不断向Oi移动(图2.10)。 在进行此动议时,规划师还会更新两个值:dfollowed和dreach。 dfollowed是感测到的边界与目标之间的最短距离。 设∧是x的视线范围内的所有点其中范围R 在障碍物WOF。 值dreach是目标与机器人视线内跟随障碍物上最近点之间的距离,即

机器人运动算法学习笔记(一)_第11张图片

M是局部最小值点,当dreach

机器人运动算法学习笔记(一)_第12张图片

 

例如运行图2.12。图2.11包含一个传感器范围为零的机器人的路径。在这里,机器人调用一个动作到目标的行为,直到在命中点H1遇到第一个障碍。与Bug1和Bug2不同,遇到一个生命点不会改变机器人的行为模式。机器人通过向右转并沿着第一个障碍物的边界,继续完成从运动到目标的行为。机器人向右转是因为这个方向最小化了它到目标的启发式距离。机器人在D1出发点离开这个边界。机器人继续进行运动到目标的行为,绕过第二个障碍,直到在H3遇到第三个障碍。机器人向左转弯并继续调用移动到目标的行为,直到到达最小点M3。现在,规划器调用边界遵循行为,直到机器人到达L3。注意,由于我们的感知范围为零,所以dreach是机器人与目标之间的距离。这个过程一直持续到机器人达到目标。只有在Mi和Li,机器人才会在行为之间切换。图2.12、图2.13分别给出了机器人感知范围有限和无限的例子。

机器人运动算法学习笔记(一)_第13张图片

机器人运动算法学习笔记(一)_第14张图片

机器人运动算法学习笔记(一)_第15张图片

你可能感兴趣的:(机器人运动算法学习笔记(一))