I converted my 0.4.x code to 0.5.3 and now encoder calibration fails. I most probably did something wrong or forgot to add something that was not in 0.4.x but is required by 0.5.3.
Anyhow, a simple
odrv0.axis1.requested_state=AXIS_STATE_ENCODER_OFFSET_CALIBRATION fails with axis1.encoder.error
ENCODER_ERROR_CPR_POLEPAIRS_MISMATCH (literal value 2).
Yes, I have checked that polepairs is configured correctly to 2 (motor is DC brushless SM57L114 with Hall sensors), specs on page 18 here in this PDF and AMT102-V encoders (normal odrive encoders sold on the website).
My configuration is:
# I am a bit hesitant about this block, I have no resistor connected odrv.config.enable_brake_resistor = False odrv.config.brake_resistance = 0.0 # full regenerative braking odrv.config.dc_max_negative_current = -30 # same as config.current_lim as we have no brake resistor a = axis1 a.motor.config.current_lim = 30 a.motor.config.calibration_current = 5 a.motor.config.pole_pairs = 2 a.motor.config.requested_current_range = 60 a.motor.config.phase_inductance = 0.0005079241818748415 a.motor.config.phase_resistance = 0.22080011665821075 a.motor.config.pre_calibrated = True cpr = 4 * 2048 torque_const = 0.063 a.motor.config.torque_constant = torque_const a.encoder.config.cpr = cpr a.controller.config.pos_gain = 96.53617858886719 vel_gain = 0.0001250000059371814 * torque_const * cpr a.controller.config.vel_gain = vel_gain a.controller.config.vel_integrator_gain = 0.5 * bandwidth * vel_gain * torque_const * cpr a.controller.config.vel_limit = 200000.0 / cpr # division according to migration guide a.controller.config.vel_limit_tolerance = 1.2000000476837158 a.controller.config.vel_ramp_rate = 10000.0 / cpr
I took the formulas from migration guide, e.g., my vel_gain was previously just
0.0001250000059371814, now it is multiplied by torque_constant and cpr.
Do you see anything obviously wrong or missing that should cause