Cannot create transform6d IKFast solution

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Cannot create transform6d IKFast solution

JoshMarino
This post has NOT been accepted by the mailing list yet.
This post was updated on .
Hello,

I have a 6 DOF robot with all revolute joints, with the last two joints stacked on top of each other.


I am attempting to create an ikfast61.cpp file, but it fails each time I try it with the following command:
python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot=robot.rounded.dae --iktype=transform6d --baselink=1 --eelink=8 --savefile=ikfast61.cpp

Here is the output from: openrave-robot.py robot.rounded.dae --info links
name      index parents  
-------------------------
world       0              
body_link 1     world  
link1       2     body_link
link2       3     link1    
link3       4     link2    
link4       5     link3    
link5       6     link4    
link6       7     link5    
tool_link  8     link6
-------------------------

Any help would be appreciated. I attached the robot.xacro, robot.urdf, robot.dae, and robot.rounded.dae files that were used. Also attached is a log from attempting to create the ikfast61.cpp output file.
ikfast61_transform6d_output_log.txt
robot.xacro
robot.urdf
robot.dae
robot.rounded.dae

If you use ROS, attached is a launch file that will load a robot model of robot.xacro and provides a joint state publisher GUI in the form of sliders.
robot.launch
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Cannot create transform6d IKFast solution

JoshMarino
This post has NOT been accepted by the mailing list yet.
I stumbled across a Docker image for ros-openrave here. I tried using it and got a slightly different output.

...
INFO: c=10, [j5, j0, j1, j3, j2] [j4]
INFO: c=11, [j5, j0] [j1]
INFO: depth=0, c=12, iter=0/2, starting newcases: set([Abs(j5 + atan2(r21, r20))])
INFO: there are no new equations, so most likely the following variables can be freely determined: [j1]
INFO: depth=0, c=12, iter=0/2, adding newcases: set([Abs(j5 + atan2(r21, r20))])
INFO: depth=0, c=12, iter=1/2, starting newcases: set([Abs(j5 + atan2(r21, r20) - 3.14159265358979311599796346854)])
INFO: there are no new equations, so most likely the following variables can be freely determined: [j1]
INFO: depth=0, c=12, iter=1/2, adding newcases: set([Abs(j5 + atan2(r21, r20) - 3.14159265358979311599796346854)])
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 8920, in <module>
    chaintree = solver.generateIkSolver(options.baselink,options.eelink,options.freeindices,solvefn=solvefn)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 2247, in generateIkSolver
    chaintree = solvefn(self, LinksRaw, jointvars, isolvejointvars)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 2900, in solveFullIK_6D
    tree = self.solveFullIK_6DGeneral(T0links, T1links, solvejointvars, endbranchtree, usesolvers=1)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 3202, in solveFullIK_6DGeneral
    coupledsolutions,usedvars = solvemethod(rawpolyeqs,solvejointvars,endbranchtree=endbranchtree,AllEquationsExtra=AllEquationsExtra)
  File "/usr/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 4851, in solveLiWoernleHiller
    indices.append(allmonoms.index(tuple(monom)))
ValueError: (0, 0, 0, 1, 0) is not in list

ikfast61_transform6d_output_log_2.txt
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Cannot create transform6d IKFast solution

sirop
Try
python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot=robot.rounded.dae --iktype=transform6d --baselink=2 --eelink=8 --savefile=ikfast61.cpp
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Cannot create transform6d IKFast solution

JoshMarino
This post has NOT been accepted by the mailing list yet.
Hi sirop,

Trying baselink=2 and eelink=8, like so:
python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot=robot.rounded.dae --iktype=transform6d --baselink=2 --eelink=8 --savefile=ikfast61.cp

gave me the following error:
CannotSolveError: need 6 joints

This is because changing baselink=1 to baselink=2 removed the first rotation joint.


Thanks,
Josh
Loading...