ikfast plugin fails due to joint numbers mismatch
Hello,
I'm trying to make an ikfast plugin for an SIA5. I follow the steps listed here ( http://docs.ros.org/kinetic/api/movei... ) 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.
Thanks!
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
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.
re: edit: you have
freeindex
set to8
, which is the joint between linksb
andt
. That is legal, but seems strange to me. For a 7dof SIA5 I would expect thee
joint to be the free one. Do you have a specific reason for choosing thet
joint?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 .... 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?No particular reason, I will try it with the
e
joint as the free joint.I will also try to remove the tree index in the urdf
ikfast would not solve with the
e
joint as the free joint. I got the following error:__main__.CannotSolveError: CannotSolveError: need 6 joints
When I try to continue using the joint between
b
andt
but without the tree in the urdf, I still receive the same first error.