我在跟着如下教程:
使用ros-master控制kinova jaco2机械臂_kinova jaco2 xbox控制-优快云博客
配置kinova mico2 机器人时,执行命令:
roslaunch m1n6s300_moveit_config m1n6s300_demo.launch
执行以后,虽然Rviz界面成功启动,但是报错:
[ERROR] [..]: Action client not connected: m1n6s300/follow_joint_trajectory
[ERROR] [..]: Action client not connected: m1n6s300_gripper/gripper_command
同时,如果试图在Rviz界面中进行路径规划,还会报一个错误:
[ERROR] [..]: Unable to identify any set of controllers that can actuate the specified joints: [ m1n6s300_joint_1 m1n6s300_joint_2 m1n6s300_joint_3 m1n6s300_joint_4 m1n6s300_joint_5 m1n6s300_joint_6 ]
检查了一下,发现这三个报错其实原因是一致的,那就是m1n6s300_moveit_config/config文件夹下controllers.yaml, controllers_ros_contrl.yaml 这两个文件中planning group的名称不一致。
首先,我们需要知道xx_moveit_config文件夹其实是由moveit_setup_assistant自动生成的(具体可以去看一看古月居的教程),其中,在config文件下的srdf文件中,可以看到通过moveit_setup_assistant设置的规划组的组名:
(在moveit_setup_assistant中设置规划组。黑色加粗为组名)
(srdf文件中规划组的信息)
解决方法:在config文件夹中,先打开srdf文件,查看两个组名(分别对应机械臂与机械爪),之后打开同一文件夹下的controllers.yaml文件,查看yaml文件中的组名是否与srdf中的一致。如果不一致,就改成srdf的组名,如下图:
(同时注意,两个组的type也是不一样的)
之后,将controllers.yaml中的内容原封不动地复制到ros_control.yaml文件中:
即可解决。如果使用moveit_setup_assistant修改了组名,那就需要导出新的.srdf文件以及kinematics.yaml文件(注意更换新路径,因为导出的是包),然后进行上述操作。