上一节中我们提到了一个planning request adapters 的概念,在这一节中我们将对其展开详细了解。

planning request adapters 是运动规划中 Motion Planning Pipline 涉及到的概念,如下图所示,Plan Request AdaptersMotion planners 共同形成了 Motion Planning Pipline

Plan Request Adapters 有两个主要作用:

  • 预处理运动规划请求;
  • 后处理运动规划响应;

以下是 MoveIt 提供的几种默认的运动规划适配器:

阶段 Plan Request Adapters 作用 使用场景
pre-processing FixStartStateBounds 将机器人初始状态限制在 URDF 中定义的关节约束区间内 机器人可能处于一个或者多个关节略微超出关节限制的情况,此时, Motion Planner 将认为起始状态在关节范围之外而无法规划,通常用于超出边界并不严重的情况
pre-processing FixWorkspaceBounds 指定一个默认大小的工作空间
pre-processing FixStartStateCollision 通过少量扰动关节值来在指定配置(碰撞中)附近对新的无碰撞配置进行采样。它将扰动值的量由“jiggle_fraction”参数指定,该参数将扰动控制为关节总运动范围的百分比。
pre-processing FixStartStatePathConstraints 尝试在机器人的当前配置与遵循路径约束的新位置之间规划路径。新位置将作为规划的起始状态。 机器人的初始姿态不满足路径约束
post-processing AddTimeParameterization motion planners 生成的是一条即和路径,该路径不遵循速度、加速度约束,也不是时间参数化的。该 adapter 可以为这条空间轨迹进行速度、加速度约束,为每个轨迹点加入速度、加速度、时间等参数。 说白了就是轨迹规划
pre-processing ResolveConstraintFrames Goal constraints can be set using subframes (e.g. a pose goal in the frame cup/handle, where handle is a subframe on the object cup). This adapter changes the frame of constraints to an object or robot frame (e.g. cup). 坐标约束转换

研究轨迹规划,我当然更关心 AddTimeParameterization,官方文档参考:Time Parameterization Algorithms
得到 Motion Planners 规划之后的几何路径之后,MoveIt 可以支持不同的算法来对运动轨迹进行后处理,以添加时间戳和速度/加速度值。目前在 MoveIt 中默认提供三种:

Iterative Parabolic Time Parameterization(IPTP)

MoveIt 中 IPTP 源码实现
IPTP 算法是 Motion Planning Pipline 中的 默认 Planning Request Adapter。
关于该算法的相关论文资料尚未找到,欢迎了解的朋友评论区留言。
特点:

  • 1、为等距插补,可以实现速度和加速度平滑,但是无法避免加速度抖动,参见讨论 Improve time parameterization。
  • 2、尽管 MoveIt 使用 IPTP 算法多年来已被数百个机器人使用,但它依存在已知 Bug。

Iterative Spline Parameterization(ISP)

MoveIt 中 ISP 源码实现
没有相关论文,在 MoveIt 源码头文件中找到这样一段算法描述:

  • This class sets the timestamps of a trajectory to enforce velocity, acceleration constraints. Initial/final velocities and accelerations may be specified in the trajectory. Velocity and acceleration limits are specified in the model.
  • This algorithm repeatedly fits a cubic spline, adjusts the timing intervals, and repeats until all constraints are satisfied. When finished, each trajectory waypoint will have the time set, as well as the velocities and accelerations for each joint. Since we fit to a cubic spline, the position, velocity, and acceleration will be continuous and within bounds. The jerk will be discontinuous.
  • To match the velocity and acceleration at the endpoints, the second and second-last point locations need to move. By default, two extra points are added to leave the original trajectory unaffected. If points are not added, the trajectory could potentially be faster, but the 2nd and 2nd-last points should be re-checked for collisions.
  • Migration notes: If migrating from Iterative Parabolic Time Parameterization, be aware that the velocity and acceleration limits are more strictly enforced using this technique. This means that time-parameterizing the same trajectory with the same velocity and acceleration limits, will result in a longer trajectory. If this is a problem, try retuning (increasing) the limits.

ISP 算法为等距插补,是针对 IPTP 算法的改进,详细讨论参见 Improved IPTP by fitting a cubic spline

Time-optimal Trajectory Generation(TOTG)

MoveIt 中 TOTG 源码实现
TOTG 论文及源码开源地址
该方法在 Melodic 版本之后才整合到 MoveIt 中,生成的轨迹速度非常平滑连续,具有非常平滑和连续速度分布的轨迹。该方法基于将路径段拟合到原始轨迹,然后从优化路径中采样新的路点。这与严格的时间参数化方法不同,因为生成的航路点可能会在一定的容差内偏离原始轨迹。因此,使用此方法时可能需要额外的碰撞检查。
特点:

  • 1、输出轨迹为等时间间距轨迹,这与实际工业需求相符,时间间隔可以在源码中进行设置,其默认值为 0.1s;
  • 2、该规划器在小间距下规划的速度和加速度较其余两种优化算法更加合理与平滑,在较大间距下三种规划算法效果差距不大,良好的规划间距会因机械臂参数的不同而有所不同;
  • 3、在过小间距下(0.001s)插补,会出现运动规划不恒定,规划速度不平滑的现象,经测试在0.005s(不同机械臂不一致,同时需要根据控制器输出频率等确定)的规划间距下可以有较为稳定和理想的规划效果。

