从零开始的OMPL库算法学习记录(0)
写在开头
毕设要做基于moveit的零件抓取,现在进度卡在解决place_pose_orientation的倾斜问题,所以开始学习moveit下的ompl库。希望能坚持下去,并分享给大家。本学习记录只关注算法原理,不关注程序实现。
OMPL
ompl(The Open Motion Planning Library)的全称是开源运动规划库,基于采样方法,包含了各种先进的路径规划算法。其算法分为两类,Geometric planners和control-based planners。在moveit生成的ompl_planning.yaml文件中,可供选择的算法有以下几种:
- SBL - EST - LBKPIECE - BKPIECE - KPIECE - RRT - RRTConnect - RRTstar - TRRT - PRM - FMT - BFMT - PDST - STRIDE - BiTRRT - LBTRRT - BiEST - ProjEST - LazyPRM - LazyPRMstar - SPARS - SPARStwo
看起来一头雾水。其默认选择为RRTConnet。
采样算法
opml库中的算法是基于采样的,那什么是采样算法呢?采样算法又称蒙特卡罗方法。它解决的问题是:给定一个概率分布p(x),如何让计算机生成满足这个概率分布的样本。 这个问题就叫采样。其本质是对随机现象的模拟,根据给定的概率分布 ,来模拟产生一个对应的随机事件。
首先我们来看一个简单的例子,假设我们想对下面的二项分布进行采样:
我们如何采样得到X的值?我们会很毫不费力地想到“抛硬币”,如果硬币正面朝上,则X=1,否则,X=0。那计算机怎么做,使用随机数生成器生成0到1之间的随机数r,k如果r<0.5,则X=1,否则,X=0。