Skip to content

Jacobians: Velocities & Static Forces

Linear Velocity Vector

Differentiation of Position Vector

We calculate the velocity of a point in frame \(\{B\}\), by derivative of its position

\[ ^B V_Q = \frac{d}{dt} {^BQ}=\lim_{\Delta t \rightarrow 0}\frac{{^B}Q(t+\Delta t)-{^B}Q(t)}{\Delta t}. \]

which is also a vector, so could be expressed in another frame \(\{A\}\), denoted as

\[ ^A(^BV_Q)=\frac{^A d}{dt}{^BQ}. \]

Here we have two notations. Note that we express a velocity in two frames, or the velocity is dependent on two frames.The first one with respect to which is the differentiation is done, and one in which the resulting velocity is done.

Linear velocity expressed in different frames

Actually, we calculate differential in the frame of \(\{B\}\), we mean that the two frames are both \(\{B\}\), i.e.

\[ ^B({^BV_Q})={^B V_Q}. \]

For simplicity, we write the latter form usually.

Since the resulting velocities are expressed usually in the same frame which it gets differential, we want to get rid of it by rotation matrix

\[ ^A({^BV_Q})={^A_BR}{^BV_Q}. \]

We usually very often consider the velocity of the origin of a frame raletive to an understood universe reference frame, like Solid frame. And we denote this velocity of an origin as

\[ v_C={^UV_{CORG}}. \]

where the reference frame is \(\{U\}\) and the frame whose origin measured is \(\{C\}\).

Angular Velocity Vector

Angular Velocity Vector

Define \(^A\Omega_B\) to be the instantaneous axis of the rotation of frame \(\{B\}\) relative to \(\{A\}\). In part Supplementary info, we will discuss more about why we use these vector to represent angular velocity.

Due to a vector could be determined on if its direction and magnitude are both determined, we let its magnitude to express the speed of rotation.

Similar to Linear velocity vector, we can express angular velocity vector in different frames. We introduce

\[ \omega_C={^U\Omega_C} \]

to show the angular velocity of frame \(\{C\}\) relative to some understood reference frame \(\{U\}\). Thus \(^A\omega_C\) means angular velocity of frame \(\{C\}\) expressed in frame \(\{A\}\) but default relative to frame \(\{U\}\).

Linear Motions in different frames

Linear motion in frame with Linear velocity: Prismatic

Assume frame \(\{B\}\) is located relative to \(\{A\}\), with a position vector \(^AO_B\), and rotation matrix \(^A_BR\). Here we assume \(^A_BR\) does not change with time. A point \(Q\) expressed in frame \(B\) is \(^BQ\), and has its linear velocity \(^BV_Q\). Then

\[ ^AV_Q={^AV_{O_B}}+{^A_BR}{^BV_Q}, \]

where we call \(^AV_{O_B}=^AV_B\) are the linear velocity of frame \(\{B\}\) relative to frame \(\{A\}\).

recall same point in different frames, we have \(Q\) express in frame \(\{A\}\)

\[ ^AQ={^AO_B}+{^A_BR}{^BQ}. \]

If we have velocity of \(Q\) in frame \(\{B\}\)

\[ ^B V_Q =\lim_{\Delta t \rightarrow 0}\frac{{^B}Q(t+\Delta t)-{^B}Q(t)}{\Delta t}, \]

then its expression in frame \(\{A\}\) is

\[ \begin{align*} ^AV_Q&= \lim_{\Delta t \rightarrow 0}\frac{{^A}Q(t+\Delta t)-{^A}Q(t)}{\Delta t}\\ &=\lim_{\Delta t \rightarrow 0}\frac{[{^AO_B}(t+\Delta t)-{^AO_B}(t)]+[{^AR_B}{^BQ}(t+\Delta t)-{^AR_B}{^BQ}(t)]}{\Delta t}\\ &={^AV_{O_B}}+\lim_{\Delta t \rightarrow 0}\frac{{^AR_B}[{^BQ}(t+\Delta t)-{^BQ}(t)]}{\Delta t}\\ &={^AV_{O_B}}+{^A_BR}{^BV_Q}. \end{align*} \]

\(\square\)

