I am programming/using a rigid body joint-space dynamics solver for robots in which I want to implement linear force actuators between links with their equivalent torque sources that are 'spanned' by this linear actuator.

Consider the example figure sketch below: schematic

It shows a three bar linkage floating in 3D space. We have a coordinate system $\Psi_0$ in which we can express all vectors. The left and right figure are the same, except for the fact that the linear force actuator in the left figure has been replaced by rotation actuator torques (see following text). Because they are supposed to be equivalent I have added that large 'equals' sign between the two figures.

There is a linear force actuator between points $\mathbf{p}_1$ and $\mathbf{p}_2$ that effectively pulls these points towards each other. This actuator delivers a force with size $F$, which is drawn along the dashed red line as $\mathbf{F}_1$ in point $\mathbf{p}_1$ and as $\mathbf{F}_2$ in point $\mathbf{p}_2$, in opposite direction, due to Newton's third law.

The three bar linkage has two passive single-DOF joints whose locations in 3D-space are given by $\mathbf{j}_1$ and $\mathbf{j}_2$. These joints rotate around their axis of rotation $\hat{\mathbf{u}}_1$ and $\hat{\mathbf{u}}_2$, given with unit length. The joint angles $q_1$ and $q_2$ show the angle in the respective joint.

Problem: I want to know the equivalent torque vectors $\mathbf{T}_1$ and $\mathbf{T}_2$ that would result from the linear force actuator $\mathbf{F}$. These torque vectors would give me the exact same dynamical behavior (I am not interested in joint constraint forces).

I know that the locations of $\mathbf{p}_1$, $\mathbf{p}_2$, $\mathbf{j}_1$, $\mathbf{j}_2$ are known, that vectors $\hat{\mathbf{u}}_1$ and $\hat{\mathbf{u}}_2$ are known, $\mathbf{F}_1=-\mathbf{F}_2$ is known, and that $q_1$ and $q_2$ are known. All vectors are numerically expressed in frame $\Psi_0$.

Attempt: Simpler case: If the middle link between $\mathbf{j}_1$ and $\mathbf{j}_2$ would be missing, then we have only a single revolute joint $\mathbf{j}_1$. Then I would calculate the equivalent torque vector to be: \begin{align} \mathbf{T}_1 &= \left(\left((\mathbf{p}_1-\mathbf{j}_1)\times\mathbf{F}_1\right)\cdot\hat{\mathbf{u}}_1\right)\hat{\mathbf{u}}_1 \\ &= \left(\left((\mathbf{p}_2-\mathbf{j}_2)\times-\mathbf{F}_2\right)\cdot\hat{\mathbf{u}}_1\right)\hat{\mathbf{u}}_1 \end{align} Where $a\times b$ is the 3D cross-product, and $a\cdot b$ is the dot-product. The torque applied by the actuator is simply the length of the torque vector.

General case: I now get pretty confused when the linear actuator spans one or more extra links and joints between the attachment points (imagine $n$ joints with arbitrary rotation direction, and $n-1$ links between the two final links that have $\mathbf{p}_1$ and $\mathbf{p}_2$ attached). I looked into what's explained here, but I need a method that works directly with numerical values for the vector elements for all vectors that I know.

Edit: am I just confusing myself and is it nothing more than Jacobian transpose (the Jacobian from joint-space to e.g. $\mathbf{p}_2$)? I'd rather not construct Jacobians for all attachment points.


1 Answer 1


Yes, it is the Jacobian transpose.

The Shadmehr site you cited has been reorganized. The "Forces and torques" chapter is linked to by the lab's publication page.

The F&T chapter has the usual misleadingly concise expression for the Jacobian (unnumbered, following Eq. 9). It uses derivatives of Eq. 9, itself a nasty expression to work with by hand. Then, as they say, use $J$ in their Eq. 6. $\tau=-J^T f$ which gives exactly what you wanted, an expression for the torques in terms of the force.

Unfortunately, your system is more complicated than their planar system. Yours has an additional angle (not identified in your sketch), which I'll call $\phi$. It is the dihedral angle between two planes, one defined by the two links at your j1, the other by the links at j2. I think the analysis leading to their Eq. 9 could be extended to include that additional angle. The resulting expression will be even nastier, with sin's and cos's of $\phi$ multiplying those of the $\theta$s already there. Fortunately, $\phi$ is a parameter of your system, like the lengths of the links, so you don't need to find $\phi$ derivatives too.

When it comes to the numerics, there are three approaches.

  • Do the $\theta$ derivatives by hand. Ha ha.
  • Use a symbolic algebra program. Good luck getting the result coded correctly.
  • Use automatic differentiation methods developed recently by our machine learning colleagues.

It has been four years since your question was posted. I hope you graduated successfully!


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.