TL;DR:
An absolute sensor reports where the joint is, immediately, even right after power-up. An incremental sensor reports only how much it has moved since it started counting.
Incremental encoders need homing: move to a known reference, then zero the count.
Resolution is angle per count, for example
360° / counts per revolution. Check it against the accuracy you need.
Switch on a robot arm and it has to know the angle of every joint before it moves. If it guesses, the first command could drive a joint into a hard stop. How the arm learns its angles depends on the kind of sensor on the joint, and the two main kinds behave very differently at power-up.
Absolute versus incremental
An absolute sensor outputs a value that corresponds directly to a position. Read it, and you know the angle. A potentiometer is the simplest: a wiper on a resistive track gives a voltage that depends on the angle. Absolute encoders give a digital code for each position, using patterns on a disc or a magnetic sensor reading a magnet.
An incremental encoder produces pulses as the shaft turns. The controller counts them, up for one direction and down for the other. The count is the position relative to wherever counting started. Turn the power off and the count is lost, even if the shaft turns while the system is off.
Worked example: an encoder vs a potentiometer on a joint
A joint rotates through about 270°. Compare two sensors on it.
Potentiometer. A 270° travel pot is wired as a voltage divider across 5 V and read with a 10-bit ADC (0 to 1023). Resolution: 270° / 1023 ≈ 0.264° per count. If noise makes the reading wobble by plus or minus 2 counts, the angle is uncertain by about 2 × 0.264 ≈ 0.53°. Convert a reading: ADC = 512 means 512 / 1023 × 270° ≈ 135.1°, which is mid-travel. At power-up, the first reading already tells the angle.
Incremental encoder. The encoder disc has 360 lines. In quadrature, the two channels A and B allow counting every edge, giving four counts per line: 360 × 4 = 1440 counts per revolution, or 360° / 1440 = 0.25° per count. That is similar to the pot's resolution, and less noisy. But at power-up the count is 0, whatever the actual angle.
Mount the encoder on the motor before a 100:1 gearbox, and the output shaft sees 1440 × 100 = 144,000 counts per revolution, a resolution of 360 / 144000 = 0.0025°, very fine. The cost is that one revolution of the motor is only 3.6° of joint movement, so the 270° joint takes 270 / 3.6 = 75 motor turns. The encoder count must therefore be tracked over many turns.
Compare an absolute magnetic encoder with 12 bits: 2¹² = 4096 positions per revolution, or 360° / 4096 ≈ 0.088° per count, and it reports the angle at power-up. Many of these are single-turn only. If one is on a motor shaft behind a gearbox, the reading repeats every motor turn, so it still cannot say which of the 75 turns the joint is at. Putting it on the output shaft avoids the ambiguity.
Homing
With an incremental encoder, the controller runs a homing routine at start-up: it moves the joint, slowly, until it hits a known reference, then sets the count to the reference angle. References include a limit switch, a hard stop detected by a rise in motor current, or the encoder's index pulse, a once-per-revolution mark. After homing, the count is an absolute position until power is lost or counts are missed.
Move toward the home switch at a low speed, with the current limited.
When the switch triggers, stop and back off a little.
Set the count to the known angle of the switch position, for example 0°.
Move to the starting pose and tell the rest of the software the arm is ready.
Homing moves blind: During homing the robot does not know where its joints are, so it can drive into a hard stop or into something in its path. Clear the workspace, keep homing speed and motor current low, make sure the home switch works before relying on it, and keep the emergency stop within reach. Check the direction of motion first with the motor power limited.
Where it goes wrong
Missed counts. Electrical noise or an interrupt that is too slow loses pulses, and the error stays forever until the next homing.
Back-driven while off. A joint that moves with the power off, by gravity or by hand, loses incremental position.
Worn pots. The track wears and gives noisy or dead spots, and a pot has only a limited travel and no turn-around.
Dead zone. Many pots have a gap near the ends where the output is undefined.
Magnetic interference. Motors and magnets nearby disturb magnetic absolute encoders.
Resolution is not accuracy. A sensor with fine counts may still be off due to mounting, backlash or non-linearity.
Choosing between them
Need the position straight away after power-up: absolute.
Need cheap, fast, high-resolution speed measurement: incremental encoder.
A simple, low-cost robot with limited travel: potentiometer.
Both is common: an incremental encoder on the motor for fine control, and an absolute sensor on the joint for the starting position.
How real robots use it
Arm joints often combine a fast motor encoder with an absolute output encoder, and the angles feed the Jacobian calculations in the Jacobian: how joint speeds become hand speed. Mobile robots count wheel encoder ticks for odometry, which drifts and is corrected by mapping, as in LiDAR SLAM vs visual SLAM. Counting pulses reliably is the subject of interrupts and timing on a microcontroller.
Try it yourself
Connect a small potentiometer to an analog pin and print the angle you compute from the ADC. Power-cycle the board with the knob turned: the angle comes back at once. Then build the same with a hand-turned incremental encoder and see that the count restarts at zero after a reset, until you add a home switch.
Frequently asked questions
What is an index pulse?
A mark on an incremental encoder that fires once per revolution. It gives a fixed reference for homing and for checking missed counts.
Can I just save the position before shutting down?
Only if nothing can move the joint while it is off. A joint that sags or is pushed by hand will not match the saved value, so a reference check is safer.