Linear motion in frame with Rotational velocity: Revolute

Assume frame \(\{B\}\) coincide with \(\{A\}\) with zero linear velocity, i.e. their origins \(O_A\) and \(O_B\) remain coincident all the time. Let the orientation of \(\{B\}\) changes with time, expressed by \(^A\Omega_B\).

(i) A point \(Q\) fixed in frame \(\{B\}\) (i.e. \(^BV_Q=0\)), would apparently move because of the rotation of frame \(\{B\}\). Then

\[ ^AV_Q={^A\Omega_B}\times {^AQ}. \]

(ii) The point \(Q\) also moves in frame \(B\), i.e. \(^BQ\) (or \(^AQ\)) would change and \(^BV_Q\neq 0\). Then

\[ ^AV_Q={^A_BR}{^BV_Q}+{^A\Omega_B}\times ({^A_BR}{^BQ}). \]

(i) Here we have to find out the movement of \(Q\) viewed in frame \(\{A\}\). See the following picture in details.

Check that the magnitude of position change in small time \(\Delta t\) is

\[ |\Delta Q|=|{^AQ}|\sin \theta{|^A\Omega_B}|\Delta t, \]

and the direction is perpendicular to both vector \(^A\Omega_B\) and \(^AQ\). Actually, we can easily get the following relation if readers have learned general physics

\[ ^AV_Q={^A\Omega_B}\times {^AQ}. \]

(ii) By superposition of velocities and former equation of linear velocity relationship

\[ \begin{align*} ^AV_Q&={^A({^BV_Q})}+{^A\Omega_B}\times {^AQ}\\ &={^A_BR}{^BV_Q}+{^A\Omega_B}\times ({^A_BR}{^BQ}). \end{align*} \]

\(\square\)

General case

Adding the above two cases up, we have a formula for linear velocity of a point \(Q\) in frame \(\{B\}\) expressed in another frame \(\{A\}\)

\[ ^AV_Q={^AV_B}+{^A\Omega_B}\times {{^A_BR}{^BQ}} +{^A_BR}{^BV_Q} \]

where the first item is the translation of \(\{B\}\) relative to \(\{A\}\), the second item is the rotation of \(\{B\}\) relative to \(\{A\}\) and the last item is the translation movement of \(Q\) itself expressed in \(\{A\}\), respectively.

supplementary info

Here we talk a little more with rotation item \({^A\Omega_B}\times {^AQ}\).

Lemma 1: properties of the derivative of an orthonormal matrix

For orthonormal matrix \(R\in \mathbb{R}^n\), or rotation matrix (\(n=3\)) in this course, define \(S=\dot{R} R^T\), then it satisfies

\[ S+S^T=\pmb{0} \]

which is a skew-symmetric matrix.

By properties of orthonormal matrix, we have

\[ RR^T=I_{n\times n}. \]

then we take a derivative on both sides

\[ \dot{R} R^T+ R \dot{R}^T=\pmb{0}. \]

by propeties of transpose, we have

\[ \dot{R} R^T+ (\dot{R} R^T)^T=\pmb{0}. \]

which just means the result.

\(\square\)

Still the case (ii) in Linear motion in frame with Rotational velocity: Revolute, now we deduce the velocity relationship in another perspective.

Lemma 2: rotational description

If we define \(^A_BS={^A_B\dot{R}} {^A_BR}^{T}\), then

\[ ^AV_Q={^A_BS}{^AQ}+{^A_BR}{^BV_Q}. \]

Easy to see that \(^A_BS\) satisfies the property in Lemma 1.

We start from

\[ ^AQ={^A_BR}{^BQ}. \]

Take a derivative on both sides, we have

\[ \begin{align*} ^AV_Q&={^A_B\dot{R}}{^BQ}+{^A_BR}{^BV_Q}\\ &={^A_B\dot{R}} {^A_BR}^{T}{^AQ}+ {^A_BR}{^BV_Q}\\ \end{align*} \]

which gives the result if we substitute \(^A_BS\) in.

\(\square\)

Compared to the result we get in Linear motion in frame with Rotational velocity: Revolute, the following theorem comes out naturally.

Theorem for skew-sysmmetric matrix and vector cross-product

