Kinematics relates a robot's joint angles to the position and orientation of its tool. The UR5E has 6 joints, so its configuration is a vector of 6 angles, and its tool pose is a position together with an orientation, written .
The Six Joints
Named from the base outward:
- base and shoulder place the arm in the workspace
- elbow sets the reach
- wrist 1, wrist 2, and wrist 3 orient the tool
A degree of freedom is an independent joint that can move to produce a unique point in space, so 6 joints give the UR5E 6 DOF, the minimum needed to reach any position and orientation in 3D.
Forward Kinematics
Forward kinematics takes the joint values and computes where the tool ends up:
- input is the joint vector , the 6 joint angles
- output is the TCP pose , the tool position and orientation
- the direction is
- in URScript this is
get_forward_kin
There are two different ways to perform Forward Kinematics:
- Denavit-Hartenberg Approach (which is the Frame per link used in my autonomous tank project)
- Product of Exponentials (PoE)
Inverse Kinematics (IK)
Inverse kinematics goes the other way, from a desired tool pose back to joint angles:
- input is the desired TCP pose
- output is the joint vector that reaches it
- the direction is
- in URScript this is
get_inverse_kin
Forward Kinematics and Inverse Kinematics are the math the UR5E uses to move between joint space and Cartesian tool space.