158 lines
4.9 KiB
TeX
158 lines
4.9 KiB
TeX
% File: computation_notes.tex
|
|
% Created: Mon Dec 20 02:00 PM 2010 C
|
|
% Last Change: Mon Dec 20 02:00 PM 2010 C
|
|
%
|
|
\documentclass[a4paper]{article}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage{graphicx}
|
|
|
|
\newcommand{\Spa}[1]{\mathbf{\hat{#1}}}
|
|
\newcommand{\Nspa}[1]{\mathbf{\underline{#1}}}
|
|
\newcommand{\Vec}[1]{\mathbf{#1}}
|
|
\newcommand{\figref}[1]{\figurename~\ref{#1}}
|
|
|
|
\begin{document}
|
|
|
|
\section{Computation of the velocity of a point on a rigid body using spatial
|
|
algebra}
|
|
|
|
The ABA computes automatically the spatial velocity of body $i$ in the
|
|
reference frame of the body such that computation of joint velocities are
|
|
easier. Now we want to compute the (linear) velocity in base coordinates of a
|
|
point $\Vec{p}$ that is attached to body $i$ with body coordinates
|
|
${}^i\Vec{r}_p$, i.e. we want to compute ${}^0 \Vec{\dot{r}}_p = {}^0
|
|
\Vec{r}_p$.
|
|
|
|
First of all we compute the spatial velocities ${}^0\Spa{v}$ of all bodies in
|
|
base coordinates (which can be done during the first loop of the ABA):
|
|
|
|
\begin{equation}
|
|
{}^0\Spa{v}_i = {}^0\Spa{v}_{\lambda(i)} + {}^{0}\Spa{X}_{i} \Spa{v}_{Ji}
|
|
\end{equation}
|
|
|
|
where $\Spa{v}_{Ji} = \Spa{S}_i \dot{q}_i $ which is the velocity that is
|
|
propagated by joint $i$ from body $\lambda(i)$ to body $i$ along joint axis
|
|
$\Spa{S}_i$ (see also RBDA p. 80).
|
|
|
|
This is now the velocity of the body $i$ in base coordinates. What is now left
|
|
todo is to transform this velocity into the velocity of the point $\Vec{p}$.
|
|
Before we can do that we have to compute the coordinates of $P$ in base
|
|
coordinates which can be done by:
|
|
|
|
\begin{equation}
|
|
{}^0\Vec{r}_p = {}^0 \Vec{r}_i + {}^0\Vec{R}_i {}^i \Vec{r}_p
|
|
\end{equation}
|
|
|
|
for which ${}^0 \Vec{r}_i$ is the origin of the bodies in base coordinates and
|
|
${}^0 \Vec{R}_i$ the orientation of the base relative to the body.
|
|
|
|
Now we can compute the velocity of point $\Vec{r}_p$ with the following
|
|
formulation:
|
|
\begin{equation}
|
|
{}^0\Spa{v}_p = \textit{xlt}({}^0\Vec{r}_p) {}^0\Spa{v}_i =
|
|
\left[
|
|
\begin{array}{cc}
|
|
\Vec{1} & 0 \\
|
|
-{}^0\Vec{r}_p \times & \Vec{1}
|
|
\end{array}
|
|
\right]
|
|
{}^0\Spa{v}_i
|
|
\end{equation}
|
|
|
|
By doing so, the linear part of the spatial velocity ${}^0\Spa{v}_p$ has the
|
|
following entries:
|
|
\begin{equation}
|
|
{}^0\Spa{v}_p = \left[
|
|
\begin{array}{c}
|
|
\Nspa{\omega} \\
|
|
-{}^0\Nspa{r}_p \times \Nspa{\omega} + {}^0 \Nspa{\Vec{v}}_i
|
|
\end{array}
|
|
\right]
|
|
=
|
|
\left[
|
|
\begin{array}{c}
|
|
\Nspa{\omega} \\
|
|
{}^0 \Nspa{\Vec{v}}_i + \Nspa{\omega} \times {}^0 \Nspa{r}_p
|
|
\end{array}
|
|
\right]
|
|
\end{equation}
|
|
|
|
For which the bottom line is the term for linear velocity in the standard 3D
|
|
notation.
|
|
|
|
\section{Computation of the acceleration of a point on a rigid body using
|
|
spatial algebra}
|
|
|
|
The acceleration of a point depends on three quantities: the position of the
|
|
point, velocity of the body and the acceleration of the body. We therefore
|
|
assume that we already computed the velocity as described in the previous
|
|
section.
|
|
|
|
To compute the acceleration of a point we have to compute the spatial
|
|
acceleration of a body in base coordinates. This can be expressed as:
|
|
\begin{equation}
|
|
\Spa{a}_i = {}^0\Spa{a}_{\lambda(i)}
|
|
+ {}^{0}\Spa{X}_{i} \Spa{a}_{Ji}
|
|
\end{equation}
|
|
for which $\Spa{a}_{Ji} = \Spa{S}_i \ddot{q}_i + \dot{\Spa{S}}_i \dot{q}_i$.
|
|
The last term can be written as: $\dot{\Spa{S}} = \Spa{v}_i \times \Spa{S}_i$.
|
|
|
|
\begin{figure}[h!]
|
|
\begin{center}
|
|
\includegraphics[width=0.9\textwidth]{acceleration_visualization}
|
|
\end{center}
|
|
\caption{Visualization of the acceleration of a point}
|
|
\label{fig:acceleration_visualization}
|
|
\end{figure}
|
|
|
|
There are three coordinate systems involved in the computation of the
|
|
acceleration of point p which are shown in
|
|
\figref{fig:acceleration_visualization}. The \emph{base coordinate system}
|
|
which is the global reference frame, \emph{link $i$ coordinate system}
|
|
which is the coordinate system of body $i$, and the \emph{point coordinate
|
|
system} that is locate at the current position of $p$ and has the same
|
|
orientation as the base coordinate system.
|
|
|
|
First of all we build the transformation from the body coordinate system to
|
|
the point coordinate system:
|
|
\begin{equation}
|
|
{^p}\Vec{X}_i =
|
|
\left[
|
|
\begin{array}{cc}
|
|
{^0}\Vec{E}_i & \Vec{0} \\
|
|
\Vec{0} & {^0}\Vec{E}_i
|
|
\end{array}
|
|
\right]
|
|
\left[
|
|
\begin{array}{cc}
|
|
\Vec{1} & \Vec{0} \\
|
|
-{^i}\Nspa{r}_p \times & \Vec{1}
|
|
\end{array}
|
|
\right].
|
|
\end{equation}
|
|
This can now be used to express the velocity and acceleration of the body at
|
|
the point p:
|
|
\begin{equation}
|
|
{^p}\Spa{v}_i = {^p}\Vec{X}_i \Spa{v}_i
|
|
\end{equation}
|
|
\begin{equation}
|
|
{^p}\Spa{a}_i = {^p}\Vec{X}_i \Spa{a}_i
|
|
\end{equation}
|
|
|
|
We now want to retrieve the \emph{classical acceleration}. It is expressed in a
|
|
coordinate frame that has a pure linear velocity of ${^0}\Nspa{\dot{p}}$.
|
|
\begin{equation}
|
|
{^p}\Spa{a}'_i = {^p}\Spa{a}_i +
|
|
\left[
|
|
\begin{array}{c}
|
|
\Vec{0}\\
|
|
{^0}\Nspa{\omega}_i \times {^0}\Nspa{\dot{p}}
|
|
\end{array}
|
|
\right]
|
|
\end{equation}
|
|
|
|
The linear part of this vector is then the acceleration of the point in base
|
|
coordinates.
|
|
|
|
\end{document}
|