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

ikfast for selfmade arm

asked 2021-09-02 15:21:16 -0500

peng cheng gravatar image

updated 2021-09-02 15:21:52 -0500

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!

edit retag flag offensive close merge delete

Comments

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?

Humpelstilzchen gravatar image Humpelstilzchen  ( 2021-09-04 02:18:14 -0500 )edit

Btw you should now have some points ;)

Humpelstilzchen gravatar image Humpelstilzchen  ( 2021-09-04 02:22:08 -0500 )edit

@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
peng cheng gravatar image peng cheng  ( 2021-09-04 02:22:59 -0500 )edit

@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
peng cheng gravatar image peng cheng  ( 2021-09-04 02:26:38 -0500 )edit

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)

Humpelstilzchen gravatar image Humpelstilzchen  ( 2021-09-04 02:34:10 -0500 )edit

@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();
peng cheng gravatar image peng cheng  ( 2021-09-04 02:49:24 -0500 )edit

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

The Red Star gravatar image The Red Star  ( 2021-11-11 06:08:48 -0500 )edit

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 + - - - - +

The Red Star gravatar image The Red Star  ( 2021-11-11 06:13:05 -0500 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2021-09-04 12:49:50 -0500

peng cheng gravatar image

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.

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2021-09-02 15:21:16 -0500

Seen: 123 times

Last updated: Sep 04 '21