OMPL学习--第一篇之简介

3 篇文章 7 订阅

OMPL 规划算法 ROS Moveit

1. OMPL简介

OMPL(The Open Motion Planning Library)是一个基于采样方法的开源机器人运动规划库(基于C++),其内的算法大多是基于RRT和RPM衍生出来的,如RRTStar、RRT-Connect等等。现有的运动规划库有很多,如STOMPSBPLCHMOP等等。其中,OMPL由于其模块化的设计、前端GUI的支持、稳定的更新,已经成为目前最主流的运动规划软件(ROS默认使用OMPL)。

2. OMPL能做什么

基于采样方法的规划方式无需考虑规划目标的维度,即不会出现维度爆炸,能够有效地解决高维空间和复杂约束下的路径规划问题,这也是OMPL能够应用于Moveit!机械臂控制的一个关键原因。对于一个N自由度的机械臂运动规划问题来说,OMPL可以在机械臂的关节空间内为末端规划一段轨迹,其中包括M个数组(轨迹由M个控制点组成),每个数组的维度为N(每个控制点下的关节序列),且机械臂在执行这段轨迹时不会与周围障碍物发生碰撞。

3. OMPL的规划算法分类

OMPL内的规划算法分为两类:

  • Geometric planners:考虑系统的几何约束和运动学约束,一般机械臂使用这类规划器就好;
  • Control-based planners:如果考虑的系统受到差分约束,则使用该类规划器。我暂时不理解什么情况使用。

特性:基于采样、概率完备、非渐进最优(RRT)\渐进最优(RRTStar)

3.1 Geometric planners

1. 综合查询方法
基于概率路线图RPM(Probabilistic Roadmap Method)。PRM先构建路线图,再通过合适的图搜索算法(如A*)得到可行路径。

  • 基于PRM
    • LazyPRM:利用延迟碰撞检测的思想来减少不必要碰撞检测的次数,从而提高规划效率
    • PRM*:可以搜索最优路径
    • LazyPRM*:带有延迟状态的PRM*
  • SPARS
  • SPARS2

常用第一个,后面的等用到再细究。

2. 单一查询方法
基于快速扩展随机树RRT(Rapidly-exploring Random Trees )。与PRM不同的是,RRT使用边搜索边采样,并构建地图的方法得到可行路径。

  • RRT:概率完备、非渐进最优
  • RRTStar:概率完备、渐进最优
  • RRTConnect:双向RRT搜索,概率完备、非渐进最优
  • Lower Bound Tree RRT(LBTRRT)
  • Sparse Stable RRT(SST)
  • Transition-based RRT(T-RRT)
  • Vector Field RRT(VF-RRT)
  • Parallel RRT(pRRT)
  • LazyRRT

前三个比较常用,后面的等用到再细究。

3.2 Control-based planners

暂时用不到,到官网简单了解一下即可。

4. Moveit!与OMPL的联系(重点)

先来看一下官网给出的说明:

OMPL官网–OMPL itself does not contain any code related to, e.g., collision checking or visualization. This is a deliberate design choice, so that OMPL is not tied to a particular collision checker or visualization front end. The library is designed so it can be easily integrated into systems that provide the additional needed components.
Moveit!官网–MoveIt! integrates directly with OMPL and uses the motion planners from OMPL as its default set of planners. The planners in OMPL are abstract; i.e. OMPL has no concept of a robot. Instead, MoveIt! configures OMPL and provides the back-end for OMPL to work with problems in Robotics.

在这里插入图片描述

  • 单独的只涉及运动规划的库
  • 模块化设计,可独立运行
  • 不包含任何碰撞检测或可视化的代码,提供接口
  • Moveit!通过插件机制(plugin interface)与OMPL建立连接与交互,OMPL规划出的结果是抽象的,没有机器人的概念,这个结果需要通过Moveit!处理生成机器人末端的运动轨迹

5. FCL碰撞检测库与OMPL的联系

FCL(Flexible Collision Library)是一个单独的开源碰撞检测库,该库广泛应用于多种运动规划软件,如Moveit!、OpenRave、Implapp等,并为它们提供物体之间的碰撞检测、距离计算、公差验证、物体再运动状态下的碰撞检测等功能。FCL 能够检测传统的三角平面和包括球体,方块,柱体等基础形状体的碰撞或者距离检测。此外,除了可以检测基本物体形状的障碍物,还可以对点云进行碰撞检测。 FCL 也可以处理可变形的模型,它不对模型做任何关于变形的假设,并且假定在每个时间点上物体的边界被表示为三角网格。
FCL在碰撞检测中,会基于模型自身春乘以膨胀系数来执行检测,对于机械臂来说,会以圆柱体等基本形状进行包络,从而节约碰撞检测的时间。具体检测过程是通过正运动学计算各连杆的位置信息,然后通过关节中心位置确定包络位置,再调用AABB层次包围树模块将其分解储存,最后在每一次采样中进行碰撞检测。

巧合的是,基于采样的规划算法里面也有一个碰撞检测的过程,当然这个和FCL是两个概念,要注意区分。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值