ROS中MoveIt插件求解器更换-Trac_IK部分

1.首先说一下怎么将MoveIt的默认求解器换成常用的Trac_IK或者IKFast.

(1)插件安装

        1)Trac_IK安装

        这个比较简单,参考官网:Bitbucket中的代码;(我的ROS时Kinetic)

sudo apt-get install ros-kinetic-trac-ik

        一行搞定。

        2)IKFast安装

这个巨繁琐,而且BUG花样百出,不过基本流程可以参考官网:IKFast安装

(2)换掉KDL(以aubo机械臂的功能包、更换Trac_IK求解器为例,其他机械臂思路类似。)

        在aubo_robot功能包下找到目录src/aubo_i5_moveit_config/config/kinematics.yaml文件,打开它,在manipulator_i5:下面一行,把kdl那一行注释掉,仿写Trac_IK的求解器,结果如下图所示,这样就更换完了,运行自己的程序试一下就行。

 注:具体的修改问题,如果是你自己编写的机械臂功能包,那有可能部分配置文件中没有编写共享参数的代码,因为节点之间的变量空间是不相同的,所以如果不连接到该变量空间,就会出现可能rviz中,gazebo中和现实机械臂的规划器使用的不是一个规划器的问题。

解决:在aubo_robot功能包下找到目录src/aubo_i5_moveit_config/launch,其中我的aubo机械臂的文件是moveit_planning_execution.launch

打开后查看我用到了哪些东西:

这里看到我们用到了ROS-I、MoveIt和Rviz三个插件。 

这里因为我使用了ROS-I和MoveIt!(Rviz只是可视化,真正的运动还是靠MoveIt实现,所以不用管它),所以要确保这两个都用到了Trac_IK插件,所以都应该有下面代码段(Block):

1.ROS-I插件,即planning_context.launch文件中。

 2.MoveIt插件,即move_group.launch文件中。

到此就所有的配置完毕了,用下面这行命令查询ROS下kinematics运行的参数叫啥:

rosparam list | grep kinematics

可以看到我的工程中求解器的参数叫这个名字:

然后用rosparam get命令看一下三个求解器,得到的结果能看到是我们需要的Trac_IK了。

下面讨论一个小问题:

[Info] Using solver type Speed. 问题

在launch文件启动时,有这么一句话:

 很明显,这表明我当前使用的求解器用的类型时Speed型,即保证关节空间的连续与精确。

当你翻读Trac_IK的源码的时候在trac_ik/trac_ik_kinematics_pligin/trac_ik_kinematics_pligin.cpp文件里,有这么一段代码:

可以看到,Trac_IK求解器提供了四种类型的求解方案,Manipulation1、Manipulation2、Distance、还有默认的Speed,所以你要改变上述问题,让我们的求解方案不使用Speed的方法有两个:

1)直接改Trac_IK的源码,把默认的Speed改成你想用的就行;

2)(还在探索)首先,了解一下这个源码的145-149行:

可以看到,他这里时获取了group_name(就是上面提到的xml文本里面加入的group标签名字,修改他的solve_type参数,如果没改就显示Speed),通过阅读launch文件运行后的提示发现,parameter里面没有solve_type这个参数,而且知道它是在common namspace,找了很久,硬是没找到这个parameter,在ros开启的param一栏里也没找到这个,只提示这是一个common namspace的变量,而且试了下自己创建,由于源码里面148行代码的缘故,也检测不出来是不是改了,所以我选择方法一!!!

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D124lab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值