3D printers typically get their positioning based on steps the motors make. Thus, if there are skipped steps by say some resistance to motion, the position information becomes slightly wrong.
I feel this is not how the uArm gets it positioning because get_position doesn’t return exactly the position given by set_position. The uArm gets it from some other independent sensors. Is this correct?