Rosanswers logo

Hi everyone,

I writing to ask a question about setting free joint index for a 7-dof robot's ikfast moveit plugin generation. I am running ROS kinetic on Ubuntu 16.04 and openrave master branch (commit). The sympy version I am using is 0.7.1 (matching openrave;s requirement).

The 7 dof robot I am working on consists of one standard 6 dof industrial robotic arm and a horizontal linear axis. Take the following 6-axis IRB6640 + linear axis for an example, the links info is:

name                    index parents                
base_link               0                            
linear_axis_base_link   1     base_link              
linear_axis_zero        2     linear_axis_base_link  
linear_axis_carriage    3     linear_axis_zero       
linear_axis_robot_mount 4     linear_axis_carriage   
robot_base_link         5     linear_axis_robot_mount
robot_base              6     robot_base_link        
robot_link_1            7     robot_base_link        
robot_link_2            8     robot_link_1           
robot_link_3            9     robot_link_2           
robot_link_4            10    robot_link_3           
robot_link_5            11    robot_link_4           
robot_link_6            12    robot_link_5           
robot_tool0             13    robot_link_6           
eef_base_link           14    robot_tool0            
eef_tcp_frame           15    eef_base_link          
robot_link_cylinder     16    robot_link_1           
robot_link_piston       17    robot_link_cylinder    
name                    index parents                

A snapshot of the dae visualization:

However, I've tried setting free_index to each of the indices, but the ikfast either popped up the following error (and I've tried running round_collada_numbers) or it takes 8 minutes or so to compute and then end with some errors:

main.CannotSolveError: CannotSolveError: need 6 joints

My question is: What would be the role of thumb in setting up this free index in ikfast generation for our 6-index industrial robot + linear axis setup, which is quite common in many real-world industrial applications?

FYI, I have documented a lot of details in my trial-and-error in an updated ikfast tutorial dedicated to Kinetic here [1], in the hope that it can help others.

[1] https://github.com/yijiangh/framefab_mpp/blob/feature/abb_w_linear_track/framefab_robot/abb/framefab_irb6600/framefab_irb6600_support/doc/ikfast_tutorial.rst

Originally posted by yijiangh on ROS Answers with karma: 131 on 2018-03-16

Post score: 0

Original comments

Comment by gvdhoorn on 2018-03-16:
This is not an answer, but see if the procedure in #q263925 makes any difference. It's written for 4dof, but just replace with the appropriate solver type. Using the inversekinematics database has helped me get past weird IKFast errors before. Can't guarantee anything, but it's worth a try.


1 Answer 1


Rosanswers logo

Following the link in @gvdhoorn's comment above, I've successfully created ikfast plugin for my 6+1dof case, using ikfast's inversekinematics database.

I've documented the resolution in an updated moveit-ikfast tutorial here if anyone is interested in this.

Originally posted by yijiangh with karma: 131 on 2018-03-17

This answer was ACCEPTED on the original site

Post score: 0


Your Answer

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