当前位置:   article > 正文

【运动规划】人工势场构造扩展&多点人工势场组合控制高自由度机器人_人工势场结构用途

人工势场结构用途

Robot Motion Planning: A Distributed Representation Approach




1 一些表示

  • A:机器人,机器人上的点成为控制点(Control Points),用p表示

  • W:机器人所处的空间(Work Space),可以包含一系列bitmap,W中的点用x表示

  • C:Configuration,指定机器人在W中的位置、朝向,进一步可以对应到机器人身上的控制点,C集合的元素用q表示

  • C f r e e C_{free} Cfree:不会使机器人和障碍物发生碰撞的一系列Configuration的集合

  • BM:Bitmap,反映W中的障碍物分布情况,从Workspace中的x映射到1/0,1表示有障碍,0则为无障碍

在这里插入图片描述

  • * W e m p t y W_{empty} Wempty:W中满足BM(x)=0的点集,即非障碍物区域

  • X:前向运动映射(Forward Kinematic Map),X(p,q)→x,即从C作用于A,映射到W
    在这里插入图片描述

2 W域势场(Work Space Potential)-- V p i V_{p_i} Vpi

2.1 Work Space Potential

在W域构造一个势场 V p i V_{p_i} Vpi,使每一个非障碍物点x都对应一个Potential值

在这里插入图片描述

下角标 p i {p_i} pi代表控制点,对于机器人上的不同控制点,可能有不同的目标位置,甚至障碍物等信息有差异,故每个控制点可以对应自己单独的势场。

2.2 势场需要达到的目标

构造 V p i V_{p_i} Vpi有如下两个目标:

  • 势场仅在目标处有唯一全局极小值
  • 给定任意起点,沿梯度下降方向找到一条通往目标的path,且距离障碍物越远越好

2.3 计算W域势场

为实现上述目标,用下面两步计算 V p i V_{p_i} Vpi

2.3.1 计算 d 1 d_1 d1,并获得skeleton

对每个 x ∈ W e m p t y x∈W_{empty} xWempty,计算 d 1 ( x ) d_1(x) d1(x),步骤如下:

① 设置地图边缘和障碍物外缘的点的 d 1 d_1 d1值为0
② 设置其邻点的 d 1 d_1 d1值为其 d 1 d_1 d1值+1
③ 循环往复进行传播,直到 W e m p t y W_{empty} Wempty中的所有点都计算完毕
在这里插入图片描述
d1是从地图边缘和障碍物外缘同时向外递增传播的,其相遇处将形成d1的极大值,这些具有 d 1 ( x ) d_1(x) d1(x)极大值的x点将构成S(Work Space Skeleton “骨架”),如下图:

在这里插入图片描述

上图第一幅图对应第一张图的Skeleton。观察几幅Skeleton,可以发现,原地图上连通的区域,Skeleton上也一定会相连,作者提到其形式和Voronoi图很相似。

2.3.2 获得 d 1 d_1 d1和skeleton后,计算 V p i V_{p_i} Vpi

这里作者给出两种算法,NF1和NF2

NF1不使用d1和skeleton,直接设置目标点 V p i ( x g o a l ) = 0 V_{p_i}(x_{goal})=0 Vpi(xgoal)=0,从目标点向外递增传播(遇到障碍物时停止,不传播),得到的W域势场如下:
在这里插入图片描述
显然,它满足了第一个目标而未满足第二个目标,能沿梯度下降到达目标,但却并非尽可能远离障碍物。

NF2要用到d1和skeleton,算法如下:
在这里插入图片描述
简单来说,就是先把目标点连进Skeleton,构成新的Skeleton,先在Skeleton内由目标开始递增传播,Skeleton传播完成后再由Skeleton向全图递增传播。这样一来,在地图上任意给定起点,机器人都会沿梯度方向先行驶到Skeleton上,再顺着Skeleton上的梯度行驶到目标。联系Skeleton的特点,可以发现如此生成的势场可以同时满足两个目标。

在这里插入图片描述
关于生成势场的方式,作者提出可以不限于他给出的方式,比如若将算法第四步 V p ( y ) V_p(y) Vp(y)设置为 V p ( x ) + 1 / d V_p(x)+1/d Vp(x)+1/d,则靠近障碍物外缘/地图边缘时Potential值将趋于无穷。

3. C域势场(Configuration Space Potential)-- U U U

3.1 Configuration Space Potential

作者给出的C域势场计算公式如下:

在这里插入图片描述
对于任意一个Configuration值,即q而言,机器人的C域势场为它在该Configuration下,所有控制点在其各自W域势场下的Potential值的一种组合(由G函数决定)

个人理解,区别于W域势场将机器人视为单点进行单一约束,C域势场可以同时考虑多个控制点,可以用于高自由度机器人甚至机械臂的运动规划。

3.2 Configuration域离散化

δ \delta δ:W域地图分辨率

δ m i n \delta_{min} δmin δ m a x \delta_{max} δmax:同一场景下会有一套分辨率由低到高的地图,高分辨率数值小,用 δ m i n \delta_{min} δmin表示,低分辨率数值大,用 δ m a x \delta_{max} δmax表示

r m i n r_{min} rmin r m a x r_{max} rmax r m i n = − l o g 2 ( δ m a x ) r_{min}=-log_2(\delta_{max}) rmin=log2(δmax) r m a x = − l o g 2 ( δ m i n ) r_{max}=-log_2(\delta_{min}) rmax=log2(δmin)

这里 r m i n r_{min} rmin对应W域低分辨率, r m a x r_{max} rmax对应W域高分辨率

类似地,用 Δ \Delta Δ R R R来表示C域分辨率, R = − l o g 2 ( Δ ) R=-log_2(\Delta) R=log2(Δ)

当Configuration离散化后,每个q之间的间隔为 Δ \Delta Δ,用偏导数表示W域坐标随C域的q变化的情况(个人觉得,简单情况下这个值可以等于1吧),二者乘积即为相邻的q的变化造成的W域坐标的变化大小。
在这里插入图片描述
我们希望Configuration离散化的结果是相邻的q的变化不要造成太大的W域坐标的变化,那么令上式=nbtol× δ \delta δ,也就是W域的几个分辨率(nbtol表示一个小整数),可得满足要求的C域分辨率为
在这里插入图片描述
用对数形式表示为
在这里插入图片描述
将下列值及nbtol=2带入上式可得
在这里插入图片描述
在这里插入图片描述

那么对数关系的-1,也就对应于x、y这两维上C域的分辨率是W域的一半。其实也刚好对应于nbtol的取值。

3.3 组合策略
  • 方法1:各控制点势场加权求和
    在这里插入图片描述
    特点:“雨露均沾”
    缺陷:各控制点都想尽可能到达自己的目标位置,加剧了这种竞争。并且这种加权组合容易产生local minima,造成规划失败

  • 方法2:取最小值
    在这里插入图片描述
    特点:“捷足先登”,哪个控制点已经离自己的目标点更近了,就优先让它到达
    优势:减小了产生local minima的几率
    缺陷:一旦一个控制点抵达目标,G值将降至0,其他控制点将不能再在当前基础上向其目标运动
    改进:ε为较小的实数,举例可以取0.1,需要根据不同机器人进行不同选择以达到最佳效果
    在这里插入图片描述

  • 方法3:取最大值
    在这里插入图片描述
    特点:“锱铢必较”
    缺陷:更加加剧竞争,更容易产生local minima(但一定程度上降低其volume)
    优势:很适合于高自由度机器人和机械臂


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/879215
推荐阅读
相关标签
  

闽ICP备14008679号