-
Notifications
You must be signed in to change notification settings - Fork 37
Lesson 8: Robot Velocities ‐ Angular Velocities & Twists
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:
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:
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:
Thus the representation of the angular velocity in the body frame can be calculated as:
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 dynamics 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 dynamics of rigid bodies note
In rigid dynamics, 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 dynamics 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 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:
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:
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