If represents the orientation of some object that is currently
rotating, we then have:
Because rotation affects equally all unit columns of .
This implies the following identity:
Rigid body motion
Rigid body motion
Rigid body motion
What if a rigid body is rotating and translating ?
We can sum the velocity caused by rotation ( is on the axis)
with some linear velocity (which is the same for the whole body).
Rigid body motion
For another point , we have:
Rigid body motion
Varignon's formula
Rigid body motion
Twist
A twist is a 6-dimensional quantity packaging and :
needs a basis to be expressed in also needs a basis, but also a reference point.
Rigid body motion
We express a twist in a given frame, and expressed in its basis, being the (linear) velocity of its origin.
The linear velocity is then the velocity of the origin of the frame (imagine this point is "fixed" to the body)
Rigid body motion
In 2D, a rotation + a translation result in a rotation about a different axis
Rigid body motion
In 3D, the object can also translate along the rotation axis
As a result, the motion can be helicoidal, like a screw.
That is why we refer to it as screw theory.
Rigid body motion
Suppose that we have , a twist expressed in .
How to express it in , knowing ?
We now have a convenient way to change the frame of a twist:
the adjoint map
Rigid body motion
It turns out that , where is the following
matrix representation of the twist:
We can integrate twists with exponential as well:
Rigid body motion
Spatial algebra
Converts angular velocity to rotation matrix
pin.exp3
Converts rotation matrix to angular velocity
pin.log3
Converts twist to transformation matrix
pin.exp6
Converts transformation matrix to twist
pin.log6
Forward kinematics
Forward kinematics
Forward kinematics
If this DoF rotates by radians, how this will affect ?
First, express the twist in :
Then, express it in :
And integrate it:
Forward kinematics
We could re-write as
Thus:
We now show explicitly in the equation:
Forward kinematics
is actually known under the name of screw axis.
A screw axis is a twist that is "unitary". It needs to be multiplied by a scalar to becomes a twist.
For example, can be the twist of a motor rotating by 1 radian.
Forward kinematics
For a serial robot, forward kinematics is given by:
where:
is the spatial screw axis of the i-th DoF
is the displacement of the i-th DoF
is the transformation matrix of the effector (when all DoF are zero)
Jacobian
Jacobian
Jacobian
In a "neutral" configuration, the twist is providing the twist that would create:
We need to account the fact that is in a different frame, because of the configuration of joints that are upper in the kinematics chain.
Jacobian
is what we call the Jacobian, it has dimension , where
is the number of degrees of freedom.
It maps a velocity to a spatial twist .
is computed for a given configuration and is actually
The same way is expressed in a frame, so is . We can use the adjoint map
to change 's frame.
Jacobian
Jacobian frames
Some typical frames where we want to express the Jacobian:
WORLD
The world frame,
BODY
The body frame,
LOCAL_WORLD_ALIGNED
A frame aligned with the world but placed at the body.
Jacobian
One way to think of it is by taking the following approximation:
This is an approximation because would also be subject to change
during the motion, which is not taken in account in this formula.
Jacobian
Computing target twist
What if we cant to find the twist needed to move the robot from to ?
We have
We want
Then
And hence:
Jacobian
Once we have a target twist, we can compute , and we then need to solve:
Which is a linear equation, with naive solution:
Less naive:
---
For a given angular velocity $\omega$, we can note that:
$R_{ab} [\omega] R_{ab}^T = [R_{ab} \omega]$
We can see the left hand term as:
1. Expressing a point from $a$ to $b$
2. Computing its velocity
3. Taking the velocity back to $a$
This is then equivalent to changing $\omega$ from one basis to another.