ROBOTICS 101Concept explainer

Encoders and Joint Sensing on Arms

Every joint of a robot arm needs to know its angle. An incremental encoder counts ticks from wherever it started. An absolute encoder reads a unique code for every angle, so it knows where it is the moment it turns on.

Two kinds of encoder

An incremental encoder only counts changes. Its angle is the count since power-up plus an offset, which is unknown until the joint is homed against a known reference such as a limit switch:

$$\theta_{\text{inc}} = \theta_{\text{offset}} + n\,\frac{360^\circ}{N}$$

An absolute encoder reads a pattern of tracks, one bit per track. With \(k\) bits it has \(2^k\) distinct codes, so a resolution of \(360^\circ / 2^k\). The tracks use Gray code, where neighboring angles differ in only one bit, so a reading taken mid-change can be wrong by at most one step.

What to notice

Press "Power off, then on". With the motors off, gravity pulls the arm down. When power returns, the incremental encoder starts counting from zero again and reports the wrong angle, while the absolute encoder reads the right one at once. The incremental reading stays wrong until you press "Home the joint", which drives the arm to a switch at a known angle.

This is why many industrial arms use absolute encoders, or keep their counters alive with a small battery. Robots with incremental encoders run a homing routine at startup.