~欢迎关注~
微信公众号:古月居
新浪微博:古月春旭
知乎专栏:古月居
古月居联合深蓝学院推出的“古月私房课”第一弹——《ROS机械臂开发:从入门到实战》已经上线啦,欢迎各位小伙伴前来围观,以下是第七讲《MoveIt!中不得不说的“潜规则”》的内容精要。
大家好,这里是《ROS机械臂开发:从入门到实战》的第七讲——MoveIt!中不得不说的“潜规则”,我是主讲人胡春旭。
今天我们来揭秘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,可以根据模型生成专属的运动学算法插件,求解速度快,成功率高,不过配置过程着实有点复杂,有兴趣的小伙伴可以参考古月君的配置:
以上就是本讲的内容精要,详细讲解过程和仿真/真机演示过程请见具体课程。
更多精彩,欢迎大家关注“古月居”。
更多内容欢迎关注:
微信公众号:古月居 (guyue_home)
新浪微博:古月春旭
知乎专栏:古月居
全部评论(54)
hru3o_8073
e25vb_1843
古月作者
临风
佚名
古月作者
佚名
佚名
古月作者
佚名
佚名
古月作者
梦想吃货壹號店
古月作者
佚名
古月作者
佚名
佚名
佚名
古月作者
柒年之后
佚名
古月作者
佚名
佚名
古月作者
佚名
佚名
佚名
佚名
古月作者
佚名
古月作者
佚名
古月作者
佚名
古月作者
佚名
古月作者
佚名
佚名
古月作者
佚名
古月作者
佚名
古月作者
佚名
佚名
古月作者
佚名
古月作者
佚名
古月作者
佚名