Lesson 8: Robot Velocities ‐ Angular Velocities & Twists - madibabaiasl/kinematics-robotic-arms-modern-approach GitHub Wiki
- Explain what angular velocity and twists mean in the context of robot motion.
- Describe how the motion of a rigid body includes both how fast it spins and how fast it moves linearly.
- Distinguish between spatial velocity (twist) and angular velocity, and how they relate to moving frames.
- Translate the motion of a robot’s body between different coordinate frames, such as the base frame and the body frame.
- Understand how a twist can describe the instantaneous motion of a robot in six dimensions: three for rotation, three for translation.
- Recognize how screw motion connects velocity to physical motion around and along an axis.
After completing the lesson, you will be able to:
- Identify the angular velocity of a rotating robot link using a chosen reference frame.
- Express how the axes of a moving frame change direction over time due to rotation.
- Explain what a twist is: a six-dimensional quantity combining rotational and linear motion.
- Represent the velocity of a robot’s end-effector relative to either the base frame or the body frame.
- Convert a twist from one frame to another using the robot’s orientation and position.
- Interpret how a real robot’s joint motion creates velocities in its links and end-effector.
- Relate twists to screw axes, showing that every motion happens around and along an axis in space.
Robots don’t just move, they move in real time. To control them, we must know not only where a robot arm is, but also how fast it’s moving and in which direction. This is what velocity kinematics provides. It is the bridge between joint speeds and tool speeds. These ideas are the foundation for motion control, trajectory planning, and safe interaction with the physical world. Without understanding twists and angular velocities, a robot can reach a position but will have no idea how to move smoothly, accurately, or safely to get there.
In the previous lesson, we saw how to calculate the robot's tool frame's pose (position and orientation) for a given set of joint positions. In this lesson, we will start to talk about velocity kinematics and this time we are interested in relating the end-effector's velocity to joint velocities. In order to be able to do this, we first should study about velocities in robotics and in particular angular velocities and twists. In this lesson, we will become familiar with the concept of velocities in robotics, and we will study angular velocities and twists.
A rigid body’s velocity can be represented as a point in a 6D space, consisting of the angular velocity and the linear velocity, which together are called a spatial velocity or a twist. There are several ways to express the angular velocities and twists that we will discuss in the coming paragraphs.
In order to understand the angular velocity concept, suppose a rotating body with the coordinate frame axes attached to it at time t and rotating with the body about an arbitrary axis passing through the origin by an angle
This figure shows a slight change in the orientation of the frame instantaneously attached to a rotating body that is rotating about an arbitrary axis in space.
The above figure shows a slight change in the orientation of the frame instantaneously attached to a rotating body that is rotating about an arbitrary axis in space. For a visualization of the rotation of the coordinate frame instantaneously attached to a rotating body about an arbitrary axis in space, you can refer to the lesson about exponential coordinates.
The rate of rotation of the moving body about the arbitrary axis can be defined as:
Note that the rate of rotation is analogous to the concept of speed in physics, which is a number compared to the velocity that has an amplitude and a direction. Therefore the rotation of a rotating body about an arbitrary axis with a known speed (rate) of rotation can be visualized as the following figure:
The coordinate axes are attached to a rotating body that is rotating about an arbitrary axis with a known speed of rotation (rate of rotation).
The motion of the frame as it rotates about the arbitrary axis is according to the right-hand rule, and any angular velocity can be represented by a rotation axis and the speed of rotation about it:
As the coordinate axes rotate about the arbitrary axis, the coordinate axes trace a circular path, as we saw in the video in the exponential coordinates lesson. For instance, if the coordinate frame axes shown in the figure below rotate with a constant rotational speed about the arbitrary axis, each of the coordinate axes traces a circular path as shown for the x-axis:
Any axis of a coordinate frame rotating about an arbitrary axis traces a circle.
From physics, we know that an object in circular motion experiences a centripetal acceleration, and the linear velocity is in the direction tangent to the circle that can be calculated from the cross product of the angular velocity and the radius vector. If you are not familiar with circular motion the following lecture from Dr. Walter Lewin is highly recommended:
Similarly, here, the linear velocity of each axis is in the direction tangent to the circle, and it is the cross product of the angular velocity and the radius vector, which is the axis itself. For example for the x-axis, it is like this:
The linear velocity of an axis of a frame attached to a body rotating about an arbitrary axis with a known angular velocity is in the direction tangent to the circular path and can be calculated by the cross product of the angular velocity and radius vector, which is the axis itself in this case.
So the linear velocities of frame axes rotating about an arbitrary axis with a known angular velocity are in the direction tangent to the circular path and can be calculated as:
Example: Consider that the Pepper robot from SoftBank Robotics is rotating its elbow while keeping all other joints fixed:
A motion like this:
pepper-robot-example-25-percent-slower.mp4
Then the linear velocities of the points on the forearm satisfy the following equations:
Note that the points farthest from the center of the elbow have larger linear velocities. The radius of rotation is measured from the center of rotation to the point.
Now let’s see how we can determine the angular velocity with respect to different coordinate frames.
Now we want to express the above equations with respect to coordinate frames. We can choose a reference frame for the angular velocity, and our natural choices are the fixed frame {s} and the body frame {b}. If the rotation axis is defined in the {s} frame, then the angular velocity expressed in the {s} frame can be written as:
A similar equation can be written for the angular velocity expressed in the {b} frame. We then want to find expressions for the angular velocities in the {s} and {b} frames in terms of the rotation matrix. Suppose that R(t) is a rotation matrix that represents the orientation of the body frame with respect to the fixed frame at time t that can be expressed in terms of its column vectors as:
As we know from the rotation matrices lesson, the column vectors of this rotation matrix are the coordinate axes of the body frame expressed in the fixed frame coordinates. Thus the time rate of change of R(t) can be described as:
Where
From the rotation matrices lesson, we know that the inverse of a rotation matrix is the same as its transpose. Now we want to find the angular velocity vector in the body frame coordinates. Note that
Therefore,
Now we want to write the skew-symmetric matrix form of the angular velocity vector in the body frame:
This equation is derived using the fact that for any angular velocity
In summary, equations relating R (orientation of the rotating frame as seen from the fixed frame) and
where
Note that fixed-frame angular velocity
Note also that we can represent the angular velocity expressed in an arbitrary frame {d} in another frame {c} if we know the rotation that takes the {c} to {d}:
Example: Suppose that in terms of the axes of the space frame {s}, the body frame’s x-axis and y-axis are in (0,0,1) and (-1,0,0) directions, respectively. An angular velocity
For this, the two frames {s} and {b} can be drawn as (first try to draw it yourself):
Click to reveal answer
Note that since we do not have the position information, we can suppose that the origins are the same, and they are illustrated separately for clarification. As we just learned, we can represent the angular velocity in another coordinate frame using the rotation matrix representation of the orientation of one frame relative to the other. For our example, we can write:
Click to reveal answer
The rotation matrix representing the orientation of the {s} frame relative to the {b} frame can be calculated by taking the transpose of the rotation matrix representing the orientation of the {b} frame relative to the {s} frame as:
Click to reveal answer
Thus, the representation of the angular velocity in the body frame can be calculated as:
Click to reveal answer
Now, let’s see what the concept of twists means in Robotics.
In robotics, a twist is a continuous change in pose over time. A twist can be defined as an angular velocity and the linear velocity of a moving body combined together into a compact 6-vector:
In the previous section of this lesson about angular velocities, we saw that pre- or post-multiplying
Suppose that {s} is the fixed (space) frame and {b} is the moving (body) frame:
and the configuration of the body frame {b} as seen from the space frame {s} is defined as:
Then we can write:
Refer to the lesson on homogenous transformation matrices to understand how to calculate the inverse of the transformation matrix T. As we saw in the angular velocities section,
Where
Note that here bracket notation [] shows the matrix representation of the body twist.
We can find a similar physical interpretation for the multiplication
In the angular velocity section, we saw that
As the body moves, the origin of the {b} frame traces a circular path of radius p relative to the origin of the frame {s}. From the kinematics of rigid bodies, we can easily write the motion of the origin of the frame {b} relative to the motion of the origin of the frame {s} as:
where
Start of kinematics of rigid bodies note
In rigid kinematics, if we have two points on a rigid body like the following figure:
Then, the relative motion of one point w.r.t to the other point can be expressed as:
End of kinematics of rigid bodies note
Therefore, we can conclude that
And the matrix representation of the spatial twist can be found as:
Note that here, as we discussed earlier, the first bracket notation does not imply a skew-symmetric matrix, but it only wants to show the 4×4 matrix representation of the twist.
Also, note that like the angular velocity, for any given twist, its fixed-frame representation
From the equations that we obtained for the body twist and the spatial twist, we can find a relationship between them. The matrix representations of the body twist and the spatial twist will then have the following relationship:
Expanding one of the equations and inserting the values for T and
We saw that
Therefore, we can write the relationship between the spatial twist and the body twist as:
This relationship is beneficial when changing the frame of reference for twists and wrenches that we will study in the later lessons. Similarly, we can find a similar relationship for the body twist in terms of the spatial twist:
Therefore,
Note that both the body twist and the spatial twist represent the same motion just in different coordinate frames. The matrix that can change the frame of representation of a twist or a screw is called the Adjoint representation of a transformation matrix
So formally, If
For any
Example. Suppose that the body frame’s x-axis and y-axis are in the direction (0,0,1) and (-1,0,0) relative to the {s} frame and the origin of the {b} frame relative to the {s} frame is (3,0,0). The twist
Based on the coordinates of the {b} frame relative to the space frame, we can draw the two frames as the following figure (first try to draw it yourself):
Click to reveal answer
We learned that the adjoint representation of the transformation matrix could be used to relate the spatial twist and the body twist. So, the body twist can be written as the following equation in terms of the spatial twist:
Click to reveal answer
In the previous lessons, we saw that every rigid body displacement could be obtained by a finite rotation about and translation along a fixed screw axis 𝘚 and we became familiar with the exponential coordinates of robot motions.
In this lesson, we learned that the angular velocity ω could be represented by a unit axis
As for the calculation for the screw axis that we saw in Lesson 6, we can do a similar approach for the calculation of the twist
- Case 1: There is a rotation, so
$\omega = \hat{\omega}\dot{\theta}$ and$v = a \times \omega + h\omega$ . In this case, a is a point (any point) on the screw axis, and h is called the pitch of the screw axis that we saw how to calculate it before.
In this case, then
- Case 2: There is only translation, so
$\omega = 0$ and$v = \dot{d} \hat{d}$ in which$\hat{d}$ is the unit vector in the direction of the translation.
In this case,
- Kevin, M.L. and Frank, C.P., 2017. Modern robotics: mechanics, planning, and control
- Murray, R.M., Li, Z. and Sastry, S.S., 2017. A mathematical introduction to robotic manipulation. CRC press.
- Corke, P., 2023. Robotics, Vision and Control: Fundamental Algorithms in Python (Vol. 146). Springer Nature