Define a vector \(\Omega=[\begin{array}{ccc}\Omega_x& \Omega_y& \Omega_z\end{array}]^T\) and a point \(Q\), then

\[ \Omega\times Q=S\cdot Q \]

where \(S\) is a skew-symmetric matrix with an expression

\[ S=\left[\begin{array}{ccc} 0 & -\Omega_z & \Omega_y\\ \Omega_z & 0 & -\Omega_x\\ -\Omega_y & \Omega_x & 0\\ \end{array}\right]. \]

We call \(\Omega\) angular velocity vector, the same meaning as we defined in Angular Velocity Vector.

We calculate the cross product \(\Omega\times Q\) gives

\[ \Omega\times Q=\left|\begin{array}{ccc} i&j&k\\ \Omega_x &\Omega_y&\Omega_z\\ Q_x &Q_y &Q_z \end{array}\right| \]

rewrite the above calculation in form of a linear transformation, or matrix premultiplication \(S\cdot Q\) as

\[ \Omega\times Q = \left[\begin{array}{ccc} 0 & -\Omega_z & \Omega_y\\ \Omega_z & 0 & -\Omega_x\\ -\Omega_y & \Omega_x & 0\\ \end{array}\right] \cdot \left[\begin{array}{c} Q_x\\Q_y\\Q_z \end{array}\right] :=SQ. \]

\(\square\)

We dig into the representation of angular velocity vector \(\Omega\).

Theorem for physical insight concerning angular velocity vector

Angular velocity vector could be expressed as

\[ \Omega=\dot{\theta}\hat{K}, \]

where \(\hat{K}\) is the rotation axis and \(\dot{\theta}\) is the speed of rotation about the axis.

Consider the differentiation of a rotation matrix \(R\)

\[ \begin{equation} \dot{R}=\frac{dR}{dt}=\lim_{\Delta\rightarrow \infty}\frac{R(t+\Delta t)-R(t)}{\Delta t}.\label{R-differential} \end{equation} \]

Here we rewrite \(R(t+\Delta t)\) in a sense of rotation. That is, in time period \(\Delta t\), frame \(\{B\}\) rotates about some axis \(\hat{K}\) with a little angle \(\Delta \theta\) (using expression of equivalent axis), and then we get the final rotation matrix

\[ R(t+\Delta t)=R_{K}(\Delta\theta)R(t). \]

equation \(\ref{R-differential}\) becomes

\[ \begin{align} \nonumber\dot{R}&=\lim_{\Delta\rightarrow \infty}\frac{R_{K}(\Delta\theta)R(t)-R(t)}{\Delta t}\\ &=\lim_{\Delta\rightarrow \infty}\left[\frac{R_{K}(\Delta\theta)-I_{3}}{\Delta t}\right]R(t)\label{R-differential2} \end{align} \]

recall that we have a linear approximation of \(R_K(\Delta\theta)\) when \(\Delta\theta\) is quite small, i.e.

\[ R_K(\Delta\theta)=\left[\begin{array}{ccc} 1 & -k_z \Delta\theta & k_y \Delta\theta\\ k_z\Delta\theta & 1 & -k_x\Delta\theta\\ -k_y\Delta\theta & k_x\Delta\theta &1 \end{array}\right] \]

so equation \(\ref{R-differential2}\) becomes

\[ \begin{align} \dot{R}=\left[\begin{array}{ccc} 0 & -k_z \dot{\theta} & k_y \dot{\theta}\\ k_z\dot{\theta} & 0 & -k_x\dot{\theta}\\ -k_y\dot{\theta} & k_x\dot{\theta} &0 \end{array}\right] R(t).\label{physical-rotation} \end{align} \]

Postmultiply \(R^{-1}\) on both sides we have

\[ \dot{R}R^{T}=\left[\begin{array}{ccc} 0 & -k_z \dot{\theta} & k_y \dot{\theta}\\ k_z\dot{\theta} & 0 & -k_x\dot{\theta}\\ -k_y\dot{\theta} & k_x\dot{\theta} &0 \end{array}\right]. \]

Comparing the result in Theorem for skew-sysmmetric matrix and vector cross-product, we have

