0
$\begingroup$

Rosanswers logo

It said >5 points required to upload a picture, so I have to draw my robot arm here.

   |  |
   |  |   ---> joint4  y axis rotate
   |  |
   |  |   ---> joint3   y axis rotate
   |  |
   |  |   ---> joint2   y axis rotate
+ - - - - +
|         |  ---> joint1  z axis rotate
+ - - - - +

Hope it is clear! As you can see this robot arm DOF is 4, so moveit kdl can't work well with it, and I can't move the interactive marker in rviz.

So I try to use ikfast to solve this problem. Actually, I don't know which IK type is suitable for this case, so I tried TranslationX(Y/Z)AxisAngle4D.

But without luck, after I configure the moveit plugin successfully, still I can't move interactive mark. My question is what type of IK should I use? Thanks!


Originally posted by peng cheng on ROS Answers with karma: 36 on 2021-09-02

Post score: 1


Original comments

Comment by Humpelstilzchen on 2021-09-04:
Might be similar to the default open manipulator configuration. Did openrave have a valid solution for any of the Translation*AxisAngle4D? Did the test succeed?

Comment by Humpelstilzchen on 2021-09-04:
Btw you should now have some points ;)

Comment by peng cheng on 2021-09-04:
@Humpelstilzchen, If I am correct, the open manipulator doesn't have joint1 which can rotate around the z-axis. Yes, for all 3 Translation*AxisAngle4D, the test are success with such output,

openravepy.databases.inversekinematics: testik, success rate: 0.989000, wrong solutions: 0.000000, no solutions: 0.011000, missing solution: 0.022000

Comment by peng cheng on 2021-09-04:
@Humpelstilzchen, Sorry, I don't understand "have some points",

I have four files available in the output directory:

ikfast0x10000049.TranslationZAxisAngle4D.0_1_2_3.cpp  ikfast0x10000049.TranslationZAxisAngle4D.0_1_2_3.pp  ikfast0x10000049.TranslationZAxisAngle4D.x86_64.0_1_2_3.so  ikfast.h

Comment by Humpelstilzchen on 2021-09-04:
points on answers.ros.org. The first axis on openmanipulator is rotating about upwards axis which is z in my coordinate system. Does your generated *ikfast_moveit_plugin.cpp have code in "case IKP_TranslationZAxisAngle4D"? (also X any Y)

Comment by peng cheng on 2021-09-04:
@Humpelstilzchen, apologize, you are correct, the first joint of the open manipulator is rotating about the z-axis. Yes, it has such case, and I also cherry-picked this MR, so it loos like this for Y Axis case:

    case IKP_TranslationYAxisAngle4D:
case IKP_TranslationYAxisAngleXNorm4D:
  // For **TranslationYAxisAngleXNorm4D** - end effector origin reaches desired 3D translation, manipulator
  // direction needs to be orthogonal to x axis and be rotated at a certain angle starting from the y axis (defined
  // in the manipulator base link’s coordinate system)
  pose_frame.M.GetRPY(roll, pitch, yaw);
  ComputeIk(trans, &roll, vfree.size() > 0 ? &vfree[0] : NULL, solutions);
  return solutions.GetNumSolutions();

Comment by The Red Star on 2021-11-11:
Hi,I am using iktype=translationxaxisangle4d,but I always get the error:CannotSolveError(some equations are not consistent with the ik,double check if using correct IK type),do you know why,my friend

Comment by The Red Star on 2021-11-11:
Can I use your description of the arm to raise a new question? | | | | ---> joint4 y axis rotate | | | | ---> joint3 y axis rotate | | | | ---> joint2 y axis rotate

| | ---> joint1 z axis rotate

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Find the cause, I set the wrong first joint, I guess ikfast expects the first joint to be the one rotating about the z-axis, but I added one more fixed joint which connects to the world, ikfast works after removing it.


Originally posted by peng cheng with karma: 36 on 2021-09-04

This answer was ACCEPTED on the original site

Post score: 1

$\endgroup$

Your Answer

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