本节介绍MoveIt中的运动规划及其相关组件
目录
1.运动规划插件(Motion Planning Plugin)
2.运动规划请求(The Motion Plan Request)
3.运动规划结果(The Motion Plan Result)
4.运动规划适配器(Motion planning adapters)
4.1 修正起始状态界限(FixStartStateBounds)
4.2 修正工作空间界限(FixWorkspaceBounds)
4.3 修正起始状态碰撞(FixStartStateCollision)
4.4 修正起始状态路径约束(FixStartStatePathConstraints)
4.5 添加时间参数化(AddTimeParameterization)
4.6 求解约束坐标系(ResolveConstraintFrames)
5.开源运动规划库OMPL(Open Motion Planning Library
1.运动规划插件(Motion Planning Plugin)
MoveIt通过插件接口与不同的运动规划器进行交互,使其能够轻松扩展以使用来自多个库的不同运动规划器。这些接口通过ROS动作通信或服务通信实现。默认情况下move_group使用OMPL作为其主要的运动规划器,并通过MoveIt设置助手配置与OMPL的接口。其他默认可用的规划器包括Pilz工业运动规划器和CHOMP。
2.运动规划请求(The Motion Plan Request)
运动规划请求定义了你希望运动规划期执行的任务,通常包括将机械臂移动到不同的关节空间位置或末端执行器移动到新的姿态。运动规划请求默认会检查碰撞(包括自碰撞和附加物体)。用户可以通过参数指定规划器和运动规划器需要检查的约束条件,MoveIt提供了内置的约束:
-
Position constraints:将链接的位置限制在空间区域内。
-
Orientation constraints:将链接的方向限制在指定的滚动、俯仰或偏航限制内。
-
Visibility constraints:限制机器人链路上的点位于特定传感器的可见性锥内。
-
Joint constraints:限制关节位于两个值之间。
-
User-specified constraints:也可以使用用户定义的回调指定自己的约束。
3.运动规划结果(The Motion Plan Result)
move_group节点会根据运动规划请求生成期望的轨迹。这个轨迹将移动机械臂(或任何一组关节)到期望的位置。结果是一个带有时间参数化的轨迹,而不仅仅是路径。move_group将使用指定的最大速度和加速度(如果指定)来生成符合关节级别速度和加速度约束的轨迹。
4.运动规划适配器(Motion planning adapters)
完整的运动规划流程将运动规划器与规划请求适配器链接在一起。 规划请求适配器允许对运动规划请求进行预处理和对运动规划响应进行后处理。预处理在特定情况下非常有用,例如,机器人的起始状态略超出指定的机器人关节限制时。后处理需要进行一些其他的操作,例如,将为机器人生成的路径转换为时间参数化的轨迹。
MoveIt 提供了一组默认的运动规划适配器,每个适配器都执行非常特定的功能。
4.1 修正起始状态界限(FixStartStateBounds)
这个适配器将修正起始状态,使其位于URDF文件中指定的关节限制内。当物理机器人的关节限制没有正确配置时,可能需要这个适配器。如果机器人的一个或多个关节略超出其限制,运动规划器讲无法进行规划,因为他会认为起始状态在关节限制之外。这个适配器通过将起始状态移动到关节限制内来修正它,但是,这并不总是正确的解决方案,例如,当关节真的超出其限制很多时。适配器会有一个参数来指定关节超出限制多少是可修正的。
4.2 修正工作空间界限(FixWorkspaceBounds)
这个适配器会指定一个默认的工作空间用于规划:一个尺寸为10 米 x 10 米 x 10 米的立方体。当规划请求中没有设置这个字段时,就会默认指定这个工作空间。
4.3 修正起始状态碰撞(FixStartStateCollision)
当指定的配置发生碰撞时,这个适配器会尝试通过稍微扰动关节之来采样一个新的无碰撞配置。扰动量由jiggle_fraction参数指定,该参数控制扰动量为关节总运动范围的百分比。适配器的另一个参数指定了适配器采样多少个随机扰动后放弃修正。
4.4 修正起始状态路径约束(FixStartStatePathConstraints)
当运动规划的起始状态不遵守指定的路径约束时,会应用这个适配器。它将尝试规划从机器人当前配置到遵守路径约束的新位置之间规划一条路径。 新位置将用作规划的开始状态。
4.5 添加时间参数化(AddTimeParameterization)
运动规划器通常生成“运动学路径”,即不遵守任何速度或加速度约束且没有时间参数化的路径。这个适配器将通过应用速度和加速度约束来对运动计划进行时间参数化。
4.6 求解约束坐标系(ResolveConstraintFrames)
可以使用子坐标系设置目标约束,该适配器将约束坐标系更改为对象或机器人坐标系。
这些适配器使得 MoveIt 能够灵活地处理各种规划场景,并确保生成的规划既符合机器人的物理和运动学限制,也能够适应动态变化的环境。
5.开源运动规划库OMPL(Open Motion Planning Library)
OMPL是一个开源的运动规划库,主要实现随机运动规划器。MoveIt直接与OMPL集成,并使用OMPL中的规划器作为其主要/默认的规划器集合。OMPL中的规划器是抽象的,即OMPL没有机器人的概念。相反,MoveIt配置OMPL并为OMPL提供后端,以便处理机器人相关的问题。