Encoder configuration and Startup with CLOSED_LOOP


Every time I restart the Odrive, I need to make a full calibration sequence for the encoder. Why?
In the following instructions, you can see the encoder calibration is done successful, and pre-calibration saved for the encoder and the motor, but the register of pre_calibration is False. Why?

I put also the following code to enter in closed loop control after startup.
The encoder don’t have INDEX and it is an incremental encoder.


Thanks for your help!

ODrive needs to know the absolute position. If you have an incremental encoder without index, you need to do offset calibration on every restart.

1 Like

The ODrive cannot measure how much the motor moves while the ODrive is turned off - so any instances where the ODrive is power cycled or reboots, requires a re-calibration. An encoder with index can allow for an index search instead of offset calibration on boot (which is more robust), and an absolute encoder can allow for instant startups.

1 Like