I am trying to implement a path planner to generate a path that moves the robot from q_start to q_goal.

Q_goal is extracted from a stereo camera mounted on the tool, from which I extract x,y,z coordinates of the desired position, the rotation can be arbitrary.

The robot I am using is an industrial ur5 robot arm, the software I use is capable of performing Jacobian based inverse kinematics given a transformation matrix with rotation and translation.

my inverse kinematics provide me with only one solution, which is ok, but doesn't provide me flexibility for path planning...

How do I using inverse kinematics determine all possible q-configurations that fulfills my criteria of having the desired x,y,z coordinates?

  • $\begingroup$ What are the kinematics of your arm? Are you using any kinematics software libraries? (Please expand your question, do not add another comment). $\endgroup$ – Ben Apr 13 '16 at 13:16
  • $\begingroup$ Hope it provide some form of context to my situation $\endgroup$ – Carlton Banks Apr 13 '16 at 14:09

Your software library uses a gradient descent method for inverse kinematics. The way this works is that it moves the Cartesian position of the end-effector towards the goal in small steps then gets the joint angles for each step with the relation: $$ \Delta \theta= J^{-1}\Delta x $$ This method has a number of nice properties, but as you found you only get one solution.

An analytical inverse kinematics solution is what you want. In this method, you algebraically determine all possible solutions. The only catch is if you are under-constrained, (like in your case), where you have more joints than degrees of freedom. (You have 6 joints, but only want a 3 DOF position). In this case, you pick some joints to "fix" and do the math as if that joint is rigid. But in reality, you typically discretize that joint's range, and get a set of solutions for every fixed position. (You can see how the curse of dimenionality will get you here.)

I would recommend investigating ikfast from OpenRave, which is an analytical IK solver. This has a number of different IK types for different DOFs. "Translation3D" is what you want.

But the way to trick your gradient decent IK solver into giving you different solutions is to give it different initial conditions. You should start from drastically different arm configurations. (Like joints flipped 180 degrees from each other).

As for the not needing rotation: The gradient descent IK method can ignore rotation quite easily. You would simply only use the top 3 rows of the Jacobian, and give it only the end-effector position (not rotation too).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.