Generation of IKfast plugin for a 6DoF arm

asked 2016-10-25 08:10:07 -0500

florian_v gravatar image

updated 2016-10-25 09:03:31 -0500

Hello, I am currently trying to generate a ikfast moveit plugin for a custom 6DoF arm. I was following the tutorial: http://docs.ros.org/indigo/api/moveit...

As suggested in other questions, I wanted to start off with a well designed URDF-file to test my tool chain. I tried the abb repo from ros industrial ( https://github.com/ros-industrial/abb ).

With these files, I tried to generate the IK solver - and this is where I am stuck at the moment.


Here are the steps up to the error:

Installed everything

Checked the urdf with check_urdf irb2400.urdf

robot name is: abb_irb2400
---------- Successfully Parsed XML ---------------
root Link: base_link has 2 child(ren)
    child(1):  base
    child(2):  link_1
        child(1):  link_2
            child(1):  link_3
                child(1):  link_4
                    child(1):  link_5
                        child(1):  link_6
                            child(1):  tool0

Converted the urdf to dae with:

rosrun collada_urdf urdf_to_collada irb2400.urdf irb2400.dae

Checked the structure:

openrave-robot.py irb2400.dae --info links
name      index parents  
base_link 0              
base      1     base_link
link_1    2     base_link
link_2    3     link_1   
link_3    4     link_2   
link_4    5     link_3   
link_5    6     link_4   
link_6    7     link_5   
tool0     8     link_6   
name      index parents

Tried to generate the IK solver

python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot=irb2400.dae --iktype=transform6d --baselink=1 --eelink=8 --savefile=result.h

It fails with:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 9535, in <module>
    chaintree = solver.generateIkSolver(options.baselink,options.eelink,options.freeindices,solvefn=solvefn)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 2287, in generateIkSolver
    chaintree = solvefn(self, LinksRaw, jointvars, isolvejointvars)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 2882, in solveFullIK_6D
    tree = self.TestIntersectingAxes(solvejointvars,Links, LinksInv,endbranchtree)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 2970, in TestIntersectingAxes
    return self.solve6DIntersectingAxes(T0links,T1links,transvars,rotvars,solveRotationFirst=solveRotationFirst, endbranchtree=enbranchtree)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 3143, in solve6DIntersectingAxes
    transtree = self.SolveAllEquations(AllEquations,curvars=curvars,othersolvedvars=othersolvedvars[:],solsubs=solsubs,endbranchtee=newendbranchtree)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 6861, in SolveAllEquations
    return self.AddSolution(solutions,AllEquations,curvars,othersolvedvars,solsubs,endbranchtree,currentcases=currentcases, curretcasesubs=currentcasesubs, unknownvars=unknownvars)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 7525, in AddSolution
    newtree = self.SolveAllEquations(NewEquationsClean,curvars,othersolvedvars,solsubs,endbranchtree,currentcases=newcases, curretcasesubs=newcasesubs, unknownvars=unknownvars)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 6861, in SolveAllEquations
    return self.AddSolution(solutions,AllEquations,curvars,othersolvedvars,solsubs,endbranchtree,currentcases=currentcases, curretcasesubs=currentcasesubs, unknownvars=unknownvars)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 6961, in AddSolution
    return [solution[0].subs(solsubs)]+self.SolveAllEquations(AllEquations,curvars=newvars,othersolvedvars=othersolvedvars+[var],olsubs=solsubs+self.Variable(var).subs,endbranchtree=endbranchtree,currentcases=currentcases, currentcasesubs=currentcasesubs, unnownvars=unknownvars)
  File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 6721, in SolveAllEquations
    return self.AddSolution(solutions,AllEquations,curvars,othersolvedvars,solsubs,endbranchtree ...
(more)
edit retag flag offensive close merge delete