以上三种默认 Adapters 在 ompl_planning_pipeline.launch.xml 中设置选用即可。

规划算法 调用形式
Iterative Parabolic Time Parameterization AddTimeParameterization
Iterative Spline Parameterization AddIterativeSplineParameterization
Time-optimal Trajectory Generation AddTimeOptimalParameterization

以上三种算法实现效果的简单对比:Add time-optimal trajectory parameterization

参考文章:
知乎:时间最优轨迹(资料)
CSDN ROS进阶——运动规划分析
机器人运动规划技术介绍

使用 MoveIt 控制自己的真实机械臂【4】——了解 MoveIt 的轨迹规划实现机制相关推荐

  1. 使用 MoveIt 控制自己的真实机械臂【3】——优化轨迹发给真实机械臂执行

    上一篇文章中,使用 MoveIt 控制自己的真实机械臂[2]--编写 action server 端代码,已经实现了 action server 端代码,并且拿到了 MoveIt 规划的轨迹数据.当然 ...

  2. 使用 MoveIt 控制自己的真实机械臂【2】——编写 action server 端代码

    上一篇文章中, 使用 MoveIt 控制自己的真实机械臂[1]--配置 action client 端,已经完成了 MoveIt 这边 action client 的基本配置,MoveIt 理论上可以 ...

  3. ros melodic控制真实机械臂之获取moveit规划插补点

    关于该点可查看前辈博客.本文对其中不一致的地方进行记录,但为了查阅方便,该文也记录了完整的操作步骤. 1.demo.launch文件中参数fake_execution的值改为false <arg ...

  4. 六轴机械臂-正解+逆解+轨迹规划实现

    之前,写了一篇博客,从坐标系的说明 -> D-H参数表的建立 -> 正解和逆解的整个算法推导过程整理了一篇博客https://blog.csdn.net/ymj7150697/articl ...

  5. ros通过moveit控制真实机械臂

    1.demo.launch文件 在生成的demo.launch文件中,参数fake_execution的值改为false <include file="$(find tk7arm_mo ...

  6. ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制

    ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制 仓库地址:[ur_ws](https://github.co ...

  7. 机器人学习必看系列:如何使用moveit控制真实机械臂?

    大家好,我是你们可爱的小鱼.最近关于moveit相关的问题感觉非常多,毕竟机械臂+视觉的应用的确是非常的火爆,小鱼都想直接开课教机械臂运动规划相关的了. 有的同学问小鱼,怎么使用moveit控制真实机 ...

  8. 遨博机械臂——使用官方demo控制真实机械臂

    机械臂在rviz中同步 文章目录 源码安装 1.设置工作目录 2.clone官方代码 3.安装MoveIt和industrial_core包 4.编译 使用真实机械臂 1.获取正确的设置 shell ...

  9. ros kinetic-moveit驱动ur3机械臂------控制真实机械臂并且能动

    ros kinetic-moveit驱动ur3机械臂------控制真实机械臂并且能动 本文工作环境配置: ubuntu16.04.6 ros-kinetic ur3 已验证本教程代码在Ubuntu1 ...

最新文章

  1. 企业级工作流解决方案(十)--集成Abp和ng-alain--权限系统
  2. python创意编程比赛-关于举办2019年青岛市青少年创意编程与智能设计大赛的通知...
  3. Python——sys.stdout.flush()方法的作用
  4. 雷死人不偿命-----六年级小学生的字条
  5. C++ 学习之旅(10)——static与extern
  6. V210 UART TX 流程
  7. 【待补】Wireshark+BLE dongle: BLE数据包捕获以及分析
  8. ie8浏览器自定义工具栏设置教程
  9. python基础(13)之数组
  10. [码海拾贝 之TC] 呼叫外部应用程序或脚本
  11. matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)
  12. ubuntu安装rubyOnRails
  13. 新能源专属车险可在线投保 80%车主基准保费下降
  14. jboss forge整合 hibersap
  15. js获取某年某月某天是第几周
  16. linux 伪静态 cms,常用CMS建站程序的Nginx伪静态规则大全
  17. Android热修复-Robust
  18. Pdf 转 word 和 word 转 pdf 等
  19. Linux命令之文件分割split命令
  20. 阿里达摩院开源DAMO-YOLO:兼顾速度与精度的新目标检测框架

热门文章

  1. html转盘游戏代码,html5 转盘 例子 附完整源码 有截图 亲测通过
  2. LED、LCD背光源、CCFL
  3. PCL点云配准(ICP)
  4. 计算机博士英文复试自我介绍,博士复试英文自我介绍范文
  5. 计算机音乐谱夜空中最亮的星歌词,夜空中最亮的星歌谱及歌词
  6. 光场相机1.0与光场相机2.0
  7. 浅析肖特基二极管与开关二极管的不同之处
  8. matlab看图像分度值,也制作开源 STC15W408AS 白光T12控制器 数码管版本 洞洞板搭建...
  9. 提供云媒体服务器图片,云开发 把媒体文件上传到微信服务器 已知报错
  10. 【人工智能项目】- 卷积神经网络实现游客评价情绪鉴别