Moveit planning Group foo is not a chain

asked 2018-10-25 02:56:28 -0500

maxbaeten gravatar image

updated 2018-10-25 07:08:16 -0500

Hi all,

In a simulated (gazebo) environment i've placed a motoman ma1400 welding robot ( ) on top of a track (prismatic joint). Furthermore I've added a rotating table. In moveit I can succesfully plan and execute motion for the table and the robot on the track. But now I want to create a single planning group that plans both the table and all joints of the robot on the track.

This is not a question of planning and executing motion synchronously as for example is asked in: In that case both arms get a goal pose request in world frame.

What I want is to plan for an end effector goal of the weld tip of the motoman on track relative to the table. However when I create a moveit plan group which contains all joints it gives the error as shown below.

how should i set up my moveit plan group such that i can plan for the endeffector relative to the table frame with all joints?

[ INFO] [1540451728.075267997, 6.971000000]: Loading robot model 'weldtablecell'... [ INFO] [1540451728.075307271, 6.971000000]: No root/virtual joint specified in SRDF. Assuming fixed joint [ INFO] [1540451728.113952048, 7.014000000]: Loading robot model 'weldtablecell'... [ INFO] [1540451728.113994511, 7.014000000]: No root/virtual joint specified in SRDF. Assuming fixed joint [ERROR] [1540451728.135902717, 7.036000000]: Group 'all' is not a chain [ERROR] [1540451728.135934967, 7.036000000]: Kinematics solver of type >'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'all' [ERROR] [1540451728.136160612, 7.036000000]: Kinematics solver could not be instantiated for joint group all. [ INFO] [1540451728.261226293, 7.166000000]: Starting scene monitor [ INFO] [1540451728.264050719, 7.169000000]: Listening to '/move_group/monitored_planning_scene' [ INFO] [1540451728.334397629, 7.242000000]: Constructing new MoveGroup connection for group >'manipulator' in namespace '' [ INFO] [1540451729.513772641, 8.420000000]: Ready to take commands for planning group manipulator.

edit retag flag offensive close merge delete



Chains cannot have branches. To plan for something not a chain, define a group of just joints.

Note: most IK solvers cannot work with non-chain groups though.

gvdhoorn gravatar image gvdhoorn  ( 2018-10-25 04:01:27 -0500 )edit

As to moto_ros_interface.cpp and how it interfaces with the gazebo_ros_control setup: I would suggest to use a joint group controller. That reduces the nr of topics to 1 and also re-establishes the coupling in time between the joints that is now missing.

gvdhoorn gravatar image gvdhoorn  ( 2018-10-25 04:05:06 -0500 )edit

Note also: position_controllers/JointPositioController does not use any PID, it just forwards. See also #q245802.

Depending on how gazebo_ros_control then interfaces with Gazebo, this makes me wonder if the interpolation strategy implemented in moto_ros_interface.cpp actually ..

gvdhoorn gravatar image gvdhoorn  ( 2018-10-25 04:07:11 -0500 )edit

.. works: the eventual behaviour of the robot will depend on whether there is an additional PID between the node, Gazebo and gazebo_ros_control and how that works.

gvdhoorn gravatar image gvdhoorn  ( 2018-10-25 04:08:30 -0500 )edit

Thanks for the help. Are you aware of any IK solvers that can work with non-chain groups? I tried KDL, SRV and LMA but all gave similar errors. As for the moto_ros_interface I will have a look at that. Although i'm not focussing on the execution but on planning.

maxbaeten gravatar image maxbaeten  ( 2018-10-25 04:49:50 -0500 )edit

Btw there is a workaround (but i'm not a big fan.) by creating a single chain by making the table a parent link of the current root frame of the rails + manipulator.

maxbaeten gravatar image maxbaeten  ( 2018-10-25 04:52:19 -0500 )edit

I also figured out this workaround. But to be honest I do not like it very much. I would also appreciate to plan with the system even if it is not a proper serial chain. Would really like to know, which IK solver is capable of doing that.

nmelchert gravatar image nmelchert  ( 2018-11-27 11:40:54 -0500 )edit