编辑简介
VFH全称(Vector Field Histogram)矢量场直方图(翻译的不准,有更好的翻译请留言哦)。VFH是美国Umich大学Borenstein和Koren于1991年研究出来的。当时的研究本来是基于APF的,但是后来他们发现APF的诸多问题后,决定提出一种新的算法,能够克服APF的问题。
编辑算法
VFH完全不同于APF方法,在APF方法中,障碍物被考虑成一个个点的组合,整个导航过程就像在一个充满电子的世界,机器人就是一个正电子,障碍物也是正电子,目标就是一个大大的负电子,散发着迷人的磁场,哈哈,开始游泳了。有高中物理知识的都知道,同性相斥,异性相吸!然后我们的小机器人就在这个电子海里游来游去,苦苦寻觅自己的另一半,一个负电子。啊噢,是不是想起了其它什么东西?不过问题也来了,所有的正电子都会对机器人产生影响,只不过这个大小和强弱由距离决定。但是其实多数情况下,机器人正电子和路上的正电子是互不干涉的,我走我的阳关道,你走你的独木桥,大家互不影响。只要机器人没有走到一个设定的范围内,但是某些情况下,机器人不得不靠近一些正电子,比如过独木桥,这时桥旁的几个正电子就开始收费了。非得让机器人留下点买路钱。于是我们家机器人就不高兴了,你要钱,我不走了。反正那个美妙绝伦的负电子还远的很,后面还不知道要多少买路费呢,大爷我不走了。留在这里,咱们死耗着,看谁厉害。结果机器人就真的不动了哦。
Borenstein和koren看到这种情况后,决定废除这种过桥要买路钱的做法!要社会主义嘛!于是大笔一挥,画出了一个小饼。如图所示:
 VFH 局部地图 |
他们定了一个新规矩,大家都给自己在图上找个位置,位置越准确,房子价值也就越高,如果有人要从你们家门口过,那就不要收钱了,如果要从你家里过,或者要把你家拆了再过,那就再考虑收费吧,收的多少我们以后再议。(B和K忘了制订收费标准了)。这样,在VFH中,我们的机器人能够从人家家门口过了。具体怎么过,我们看看下面一张图就明白了。
 VFH 算法 |
哦,原来每个方位的房子价值被累积起来了。图a中黑色的柱状图的高低表明那个方向房子累积总值,也就是说,莫个方位上,越高价值的房子破坏成本就越大。最好别往哪里走,咱们还是往平民区走吧。柱状图越矮,说明那个方向的房价便宜,就往那里走,就算撞了,咱们也赔得起。最好就是什么房子都没得,如图a 中0-30度,200-240度,以及300-360度那几段,完全是空地嘛!对应的就是图B中的几个介于C-A,A-B以及B-C的空旷地了。这样根据经济学原理,走空地的成本最低,机器人就会朝空地走咯。
慢着,你不拆人家屋子了,但是有时候,屋与屋之间的路可能正好够你通过,或者你只需要付很少的费用就能通过,再加上如果这条路是最短的路程的话,从整个路程的经济成本来看,就算付少少钱也是划算的。虽然走空地免费,但是免得是买路费,油费和宝贵的时间还是要付的,有时还会更多。于是一个临界点计算公式就提出来用来平衡这些花费了。
G=a*target_direction+b*wheel_direction+c*previous_direction
target_direction 是目标朝向
wheel_direction是机器人现在的朝向
previous_direction是先前的目标朝向
a,b,c是影响因子。
每一个方向都会用上面的公式计算其总的花费,机器人将会选择花费最少的方向前进。HOHO。 好像很简单的样子哦!
最新的进展有VFH+和VFH*,大致原理相同,不过多考虑很多其他因素,比如机器人的尺寸以及速度等。
编辑参考资料
- VFH介绍 :http://www-personal.umich.edu/~johannb/vff&vfh.htm
- VFH+ 介绍:Ulrich, I. and Borenstein, J., 1998, "VFH+: Reliable Obstacle Avoidance for Fast Mobile Robots." Proceedings of the 1998 IEEE International Conference on Robotics and Automation. Leuven, Belgium, May 16-21, 1998, pp. 1572-1577.
- VFH*介绍:Ulrich, I. and Borenstein, J., 2000, "VFH*: Local Obstacle Avoidance with Look-ahead Verification." Proceedings of the 2000 IEEE International Conference on Robotics and Automation, San Francisco, CA, April 24-28, 2000, pp. 2505-2511.