(Disclaimer: I'm fairly new to this topic, so I apologize if I use some incorrect terminology, and corrections are welcome.)

Normally inverse kinematics involves a kinematic chain of fixed-length links connected by rotational joints. Are there solvers which can also accommodate some of the links being instead translational joints (i.e. a link which can change its length)? I've tried searching online but couldn't come to anything conclusive.

Note that I am not asking about solvers which can account for translational DOFs specified for the end effector - I'm asking about solving for the lengths of translational joints within a kinematic chain that may or may not also contain rotational joints.


1 Answer 1


Well, when you have a variable link length, all you have to do is assign the length of the link to a variable and then solve the rest of the arm. You will have your joint solutions in terms of a variable link length. You then substitute values in for you link lengths. End of solver.

Linear joints just need to be stored as a simple variable in order to propagate through a solver. Rotational joints involve trigonometry, which is less straightforward. You know how tool tip poses are represented? XYZ, rpy

They aren't represented in RcosTheta, RsineTheta, etc. They are in Cartesian coordinates. This is because Cartesian coordinates are easier to understand during presentation. In other words, the convention makes translation joints trivial.

Link lengths are always assumed to be a constant in solvers, and the algebra used to solve angular joints does not require link lengths be constant or variable, they are always dependent on link lengths anyways. In other words, link lengths don't matter, because the math doesn't change.

It is assumed, given your question, that the maximum and minimum link length values are known. Given this assumption, you need to run your IK solver twice - once with the minimum link length, and once with the maximum. That will give you the range of possible angular joint values. That is what you are looking for.

When you have linear links that change values, you are creating a range of valid angular joint values. This is the crux of your question. You don't have 1 value, you have infinite values.

  • $\begingroup$ I'm looking moreso for the solver to be able to determine the needed joint length for some end effector position too, like if the linear joint needs to be extended to reach a target position that otherwise couldn't be reached. Is this also satisfied by what you describe? $\endgroup$
    – Drake P
    Commented Apr 23, 2022 at 0:46
  • $\begingroup$ the question has been updated to be more clear. Does that help? $\endgroup$ Commented Apr 23, 2022 at 21:38
  • $\begingroup$ it does, yes. Thank you! $\endgroup$
    – Drake P
    Commented Apr 23, 2022 at 22:44
  • $\begingroup$ If the question has been answered, do mark it as such with the green check mark. Thanks! $\endgroup$ Commented Apr 23, 2022 at 23:54

Your Answer

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

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