Sensorless: CONTROLLER ERROR INVALID ESTIMATE

I recently got a v3.6 56V board running a 26V battery supply, and Leopard brushless motors for RC boats ( LBP3660- 2.5Y) I’m controlling it over USB from a raspberry pi 3+.

Following the senseless setup from the tutorials, I run the Motor Calibration and or in SENSORLESS_CONTROL and the motor will spin for about 1 second and then throw:

AXIS_ERROR_CONTROLLER_FAILED
MOTOR_ERROR_CONTROL_DEADLINE_MISSED
CONTROLLER_ERROR_INVALID_ESTIMATE

On a side note, the current documentation link for troubleshooting and throwing sensorless estimating errors returns a 404. https://docs.odriverobotics.com/odrive.sensorlessestimator.error

The controller error doesn’t have a description, neither does the motor error nor the axis error.

I’m not sure where to start in troubleshooting this error, or which error is being thrown first.

I will probably need the full rpm range of the motors, up to about 30k rpm with 24V system and 2050kV and the motors rated to 29v and 58A

With these motors do I need to just start at a much different place than the tutorials suggest?

That’s not even an error that exists! ODrive.SensorlessEstimator.Error | ODrive

What firmware version are you using? It looks like ERROR_INVALID_ESTIMATE has to do with whether or not the internal representation is available, so not sure what’s up with that…

I am using v.0.5.1, I followed the sensorless setup tutorial which I think used a very low input_vel of 2 turn/s. I increased these inputs and the ramp current to 15, and the current limit to 30A. I then ran into an overspeed error, when I searched it here, I followed some advice to disable that error.

Now I have the setup passing the calibration, but when I go to run the requested_state in SENSORLESS_CONTROL, I throw an AXIS_ERROR_INVALID_STATE. I’m not sure if I should have done something differently with the earlier errors, or if there is another step im missing to resolve the Invalid State condition.

I must have changed some setting that was invalidating the configuration. So I tried erasing the configuration and running back through again. and this time I receive:

AXIS_ERROR_BRAKE_RESISTOR_DISARMED
AXIS_ERROR_MOTOR_DISARMED
MOTOR_ERROR_DC_BUS_OVER_REGEN_CURRENT

on both axes. I am only using axis0 for now. I do not have a braking resistor attached to the oDrive because I am powering everything directly from a battery. I suppose I will try adding in the resistor that came with the odrive as the next step.

I did add the 50W resistor, and updated my configuration process. I still throw the same errors, is there any additional way to address this issue?

I followed the same error troubleshooting here and changed the 2 values to:
odrv0.config.dc_max_negative_current = -30
odrv0.config.max_regen_current = 30

I thought it was odd that the max negative current was 9.99e-7 and the max regen current was 0 when I pulled their values prior to changing them.

When running with those additional changes, I got the new errors:
AXIS_ERROR_MOTOR_FAILED
MOTOR_ERROR_CURRENT_LIMIT_VIOLATION

My current limit I set to 30 amps, so I would be concerned if it was pulling much more than that.
odrv0.axis0.motor.config.current_lim = 30

I know that the motors were rated to 59A so I increased the motor current limit to 58, and that did allow it to start and run without errors for the first time since I got the oDrive!

1 Like

Set max_regen_current = 0, it’s sorta broken right now. Or if you want regen AND brake, set max_regen_current = 30 and dc_max_negative_current = -60 (giving you a 30A regen back to battery + 30A regen to brake resistor), but if your brake resistor falls off you’ll get 60A back to battery, so be careful