我是靠谱客的博主 健忘豌豆,最近开发中收集的这篇文章主要介绍OMPL学习--第二篇之Moveit!与OMPL的交互机制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Moveit! OMPL

文章目录

    • 1. Moveit!简介
    • 2. 运动规划实现机制

1. Moveit!简介

Moveit!是一个机器人相关工具集,它结合了运动规划,操纵,三维感知,运动学,控制和导航的最新进展它提供了一个易于使用的平台,开发先进的机器人应用程序,评估新的机器人设计和建筑集成的机器人产品它广泛应用于工业,商业,研发和其他领域。
move_group是Movelt!的核心节点,节点本身并不具备丰富的功能,主要完成各功能包、插件的集成,为用户提供一组ROS操作和服务。它通过消息和服务的方式接收机器人发布的云点信息、关节状态消息以及TF坐标转换外还需要ROS参数服务器提供机器人的运动学参数,这些运动学参数可根据机器人的URDF模型(SRDF和配置文件)生成。

SRDF:获取机器人模型配置信息,并通过Movelt! Setup Assistant生成。

在这里插入图片描述The move_group node

2. 运动规划实现机制

通过上面的介绍我们可以知道,Moveit!通过插件的形式灵活的调用各种各样的工具,如运动学插件、碰撞检测库、运动规划库等。其中Moveit!默认使用的运动规划库是OMPL。
使用Moveit!为机械臂规划路径时,主要经过以下几个步骤:
Step1:指定机械臂目标位姿;
Step2:通过move_group节点发送运动规划请求给OMPL;
Step3:OMPL求解并生成一个轨迹规划结果作为响应,并通过后处理返回给Moveit!执行规划动作。
在这里插入图片描述
The Motion Planning Pipeline: Motion planners and Plan Request Adapters

–move_group需要将明确的运动规划请求发送给OMPL,可以指定一些约束条件让运动规划去 check。请求包括关节位置约束、姿态约束、可见性约束、关节约束、用户自定义约束等。
规划请求适配器(Plan Request Adapters)能够对规划请求做预处理(pre-processing)、对规划响应做后处理(post-processing)。

  • :预处理可以应对一些如关节起始状态超出关节限制的场景;
  • :说白了,OMPL生成的轨迹就是很多组空间点组成的点序列,这些点是不带时间、速度、加速度信息的,所以这段序列并不能直接发给moveit!,需要经过规划请求适配器进行后处理,将OMPL生成点序列转换为时间参数化的轨迹。

Moveit!提供了一组默认的运动规划适配器,其中每个适配器都具有特定的功能:
FixStartStateBound:修复joint的初始极限
FixWorkspaceBound:设置默认尺寸的工作空间
FixStartStateCollision:如果已有的joint配置文件会导致碰撞,则adapter可以采样新的碰撞配置文件,并且根据jiggle-factor因子修改已有的配置文件
FixStartStatePathConstraint:如果机器人的初始姿态不满足路径约束,则adapter可以找到附近满足约束的姿态作为机器人的初始姿态
AddTimeParameterization(重点掌握):为OMPL生成的点序列添加速度和加速度等信息(按距等分)

最后

以上就是健忘豌豆为你收集整理的OMPL学习--第二篇之Moveit!与OMPL的交互机制的全部内容,希望文章能够帮你解决OMPL学习--第二篇之Moveit!与OMPL的交互机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部