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:

  1. Denavit-Hartenberg Approach (which is the Frame per link used in my autonomous tank project)
  2. 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.