ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

CannotSolveError: raghavan roth equations too complex (--iktype=translationdirection5d)

asked 2020-07-08 06:39:32 -0500

onlooker gravatar image

Hi, all

Meet a solve issue when generating IK solver with the manuel http://docs.ros.org/kinetic/api/movei....

Hardware: 5-dof innfos which was 6-dof but the wrist3 joint is broken, so I move the wrist3 joint and change the urdf to 5-dof robot...

Reference information: export MYROBOT_NAME="innfox" export PLANNING_GROUP="bytedance_arm" export BASE_LINK="0" export EEF_LINK="5" export IKFAST_OUTPUT_PATH=pwd/ikfast61_"$PLANNING_GROUP".cpp export IKFAST_PRECISION="5"

$openrave-robot.py "$MYROBOT_NAME".dae --info links

name index parents
base_link 0
shoulder_link 1 base_link
elbow_link 2 shoulder_link elbow2_link 3 elbow_link
wrist_link 4 elbow2_link wrist2_link 5 wrist_link
name index parents

Generate command: $python openrave-config --python-dir/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=translationdirection5d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --savefile="$IKFAST_OUTPUT_PATH"

======================error log ======================= INFO: not unique: (Poly(-r00cj0 - r01sj0, cj0, sj0, cj2, sj2, htj1, domain='ZZ[r00,r01]'), Poly(sj4, cj3, sj3, cj4, sj4, htj1, domain='ZZ')) INFO: not unique: [Poly(-pxcj0 - pysj0, cj0, sj0, cj2, sj2, htj1, domain='QQ[px,py]'), Poly(-2031/25000, cj3, sj3, cj4, sj4, htj1, domain='QQ')] INFO: assuming equation htj1 is non-zero, dividing by Poly(pxcj0htj1 + pysj0htj1 - 2031/25000htj1, cj0, sj0, cj2, sj2, cj3, sj3, cj4, sj4, htj1, domain='QQ[px,py]') INFO: not unique: (Poly(-pxcj0 - py*sj0, cj0, sj0, cj2, sj2, htj1, domain='ZZ[px,py]'), Poly(-2031/25000, cj3, sj3, cj4, sj4, htj1, domain='QQ')) WARNING: CannotSolveError: reduced equations are zero INFO: attempting kohli/osvatic general ik method INFO: solving for all pairwise variables in (cj0, sj0, cj1, sj1), number of symbol coeffs are 15 INFO: solving for all pairwise variables in (cj0, sj0, cj1, sj1), number of symbol coeffs are 22 WARNING: CannotSolveError: KohliOsvatic method: could not reduce the equations INFO: attempting kohli/osvatic general ik method WARNING: CannotSolveError: need 8 or less equations of one variable, currently have 12 Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 9521, 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 2281, in generateIkSolver chaintree = solvefn(self, LinksRaw, jointvars, isolvejointvars) File "/usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py", line 2803, in solveFullIK_TranslationDirection5D raise self.CannotSolveError('raghavan roth equations too complex') __main__.CannotSolveError: CannotSolveError: raghavan roth equations too complex

Pls see the URDF file in the attachment. Could anyone tell where the issue is?

BR Thx.

edit retag flag offensive close merge delete

Comments

1

just solved this problem after 3 days' crazy seaching... the key point is that the z axis of the eef should be normal to the gripper surface. see these links for details: link1, link2

xibeisiber gravatar image xibeisiber  ( 2020-07-08 21:30:19 -0500 )edit
1

The disappointing thing for me is that the ikfast plugin can't solve for all the 10 preset reachable poses of eef in my case..."no motion plan found"..

xibeisiber gravatar image xibeisiber  ( 2020-07-08 22:59:54 -0500 )edit

Hi, Xibeisiber

Thanks for reply.

My robot arm just does place moving, so doesn't have the gripper device.

I just followed the tutorial to generate the ikfast cpp file, didn't see the robot.xml(katana6m90a.robot.xml in the given link).

How should I do? Can I just modify the urdf file to correct the eef pose?

Below is the EEF joint configure in my urdf file:

<joint name="wrist2_joint" type="continuous"> <origin xyz="0.0380973329553973 0.0463798976413489 0" rpy="0 3.1415926 0"/> <parent link="wrist_link"/> <child link="wrist2_link"/> <axis xyz="0 -1 0"/> <limit effort="1000.0" lower="-2.75" upper="2.75" velocity="0.5"/> <safety_controller k_velocity="0"/> </joint>

BR

Thx.

onlooker gravatar image onlooker  ( 2020-07-09 01:31:55 -0500 )edit

try to change the axis of the eef_link by modifying the RPY in your <joint> or modifying the intrinsic axis of the mesh file of the eef_link. then generate the cpp again. both ways work for me .

xibeisiber gravatar image xibeisiber  ( 2020-07-10 07:11:23 -0500 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2020-07-08 22:25:34 -0500

onlooker gravatar image

Upload the urdf file.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2020-07-08 06:39:32 -0500

Seen: 419 times

Last updated: Jul 08 '20