Product of Exponentials deliberately throws away the per-link frames. This method only requires 2 frames, the base frame and the end-effector frame.
Here are the 2 frames required:
{s}: space frame (fixed, called base_frame in the other method){b}: body frame (attached to the end-effector)
No frames in the middle arm. Instead:
Mis a single 4x4 matrix: the pose of{b}and{s}when all joints are at zero. Which is the home configuration.- For each joint, we write down a screw axis describing its axis of motion in the space frame
{s}, at home configuration. All six screw axes live in the same fixed frame. - Forward Kinematics:
- is the output of the forward kinematics, it represents the 4x4 homogeneous transformation matrix describing the pose of the end-effector (TCP) in the space frame
- The 4x4 SE(3) matrix has this structure:
- where
Ris a 3x3 rotation matrix (TCP orientation) andpis a 3-vector (TCP position). SoTpacks both position and orientation of the TCP into one mathematical object. - are the joint angles, when we call
rtde_r.getActualQ(), we get the 6 joint angles . In the math we call it , while in code we call itq - Home Configuration is when all six angles are :
- Screw Axis is defined by a point
qon the axis, a unit vectorsin the direction of the axis, and the pitchhof the screw - Screw axis is a fixed line in space, set at home configuration and never updated, even though the physical joint may have moved
- , where is the linear speed, and is the angular speed
- means object only twists, but doesn't slide
- means object slides, but doesn't twist
- means object gets true spiral motion
On UR5E, all joints are revolute (no helical screws), so
h=0for every joint
In my own words:
Step 0 - Apply
Basically initially we are using the end-effector's home pose. The end-effector doesn't have a screw axis, only joints do. This is a pre-computed value. So its just a constant.
Step 1 - Apply
Next, we calculate how much the 6th joint has rotated about its own initial fixed screw axis. This relative rotation angle is substituted into . The matrix , screw axis, is fixed and already pre-calculated at the home pose, so are the other . What the whole formula represent is a rotation of the whole pose by about joint i's screw axis.
Step 2 - Apply
Now, we rotate the current pose by about joint 5's screw axis.
Step 3 - Apply
Now, we need to take into account the current pose of joint 4 about its screw axis. So again, we rotate the current pose by about joint 4's screw axis.
This will continue until we multiply all of the rotations of joints between their poses and their respective screw axis. This results in obtaining the end-effector's TCP orientation and TCP position.