Basically if the start, end, and increments are known, it's possible to 'lose' the accumulated error by varying each increment slightly. Say the closest round number to the wanted angle is 211 steps, but this accumulates an error. An algorithm can be applied to distribute the big final error en-route as a series of small errors by stepping a sequence like: 211, 211, 210, 211, 211, 211, 211, 211, 210 … (No logic in the example, just an illustration.)
Several different algorithms available. Could be as crude as keeping count of the error so far and skipping or adding steps when a threshold is exceeded (this isn't ideal!). Bresenham is famous in computer circles for his efficient integer maths solutions to graphics drawing problems, answering questions like 'Most efficiently, which pixels on a screen need to be switched on to draw the best straight line possible between any two points'.
My Rotary Table does a sum supplied by Duncan Webster to distribute error. Duncan's method is easier to code than Bresenham but, if I remember correctly, consumes more memory and is slower because Duncan uses floating point maths. Doesn't matter because there's plenty of spare memory on the microcontroller and there's no need for the calculation to be done super-fast. Rotary tables are considerably more sluggish than computer screens!
Usually possible to keep the corrections so small they are swamped by the mechanical errors, as when a stepper motor puts 1600 steps per revolution into the input of a 90:1 worm drive. The worm and gear are only as accurate, per tooth, as they were made, less wear and tear.
Mechanical instruments often accumulate error too. A typical DTI is fairly accurate measuring to 0.02mm over a short range, but doesn't maintaining that accuracy over the instruments full travel. It gets large distances wrong because mechanical errors accumulate. Excellent comparators, but don't trust DTI's to measure accurately over any distance.
Dave
Edited By SillyOldDuffer on 25/02/2021 10:11:07