Specify passive joints in URDF within kinematic chain for Moveit

asked 2017-10-18 08:21:06 -0600

rfn123 gravatar image

updated 2017-10-18 16:20:11 -0600

I'm trying to generate an IKFast plugin of a 4DOF arm (UArm swift), since the standard kdl solver does not work well with arms with less than 6 DOFs.

However, there is a problem: there is a passive joint that is not actuated in the kinematic chain, and I wanted to ask if there is any possibility to specify this in the urdf file? Excluding it will not work since then the endeffector is not connected to the robot, nor does setting it to type fixed is possible because then the endeffector positions would be wrong.

In the IKFast plugin, I managed to set that joint to passive to calculate a 4DOF solution. However, when I run the plugin with Moveit, following error occurs:

[FATAL] [1508331380.959032822]: Joint numbers mismatch: URDF has 5 and IKFast has 4 [ERROR] [1508331380.959195182]: Kinematics solver could not be instantiated for joint group robot_arm.

edit retag flag offensive close merge delete


If I read your question text, it would seem that the issue lies with MoveIt, as you mention that you've succeeded in generating an IKFast plugin for the arm.

gvdhoorn gravatar image gvdhoorn  ( 2017-10-18 08:29:18 -0600 )edit

Hi, yes I generated the ikfast plugin with some workarounds(although I doubt the solver is really correct). Perhaps I should reformulate my question...Is there any way to handle that passive joint in moveit or in the urdf so I can test the generated IKFast plugin?

rfn123 gravatar image rfn123  ( 2017-10-18 16:08:20 -0600 )edit

I've had mixed success using the <mimic> tag for passive joints... I'm interested to hear what others say as I never found a good solution. (And if you're interested...)

mcevoyandy gravatar image mcevoyandy  ( 2017-10-18 23:57:16 -0600 )edit

You can configure joints to be considered passive using the MoveIt Setup Assistant. There's a specific tab for it. MoveIt should not expect joint state updates for those joints and also not include them in planning in that case, afaik.

gvdhoorn gravatar image gvdhoorn  ( 2017-10-19 02:48:00 -0600 )edit

Mimic joints are not conidered passive by MoveIt per se. They're just handled differently.

gvdhoorn gravatar image gvdhoorn  ( 2017-10-19 02:48:27 -0600 )edit

@gvdhoorn I did specialize the joint as passive during setup, but Moveit still expects a controller for that joint. I think because that joint is included in the kinematic chain, and ignoring it will interrupt the chain. But the joint is not actuated and has no controller

rfn123 gravatar image rfn123  ( 2017-10-19 02:56:23 -0600 )edit

Without seeing your robot, and the URDF you made it's hard to give you suggestions. A 4dof arm doesn't necessary need a passive joint in the chain, even if it has one in reality.

Please embed a picture of your robot, and show us your urdf.

gvdhoorn gravatar image gvdhoorn  ( 2017-10-19 02:58:53 -0600 )edit

Googling for uarm swift ros led me to: uArm-Developer/SwiftproForROS. That looks like the mfgs official Github account.

You could perhaps see how they did things.

gvdhoorn gravatar image gvdhoorn  ( 2017-10-19 03:05:29 -0600 )edit