The trick here is that the encoder are “partially absolute”. What does it mean: axis 1, 2 and 3 all have a gear ratio, so if you want to make one complete turn on the axis, you’ll have to make multiple turns with the motor.
So, when the communication is lost/robot is reboot, you need to calibrate the axis with NiryoStepper, so the robot knows how many motor rotations (+ the absolute offset that we calculate with the first auto calibration) is the correct offset.
After doing one auto calibration, you can use the manual calibration which is much faster. I hope the explanation is clear!