\[ \Omega = \left[\begin{array}{ccc} \Omega_x& \Omega_y&\Omega_z \end{array}\right]^T=\left[\begin{array}{ccc} k_x\dot{\theta}& k_y\dot{\theta}&k_z\dot{\theta} \end{array}\right]^T=\dot{\theta}\hat{K}. \]

\(\square\)

Actually, equation \(\ref{physical-rotation}\) deduced by its physical meaning, is equivalent to what we have deduced in Lemma 1: properties of the derivative of an orthonormal matrix.

Velocity Propagation

Now we consider velocity propagations. Here we use \(\omega_i\) and \(v_i\) to be the angular and linear velocity of the center of frame \(i\) (derivative calculated in frame \(0\)), respectively. And their expression in frame \(\{i-1\}\) is \(^{i-1}\omega_i\), \(^{i-1}v_i\), respectively.

Linear Velocity

Assume we have frame \(\{i\}\) and \(\{i+1\}\).

(i) Next joint is Revolute.

In frame \(i\), we have \(^{i}v_{i+1}\) expressed by

\[ ^iv_{i+1}=^iv_{i}+{^i\omega_{i+1}}\times {^iO_{i+1}}. \]

Premultiply both sides \(^{i+1}_i R\), we have

\[ ^{i+1}v_{i+1}={^{i+1}_i R}[^iv_{i}+{^i\omega_{i+1}}\times {^iO_{i+1}}]. \]

(ii) Next joint is Prismatic.

In frame \(i\), we have \(^{i}v_{i+1}\) expressed by

\[ ^{i+1}v_{i+1}={^{i+1}_i R}[^iv_{i}+{^i\omega_{i+1}}\times {^iO_{i+1}}] + \dot{d}_{i+1}\hat{Z}_{i+1}. \]

Angular Velocity

Assume we have frame \(\{i\}\) and \(\{i+1\}\).

(i) Next joint is revolute.

In frame \(i\), we have \(^{i}\omega_{i+1}\) expressed by

\[ ^i\omega_{i+1}=^i\omega_i+{^i_{i+1}R} \dot{\theta}_{i+1} {^{i+1}\hat{Z}_{i+1}} \]

where \(\dot{\theta}_{i+1}\) means the magnitude of rotation speed, \({^{i+1}\hat{Z}_{i+1}}\) means the rotation aixs expressed in frame \(i+1\), i.e. \({^{i+1}\hat{Z}_{i+1}}=\left[\begin{array}{ccc} 0&0&1\end{array}\right]^T\). Note that rotation matrix \(^i_{i+1}R\) rotates the axis of rotation of joint \(i+1\) into its description in frame \(i\).

Premultiply both sides \(^{i+1}_i R\), we have

\[ \begin{align} ^{i+1}\omega_{i+1}={^{i+1}_i R}^i\omega_i+ \dot{\theta}_{i+1} {^{i+1}\hat{Z}_{i+1}}.\label{revolute-angular} \end{align} \]

(ii) Next joint is Prismatic.

Remove item for axis rotation from equation \(\ref{revolute-angular}\), we have a much simpler one for prismatic.

\[ \begin{align} ^{i+1}\omega_{i+1}={^{i+1}_i R}^i\omega_i.\label{prismatic-revolute} \end{align} \]

Jacobians

In the field of robotics, we generally use Jacobians that relate joint velocities to Cartesian velocities of the tip of the arm. In 3D circumstances, we have the small change of linear and angular displacement of the end effector

\[ ^0\Delta r=\left[\begin{array}{c} ^0\Delta R\\ ^0\Delta \alpha \end{array}\right]={^0J(\Theta)}\Delta {\Theta}, \]

by dividing both sides \(\Delta t\) and let \(\Delta t\rightarrow \infty\), we have linear and angular velocity of the end effector

\[ ^0\nu=\left[\begin{array}{c} ^0v\\ ^0\omega \end{array}\right]={^0J(\Theta)}\dot{\Theta}, \]

where \(\dot{\Theta}=\left[\begin{array}{cccccc} \dot{\theta_1}& \dot{\theta_2}& \dot{\theta_3}& \dot{\theta_4}& \dot{\theta_5 }& \dot{\theta_6} \end{array}\right]^T\) denotes six (generally) rotation axis of the manipulator.

