运动规划(Motion Planning):要让一个机器人实现运动规划,需要先将机器人抽象到构形空间(C-Space)。MoveIt就可以帮大家把这些工作给做了,只需提供机器人URDF模型,就可以调用几大运动规划库的规划算法(如OMPL,SBPL,CHMOP),自动生成机器人运动轨迹。之前跟着教程走的时候,很多内部结构不是很清晰,它就像是一个黑匣子,只管启动launch,就会返回机器人所需的运动路径,置于它使用的到底是什么运动规划库,什么路径规划算法,这些细节都没有关注过。
运动规划器 (motion planner):MoveIt! 通过插件机制(plugin interface)与运动规划器(motion planner)进行交互,可以使用多个库的不同运动规划器,使得 MoveIt! 扩展性更强!默认使用的运动规划器是 OMPL(Open Motion Planning Library) 库。如下图所示,Planning Pipeline提供了很多规划器的接口,通过导入planning scene 导入octomap作为机器人环境信息https://blog.youkuaiyun.com/qq_34935373/article/details/104794634,然后通过路径规划算法,完成避障的路径规划。
路径规划算法:先放上官方链接,方便查看 http://ompl.kavrakilab.org/planners.html
OMPL是基于采样方法的运动规划库,其规划算法可以分为两类:
Geometric planners
Control-based planners
特性:基于采样,概率完备,非最优/渐进最优
1. Geometric planners
多查询规划器
这些规划器构建了一个可用于多个查询的整个环境的路线图。
概率路线图法
这是基于采样的算法。使用一个线程来构造路线图,而另一个线程则检查路径是否存在于起始状态和目标状态之间的路线图中。OMPL包含一些PRM的变体:
LazyPRM
这个规划器类似于常规的PRM,但是“懒惰地”检查顶点或边的有效性,也就是说,只有当它是候选解决方案路径的一部分时。
PRM*
当常规PRM尝试将状态连接到一个固定数量的邻居时,PRM*随着路线图的增长而逐渐增加连接尝试的次数,从而提供对最优路径