Rosanswers logo


I'm trying to make an ikfast plugin for an SIA5. I follow the steps listed here (http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html) but no matter what I set as the base link and ee link and free link, I get the following errors:

[FATAL] Joint numbers mismatch: URDF has 7 and IKFast has 6

[ERROR] Kinematics solver of type 'sia5_sia5_kinematics/IKFastKinematicsPlugin' could not be initialized for group 'sia5'

[ERROR] Kinematics solver could not be instantiated for joint group sia5.

Any idea what could cause the error and how I can fix it?

I used the following command to generate the ikfast .cpp file:

python openrave-config --python-dir/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=transform6d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --freeindex="$FREE_INDEX" --savefile="$IKFAST_OUTPUT_PATH"

Where base link = 2, ee link = 15, free index = 8,

Although I did play around with different ee links and free indexes to see if that produced a different error.


Edit: This is my list of links

name              index parents          
base_link         0                      
sia5_connectors   1     base_link        
link_s            2     base_link        
link_l            3     link_s           
link_e            4     link_l           
link_u            5     link_e           
link_r            6     link_u           
link_b            7     link_r           
link_t            8     link_b           
tool0             9     link_t           
tool0_oriented    10    tool0            
ft_sensor         11    tool0_oriented   
plasma_pen_holder 12    ft_sensor        
plasma_pen        13    plasma_pen_holder
eef               14    plasma_pen       
wrist_connectors  15    ft_sensor

Originally posted by cpetlowany on ROS Answers with karma: 13 on 2018-06-29

Post score: 0

Original comments

Comment by gvdhoorn on 2018-06-30:
Which commands did you use (exactly) to generate the plugin? an SIA5 is a 7dof robot, so you would've to change some of the commands of the tutorial you link. Without knowing what you did, it'll be hard to help you.

Comment by gvdhoorn on 2018-07-02:
re: edit: you have freeindex set to 8, which is the joint between links b and t. That is legal, but seems strange to me. For a 7dof SIA5 I would expect the e joint to be the free one. Do you have a specific reason for choosing the t joint?

Comment by gvdhoorn on 2018-07-02:
Note also: you appear to have a split in the urdf tree (two links with base_link as their parent). I seem to remember IKFast having a problem with that. This section in the tutorial you ..

Comment by gvdhoorn on 2018-07-02:
.. link also mentions that. Perhaps the wrong link is used as the end of your chain because of that, resulting in only 6 dofs to be encoded into the plugin?

Comment by cpetlowany on 2018-07-02:
No particular reason, I will try it with the e joint as the free joint.

Comment by cpetlowany on 2018-07-02:
I will also try to remove the tree index in the urdf

Comment by cpetlowany on 2018-07-02:
ikfast would not solve with the e joint as the free joint. I got the following error: __main__.CannotSolveError: CannotSolveError: need 6 joints

Comment by cpetlowany on 2018-07-02:
When I try to continue using the joint between b and t but without the tree in the urdf, I still receive the same first error.


1 Answer 1


Rosanswers logo

I'm getting the impression you're running into that tree index bug. Could you try with a 'bare' urdf (so only the robot, not the rest of your cell)?

Originally posted by gvdhoorn with karma: 86574 on 2018-07-02

This answer was ACCEPTED on the original site

Post score: 1

Original comments

Comment by gvdhoorn on 2018-07-02:
Well, we don't know yet whether it's that bug specifically, but good to hear you got it to work. I'll post my comment as an answer.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.