axis0.config.motor.motor_type MOTOR_TYPE_HIGH_CURRENT
axis0.config.motor.pole_pairs 7
axis0.config.motor.torque_constant 0.04544
axis0.config.motor.phase_resistance 0.0756
axis0.config.motor.phase_inductance 4.05e-05
axis0.config.motor.current_soft_max 95.0
axis0.config.motor.current_hard_max 100.0
axis0.config.motor.sensorless_observer_gain 500.0
axis0.config.motor.sensorless_pll_bandwidth 500.0
axis0.config.motor.bEMF_FF_enable True
axis0.config.motor.wL_FF_enable True
axis0.config.sensorless_ramp.current 20.0
axis0.config.sensorless_ramp.vel 14.0
axis0.config.sensorless_ramp.accel 31.8
axis0.config.sensorless_ramp.finish_on_vel True
axis0.config.sensorless_pm_flux_linkage 0.0
axis0.controller.config.control_mode CONTROL_MODE_VELOCITY_CONTROL
axis0.controller.config.input_mode INPUT_MODE_VEL_RAMP
axis0.controller.config.vel_ramp_rate 20.0
axis0.controller.config.vel_gain 0.5
axis0.controller.config.vel_integrator_gain 0.333333
axis0.controller.config.vel_integrator_limit 3.5
axis0.controller.config.vel_limit 50.0
config.dc_bus_overvoltage_trip_level 56.0
config.dc_max_positive_current 50.0
ODrive Pro, firmware 0.6.12-1. Blue Robotics T500 thruster, 7 pole pairs, running
sensorless at 48 V with a propeller fitted in water. Velocity control, VEL_RAMP.
Commanding 0 → 70 rad/s, the motor sometimes fails to hold commutation during the
ramp: an audible repetitive knock, phase current climbs to the soft-max clamp, and
the velocity estimate wanders well away from the setpoint before it either recovers
or settles low. It is intermittent and load-dependent — the same command on the same
drive with no water load runs clean.
Chasing it, we found the behaviour is very sensitive to torque_constant. Two
back-to-back runs on the same drive, identical command and identical ramp settings,
changing only that one value:
Kt = 0.021205 Kt = 0.04544
time to 90% of 70 rad/s 2.31 s 1.56 s
slip events 5 0
steady-state spread 47.36 rad/s 3.18 rad/s
steady-state stdev 9.4 % 1.2 %
peak phase current 95.3 A 34.8 A
0.021205 is what the published 390 Kv rating gives via 8.27/Kv. 0.04544 is what we
measured on the bench for the same motor. With the lower value the loop asks for
roughly twice the current for the same torque, pins against the 95 A soft-max, and
has no authority left; because sensorless_pm_flux_linkage is 0.0 and therefore
derived as (2/3)·Kt/pole_pairs, the same number also halves the estimator’s back-EMF
model. The result is 95 A of phase current against no more than 23.9 A of bus
current — a lot of current producing very little torque.
Running on the measured 0.04544 removes the slipping on ramp-up entirely in this
configuration, so we are not blocked. What we would like to understand is the
residual case: under steady load we still occasionally see commutation lost with a
velocity estimate that stays plausible rather than collapsing, so the spinout
detection does not fire and nothing is reported — the drive keeps commanding current
into a rotor it is no longer tracking, and the first visible symptom is thermal.
Could you please help us identify the possible root cause of this issue?