Ask Your Question

Revision history [back]

set free_index for 7-dof robot's IKFast moveit plugin generation

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