Compared to the previous (differential) kinematics concerning how a
robot moves, robot dynamics in the following lectures concerns about why
a robot moves. Dynamics equation establishes a relationship between the
forces/torques and their acceleration/velocities/positions.
Lagrange formulation provides a systematic way to derive dynamics
equation, independently of the reference coordinate frame. Once a set of
independent variables \(q_{i}, i=1, \ldots, n\), termed generalized
coordinates, are chosen which effectively describe an \(n\)-DOF robotic
system, the Lagrangian of the system can be defined as
\[\mathcal{L}=\mathcal{T}-\mathcal{U}\]
where \(\mathcal{T}\) and \(\mathcal{U}\) are the total kinetic energy and
potential energy of the system, respectively. The dynamics equations
from the Lagrangian is
where \(\xi_{i}\) is the generalized force associated with \(q_{i}\) (the
generalized force \(\xi_i\) should be dual to \(q_i\) in the sense that
\(\xi_i*q_i\) generate power). In compact form, the above equation can be
written as
For a manipulator with an open kinematic chain, the generalized
coordinates are joint variables \(\boldsymbol{q}\). The generalized forces
are given by the net forces from the joint actuator torques, the joint
friction torques, as well as the joint torques induced by end-effector
forces at the contact with the environment.
where \(\mathcal{T}_{\ell_{i}}\) is the kinetic energy of Link \(i\) and
\(\mathcal{T}_{m_{i}}\) is the kinetic energy of the motor actuating Joint
\(i\)
The kinetic energy contribution of Link \(i\) is given by
\[\label{equ.link_ke}
\mathcal{T}_{\ell_{i}}=\frac{1}{2} \int_{V_{\ell_{i}}} \dot{\boldsymbol{p}}_{i}^{* T} \dot{\boldsymbol{p}}_{i}^{*} \rho d V\]
where \(\dot{\boldsymbol{p}}_{i}^{*}\) denotes the linear velocity vector
and \(\rho\) is the density of the elementary particle of volume
\(d V ; V_{\ell_{i}}\) is the volume of Link \(i\). Consider the position
vector \(\boldsymbol{p}_{i}^{*}\) of the elementary particle and the
position vector \(\boldsymbol{p}_{l_{i}}\) of the link center of mass,
both expressed in the base frame. One has
where \(\dot{\boldsymbol{p}}_{\ell_{i}}\) is the linear velocity of the
center of mass and \(\boldsymbol{\omega}_{i}\) is the angular velocity of
the link. By substituting the velocity expression
([equ.2]{reference-type=”ref” reference=”equ.2”}) into
([equ.link_ke]{reference-type=”ref”
reference=”equ.link_ke”}), it leads to multiple terms
Translational term
\[\frac{1}{2} \int_{V_{\ell_{i}}} \dot{\boldsymbol{p}}_{\ell_{i}}^{T} \dot{\boldsymbol{p}}_{\ell_{i}} \rho d V=\frac{1}{2} m_{\ell_{i}} \dot{\boldsymbol{p}}_{\ell_{i}}^{T} \dot{\boldsymbol{p}}_{\ell_{i}}\]
Cross term
\[2\left(\frac{1}{2} \int_{V_{\ell_{i}}} \dot{\boldsymbol{p}}_{\ell_{i}}^{T} \boldsymbol{S}\left(\boldsymbol{\omega}_{i}\right) \boldsymbol{r}_{i} \rho d V\right)=2\left(\frac{1}{2} \dot{\boldsymbol{p}}_{\ell_{i}}^{T} \boldsymbol{S}\left(\boldsymbol{\omega}_{i}\right) \int_{V_{\ell_{i}}}\left(\boldsymbol{p}_{i}^{*}-\boldsymbol{p}_{\ell_{i}}\right) \rho d V\right)=0\]
Rotational term
\[\frac{1}{2} \int_{V_{\ell_{i}}} \boldsymbol{r}_{i}^{T} \boldsymbol{S}^{T}\left(\boldsymbol{\omega}_{i}\right) \boldsymbol{S}\left(\boldsymbol{\omega}_{i}\right) \boldsymbol{r}_{i} \rho d V=\frac{1}{2} \boldsymbol{\omega}_{i}^{T}\left(\int_{V_{\ell_{i}}} \boldsymbol{S}^{T}\left(\boldsymbol{r}_{i}\right) \boldsymbol{S}\left(\boldsymbol{r}_{i}\right) \rho d V\right) \boldsymbol{\omega}_{i}=\frac{1}{2} \boldsymbol{\omega}_{i}^{T} \boldsymbol{I}_{\ell_{i}} \boldsymbol{\omega}_{i}\]
\[\begin{split}\begin{aligned}
\boldsymbol{I}_{\ell_{i}} & =\left[\begin{array}{ccc}
\int\left(r_{i y}^{2}+r_{i z}^{2}\right) \rho d V & -\int r_{i x} r_{i y} \rho d V & -\int r_{i x} r_{i z} \rho d V \\
* & \int\left(r_{i x}^{2}+r_{i z}^{2}\right) \rho d V & -\int r_{i y} r_{i z} \rho d V \\
* & * & \int\left(r_{i x}^{2}+r_{i y}^{2}\right) \rho d V
\end{array}\right]
= {\left[\begin{array}{ccc}
I_{\ell_{i} x x} & -I_{\ell_{i} x y} & -I_{\ell_{i} x z} \\
* & I_{\ell_{i} y y} & -I_{\ell_{i} y z} \\
* & * & I_{\ell_{i} z z}
\end{array}\right] . }
\end{aligned}\end{split}\]
represents the inertia tensor relative to the centre of mass of Link \(i\)
when expressed in the base frame. Notice that the inertia tensor, when
expressed in the base frame, is configuration-dependent. If the angular
velocity of Link \(i\) is expressed with reference to a frame attached to
the link (as in the Denavit-Hartenberg convention), it is
where \(\boldsymbol{R}_{i}\) is the rotation matrix from Link \(i\) frame to
the base frame. When referred to the link frame, the inertia tensor is
constant. Let \(\boldsymbol{I}_{\ell_{i}}^{i}\) denote such tensor:
If the axes of Link \(i\) frame coincide with the central axes of inertia,
the inertia tensor relative to the centre of mass is a diagonal matrix.
By summing the translational and rotational terms,
At this point, it is necessary to express the kinetic energy as a
function of the generalized coordinates of the system, that are the
joint variables. To this end,
where the contributions of the Jacobian columns relative to the joint
velocities have been taken into account up to current Link \(i\). The
Jacobians to consider are then:
\[\begin{split}\begin{gathered}
\boldsymbol{J}_{P j}^{\left(\ell_{i}\right)}= \begin{cases}\boldsymbol{z}_{j-1} & \text { for a prismatic joint } \\
\boldsymbol{z}_{j-1} \times\left(\boldsymbol{p}_{\ell_{i}}-\boldsymbol{p}_{j-1}\right) &
\text { for a revolute joint }\end{cases} \qquad
\boldsymbol{\jmath}_{O j}^{\left(\ell_{i}\right)}= \begin{cases}\mathbf{0} & \text { for a prismatic joint } \\
\boldsymbol{z}_{j-1} & \text { for a revolute joint. }\end{cases}
\end{gathered}\end{split}\]
where \(\boldsymbol{p}_{j-1}\) is the position of the origin of Frame
\(j-1\) and \(\boldsymbol{z}_{j-1}\) is the unit vector of axis \(z\) of Frame
\(j-1\).
It follows that the kinetic energy of Link \(i\) can be written as
The motor of Joint \(i\) is assumed to be located on Link \(i-1\). The
kinetic energy contribution of the motor of Joint \(i\) can be computed in
a formally analogous way to that of the link. Consider the typical case
of rotary electric motors (that can actuate both revolute and prismatic
joints by means of suitable transmissions). It can be assumed that the
contribution of the fixed part (stator) is included in that of the link
on which such motor is located, and thus the sole contribution of the
rotor is to be computed.
The kinetic energy of Rotor \(i\) can be written as
where \(m_{m_{i}}\) is the mass of the rotor,
\(\dot{\boldsymbol{p}}_{m_{i}}\) denotes the linear velocity of the centre
of mass of the rotor, \(\boldsymbol{I}_{m_{i}}\) is the inertia tensor of
the rotor relative to its centre of mass, and
\(\boldsymbol{\omega}_{m_{i}}\) denotes the angular velocity of the rotor.
Let \(\vartheta_{m_{i}}\) denote the angular position of the rotor. On the
assumption of a rigid transmission, one has
\[k_{r i} \dot{q}_{i}=\dot{\vartheta}_{m_{i}}\]
where \(k_{r i}\) is gear reduction ratio. For a prismatic joint, gear
reduction ratio is a dimensional quantity.
where \(\boldsymbol{\omega}_{i-1}\) is the angular velocity of Link \(i-1\)
on which the motor is located, and \(\boldsymbol{z}_{m_{i}}\) denotes the
unit vector along the rotor axis.
To express the rotor kinetic energy as a function of the joint
variables, it is worth expressing the linear velocity of the rotor
centre of mass as
\[\begin{split}\boldsymbol{J}_{P j}^{\left(m_{i}\right)}= \begin{cases}\boldsymbol{z}_{j-1} & \text { for a prismatic joint } \\ \boldsymbol{z}_{j-1} \times\left(\boldsymbol{p}_{m_{i}}-\boldsymbol{p}_{j-1}\right) & \text { for a revolute joint }\end{cases}\end{split}\]
where \(\boldsymbol{p}_{j-1}\) is the position vector of the origin of
Frame \(j-1\).
The angular velocity expressed as a function of the joint variables is
$\(\boldsymbol{\omega}_{m_{i}}=\boldsymbol{J}_{O}^{\left(m_{i}\right)} \dot{\boldsymbol{q}}\)$
Finally, by summing the kinetic energies of Links and motors, the total
kinetic energy of the manipulator with actuators is given by the
quadratic form
As done for kinetic energy, the potential energy stored in the
manipulator is given by the sum of the contributions relative to each
link as well as to each rotor:
On the assumption of rigid links, the potential energy of gravitational
forces is
\[\mathcal{U}_{\ell_{i}}=-\int_{V_{\ell_{i}}} \boldsymbol{g}_{0}^{T} \boldsymbol{p}_{i}^{*} \rho d V=-m_{\ell_{i}} \boldsymbol{g}_{0}^{T} \boldsymbol{p}_{\ell_{i}}\]
where \(\boldsymbol{g}_{0}\) is the gravity acceleration vector in the
base frame (e.g., \(\boldsymbol{g}_{0}=\)\(\left[\begin{array}{lll}0 & 0 & -g\end{array}\right]^{T}\) if \(z\) is the
vertical axis), and \(\boldsymbol{p}_{\ell_{i}}\) the center of mass of
Link \(i\). As regards the contribution of Rotor \(i\), one has
which reveals that potential energy, through the vectors
\(\boldsymbol{p}_{\ell_{i}}\) and \(\boldsymbol{p}_{m_{i}}\) is a function
only of the joint variables \(\boldsymbol{q}\), and not of the joint
velocities \(\dot{\boldsymbol{q}}\)
Taking the derivatives required by Lagrange equations
\(\frac{d}{d t}\left(\frac{\partial \mathcal{L}}{\partial \dot{\boldsymbol{q}}}\right)^{T}-\left(\frac{\partial \mathcal{L}}{\partial \boldsymbol{q}}\right)^{T}=\boldsymbol{\xi}\)
and recalling that \(\mathcal{U}\) does not depend on
\(\dot{\boldsymbol{q}}\) yields
A physical interpretation of the above reveals that:
For the acceleration terms: The coefficient \(b_{i i}\) represents the
moment of inertia at Joint \(i\) axis, in the current manipulator
configuration, when the other joints are blocked. The coefficient
\(b_{i j}\) accounts for the effect of acceleration of Joint \(j\) on
Joint \(j\).
For the quadratic velocity terms: The term
\(h_{i j j} \dot{q}_{j}^{2}\) is the centrifugal effect induced on
Joint \(i\) by velocity of Joint \(j\). The term
\(h_{i j k} \dot{q}_{j} \dot{q}_{k}\) represents the Coriolis effect
induced on Joint \(i\) by velocities of Joints \(j\) and \(k\).
For the configuration-dependent terms: The term \(g_{i}\) represents
the moment generated at Joint \(i\) axis of the manipulator, in the
current configuration, by the presence of gravity.
Regarding the generalized force \(\boldsymbol{\xi}\) at the manipulator
joints, it is
$\(\boldsymbol{\xi}=\underbrace{\boldsymbol{\tau}}_{\text{motor torque}}-\underbrace{\boldsymbol{F}_{v} \dot{\boldsymbol{q}}}_{\text{viscous friction torques}}-\underbrace{\boldsymbol{F}_{s} \operatorname{sgn}(\dot{\boldsymbol{q}})}_{\text{Coulomb friction torques}}-\underbrace{\boldsymbol{J}^{T}(\boldsymbol{q}) \boldsymbol{h}_{e}}_{\text{torques induced by contact forces.}}\)$
where \(\boldsymbol{F}_{v}\) denotes the \((n \times n)\) diagonal matrix of
viscous friction coefficients; \(\boldsymbol{F}_{s}\) is an \((n \times n)\)
diagonal matrix and \(\operatorname{sgn}(\dot{\boldsymbol{q}})\) denotes
the \((n \times 1)\) vector whose components are given by the sign
functions of the single joint velocities; and \(\boldsymbol{h}_{e}\)
denotes the vector of force and moment exerted by the end-effector on
the environment.
In summary, the equations of motion for a robot manipulator is
Property: Skew-symmetry of \(\dot{\boldsymbol{B}}-2\boldsymbol{C}\)#
The proof idea: the total time derivative of kinetic energy of the
manipulator equals the power generated by all the forces/torques
including the gravity.
Let ([equ.diff_kinenergy]{reference-type=”ref”
reference=”equ.diff_kinenergy”}) equal
([equ.power_forces]{reference-type=”ref”
reference=”equ.power_forces”}), leading to $\(\label{equ.intermediate}
\dot{\boldsymbol{q}}^{T}\boldsymbol{B}(\boldsymbol{q})\ddot{\boldsymbol{q}}+\frac{1}{2}\left(
\dot{\boldsymbol{q}}^{T} \dot{\boldsymbol{B}}(\boldsymbol{q})\dot{\boldsymbol{q}}
\right)=\dot{\boldsymbol{q}}^{T}(-\boldsymbol{F}_v{\dot{\boldsymbol{q}}}-\boldsymbol{F}_s\text{sgn}({\dot{\boldsymbol{q}}})-\boldsymbol{g}(\boldsymbol{q})-\boldsymbol{\tau}-\boldsymbol{J}^T(\boldsymbol{q})\boldsymbol{h}_{e})\)$
Recall the dynamics equation we have previously introduced,
We multiply \(\dot{\boldsymbol{q}}^T\) on both sides of the above dynamics
equation and subtract
([equ.intermediate]{reference-type=”ref”
reference=”equ.intermediate”}) on both sides. This yields
which holds for any \(\dot{\boldsymbol{q}}\). It means that
\(\boldsymbol{B}(\boldsymbol{q})\dot{\boldsymbol{q}}-2\boldsymbol{C}(\boldsymbol{q}, \dot{\boldsymbol{q}})\)
is a skew-symmetric matrix.
The vector of generalized coordinates is
\(\boldsymbol{q}=\left[\begin{array}{ll}\vartheta_{1} & \vartheta_{2}\end{array}\right]^{T}\).
Let \(\ell_{1}, \ell_{2}\) be the distances of the centres of mass of the
two links from the respective joint axes. Also let
\(m_{\ell_{1}}, m_{\ell_{2}}\) be the masses of the two links, and
\(m_{m_{1}}, m_{m_{2}}\) the masses of the rotors of the two joint motors.
Finally, let \(I_{m_{1}}, I_{m_{2}}\) be the moments of inertia with
respect to the axes of the two rotors, and \(I_{\ell_{1}}, I_{\ell_{2}}\)
the moments of inertia relative to the Centers of mass of the two links,
respectively. It is assumed that
\(\boldsymbol{p}_{m_{i}}=\boldsymbol{p}_{i-1}\) and
\(\boldsymbol{z}_{m_{i}}=\boldsymbol{z}_{i-1}\), for \(i=1,2\), i.e., the
motors are located on the joint axes with centres of mass located at the
origins of the respective frames.
With the chosen coordinate frames, computation of the Jacobians for each
link is
Notice that \(\boldsymbol{\omega}_{i}\), for \(i=1,2\), is aligned with
\(z_{0}\), and thus \(\boldsymbol{R}_{i}\) has no effect. It is then
possible to refer to the scalar moments of inertia \(I_{\ell_{i}}\).
Compared to the previous example, the inertia matrix is now
configurationdependent. Notice that the term \(k_{r 2} I_{m_{2}}\) in the
off-diagonal term of the inertia matrix derives from having considered
the rotational part of the motor kinetic energy as due to the total
angular velocity, i.e., its own angular velocity and that of the
preceding link in the kinematic chain. At first approximation,
especially in the case of high values of the gear reduction ratio, this
contribution could be neglected; in the resulting reduced model, motor
inertias would appear uniquely in the elements on the diagonal of the
inertia matrix with terms of the type \(k_{r i}^{2} I_{m_{i}}\)
Computing the matrix \(\boldsymbol{N}\) in \((7.47)\) gives
\[\begin{split}\begin{aligned}
\boldsymbol{N}(\boldsymbol{q}, \dot{\boldsymbol{q}}) & =\dot{\boldsymbol{B}}(\boldsymbol{q})-2 \boldsymbol{C}(\boldsymbol{q}, \dot{\boldsymbol{q}}) =\left[\begin{array}{cc}
2 h \dot{\vartheta}_{2} & h \dot{\vartheta}_{2} \\
h \dot{\vartheta}_{2} & 0
\end{array}\right]-2\left[\begin{array}{cc}
h \dot{\vartheta}_{2} & h\left(\dot{\vartheta}_{1}+\dot{\vartheta}_{2}\right) \\
-h \dot{\vartheta}_{1} & 0
\end{array}\right] =\left[\begin{array}{cc}
0 & -2 h \dot{\vartheta}_{1}-h \dot{\vartheta}_{2} \\
2 h \dot{\vartheta}_{1}+h \dot{\vartheta}_{2} & 0
\end{array}\right]
\end{aligned}\end{split}\]
that allows the verification of the skew-symmetry property. As for the
gravitational terms, since
\(\boldsymbol{g}_{0}=\left[\begin{array}{lll}0 & -g & 0\end{array}\right]^{T}\),
\[\begin{split}\begin{aligned}
& g_{1}=\left(m_{\ell_{1}} \ell_{1}+m_{m_{2}} a_{1}+m_{\ell_{2}} a_{1}\right) g c_{1}+m_{\ell_{2}} \ell_{2} g c_{12} \\
& g_{2}=m_{\ell_{2}} \ell_{2} g c_{12} .
\end{aligned}\end{split}\]
In the absence of friction and tip contact forces, the resulting
equations of motion are