< >
Home » ROS探索总结 » ROS探索总结-62.MoveIt!中不得不说的“潜规则”

ROS探索总结-62.MoveIt!中不得不说的“潜规则”

ROS探索总结-62.MoveIt!中不得不说的“潜规则”

说明:

  • 介绍古月君在研究过程中结合API文档发现的一些规则

正文

请输入图片描述

  • 今天我们来揭秘MoveIt!使用过程中的一些潜规则,也是大家经常会有疑惑的地方,很多在MoveIt!教程中并没有说明,而是古月君在研究过程中结合API文档发现的,也给大家分享一下。

请输入图片描述

  • 首先我们来看圆弧轨迹的规划。

请输入图片描述

  • 很多同学会有这样一个疑问,MoveIt!可以规划笛卡尔直线运动,那能不能规划圆弧运动,甚至任意曲线轨迹的运动呢?MoveIt!中没有直接的API接口,但是下边这张图应该可以给大家灵感:通过直线逼近的方式,就可以实现啦!

请输入图片描述

  • 按照这样的思路,我们来看MoveIt!下实现的圆弧轨迹规划例程,演示中我们可以看到机械臂的终端走出了一个完整的圆形轨迹。

请输入图片描述

  • 该例程实现的流程:首先通过圆的轨迹方程,计算得到一系列圆上的路径点,然后使用computeCartesianPath函数完成所有路径点之间的直线轨迹规划,最后execute执行运动。

请输入图片描述

  • 很多情况下,我们对MoveIt!规划的轨迹并不满意,那这条轨迹能不能修改呢?当然是可以的。

请输入图片描述

  • 运行例程,我们可以看到机器人会完成两次相同的运动,但是速度有明显的差异,这就是因为我们对MoveIt!规划的轨迹做了人为的修改。

请输入图片描述

  • 该例程实现的流程:首先使用plan正常完成规划,然后遍历规划得到的轨迹数据,里边的位置、速度、加速度、时间想怎么改就怎么改了,最后execute执行修改之后的轨迹即可。

请输入图片描述

  • 到现在为止,例程中机械臂每次运动的速度变化都是从0到0的,在连续运动中会出现频繁的停顿,如何减少甚至去掉中间的停顿呢?古月君结合自己对API的研究,给大家介绍一种方法。

请输入图片描述

  • 运行多轨迹连续运动的例程,机械臂会一次完成两条轨迹的运动,中间并不会出现停顿的问题。

请输入图片描述

  • 该例程的实现相对复杂一些,用到了很多MoveIt!深层的API。主要流程如下:首先规划多条需要连续运动的轨迹,但是此时机器人并没有真实运动,所以需要注意后续轨迹规划的起点应该是前一条轨迹的终点。

请输入图片描述

  • 然后创建一个新的轨迹对象,把以上规划好的轨迹全部push进去,再调用IPTP时间最优算法的接口,重新规划这条新轨迹的速度、加速度、时间等信息,规划完成后就可以调用execute连续运动啦。

请输入图片描述

  • 最后一个部分我们来介绍如何更换MoveIt!中的运动学插件。

请输入图片描述

  • 在之前的课程中,我们介绍过MoveIt!三大核心功能之一就是运动学,那什么是运动学?大家可以参考《机器人学导论》中的理论介绍,以一个两自由度的机械臂为例,已知关节角度推算终端XY坐标的过程就是正运动学,相反就是逆运动学。

请输入图片描述

  • MoveIt!默认使用的运动学插件是KDL,但是该算法是基于迭代的数值解,求解速度慢,失败率高,并不是开发的首选。

请输入图片描述

  • TRAC-IK虽然也是数值解,但是算法上做了很多优化,速度和成功率都有了很大程度的提升。

请输入图片描述

  • TRAC-IK的使用方法也很简单,安装后修改配置文件就可以启用了。

请输入图片描述

  • 另外一个运动学插件是基于解析解的IKFAST,可以根据模型生成专属的运动学算法插件,求解速度快,成功率高,不过配置过程着实有点复杂,有兴趣的小伙伴可以参考古月君的配置:ROS技术点滴 —— MoveIt!中的运动学插件

请输入图片描述

  • 以上就是本讲的内容精要,详细讲解过程和仿真/真机演示过程请见具体课程。

请输入图片描述

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros探索总结