Each time ODrive starts, recalibration is required

Hi,

I’m using an ODrive 3.6, with odrivetool 0.5.4.

Despite having followed the Getting Started guide in each step, including saving configuration, each time the ODrive reboots I have to re-run the full calibration.


In [23]: odrv0.axis1.encoder.is_ready
Out[23]: False

In [24]: odrv0.axis1.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE

In [25]: odrv0.axis1.encoder.is_ready
Out[25]: True

I understand this shouldn’t be the case with this firmware version.

If I don’t, and I attempt to enter closed loop control, the ODrive simply does not respond, and the following error message is found:

In [26]: odrv0.reboot()
Oh no odrv0 disappeared

Reconnected to ODrive 364D38633030 as odrv0
In [27]: odrv0.axis1.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL

In [28]: dump_errors(odrv0)
system: no error
axis0
  axis: no error
  motor: no error
  sensorless_estimator: no error
  encoder: no error
  controller: no error
axis1
  axis: Error(s):
    AXIS_ERROR_INVALID_STATE
  motor: no error
  sensorless_estimator: no error
  encoder: no error
  controller: no error

What can the problem be?

Thank you.

Yes, this is normal. To avoid it, you need an encoder with an index pin or an absolute encoder. Encoders — ODrive Documentation 0.5.4 documentation

I forgot to add that my encoder does have an index pulse indeed.

I will follow the instructions in the documentation you provided me. If I don’t get back to you, it means it worked. Thanks in that case!

Have a good evening.