Changing a Jacobian's frame of reference

Given a Jacobian matrix in frame \(\{B\}\), i.e.

\[ \left[\begin{array}{c} ^Bv\\ ^B\omega \end{array}\right]={^B\nu}={^BJ(\Theta)}\dot{\Theta}, \]

then

\[ \left[\begin{array}{c} ^Av\\ ^A\omega \end{array}\right] = \left[\begin{array}{c:c} {^A_BR}& 0\\ \hdashline 0& {^A_BR}\\ \end{array}\right]\left[\begin{array}{c} ^Bv\\ ^B\omega \end{array}\right]=\left[\begin{array}{c:c} {^A_BR}& 0\\ \hdashline 0& {^A_BR}\\ \end{array}\right]{^BJ(\Theta)}\dot{\Theta} \]

which gives

\[ {^AJ(\Theta)}=\left[\begin{array}{c:c} {^A_BR}& 0\\ \hdashline 0& {^A_BR}\\ \end{array}\right]{^BJ(\Theta)}. \]

Static Forces

We also have to consider how forces and moments "propagate" from one link to the next. We wish to solve for the joint torques that must be acting to keep the system in static equilibrium. Here we do not consider the gravity of links.

Symbols for the force and torque

Denote \(f_i\) to be the force exerted on link \(i\) by link \(i-1\), \(n_i\) to be the torque exerted on link \(i\) by link \(i-1\). Check the following image for details.

so for link \(i\), it follows force and torque equilibrium

\[ \begin{cases} ^if_i-{^if_{i+1}}=0,\\ {^in_i}-{^in_{i+1}}-{^iP_{i+1}}\times {^if_{i+1}}=0. \end{cases} \]

thus we have the propagation formula

\[ \begin{cases} ^if_i={^if_{i+1}},\\ {^in_i}={^in_{i+1}}+{^iP_{i+1}}\times {^if_{i+1}}. \end{cases} \]

which transfer the force from the end effector to the base \(0\).

To write these equations in terms of only forces and moments defined within their own link frames, we transform with the rotation matrix

\[ \begin{cases} ^if_i={^i_{i+1}R}\cdot {^{i+1}f_{i+1}},\\ {^in_i}={^i_{i+1}R}\cdot {^{i+1}n_{i+1}}+{^iP_{i+1}}\times {^if_{i}}. \end{cases} \]

After computing the forces and torques exerted on each link, now we have to consider, in each joint, how much force or torque should we provide so as to keep the system in equilibrium?

Forces or Torques provided by joints

(i) For revolute joint \(i\), \(^if_i\) prevents it from translation, and \(^in_i\) prevents it from rotation in other directions. So if the joint want to rotate, we project \(^in_i\) into the rotation axis, i.e. \(\hat{Z}_i\), and

\[ \tau_i={^in_i}\cdot {^i\hat{Z}_i}={^in_i^T} {^i\hat{Z}_i}. \]

(ii) For Prismatic joint \(i\), \(^in_i\) pervents it from rotation, and \(^if_i\) prevents it from translation in other directions. So if the joint want to translate, we project \(^if_i\) into the translation axis, i.e. \(\hat{Z}_i\), and

\[ \tau_i={^if_i}\cdot {^i\hat{Z}_i}={^if_i^T} {^i\hat{Z}_i}. \]

where we still use \(\tau_i\) to represent the linear force in (ii).

Jacobians in the force domain

Here we use the principle of virtual work to demonstrate the relationship in force.

From a general frame, we have

\[ \mathcal{F}^T \Delta r=\tau^T\Delta \theta \]

where \(\mathcal{F}_{6\times 1}=[\begin{array}{cc} F& N\end{array}]^T\), \(F\) is a force vector, and \(N\) is a moment vector.

by definition of Jacobian, we have

\[ \mathcal{F}^T J(\Theta)\Theta=\tau^T\Delta \theta \]

So

\[ \begin{align} \mathcal{F}^T J(\Theta)=\tau^T, \text{ or }\tau=J(\Theta)\mathcal{F}.\label{F-tau-relation} \end{align} \]