Unknown axis error 0x00000200

Hi everyone,

First time using an ODrive controller! I’m trying to run a brushless motor with no encoder but with hall-effect sensors. It has 4 pole pairs and a Kv of 23.6 rad/s/V (Kt = .0424 Nm/A), and I have most of the motor parameters left to default but a few changed - I set all the gains to 0, and the velocity limit is set to 20 turns/s. But here’s the problem I’m having:

Motor/encoder calibration with AXIS_STATE_FULL_CALIBRATION_SEQUENCE goes fine, no errors, and appears to visually function fine (motor spins one way and then the other).

Axis state is then set to AXIS_STATE_CLOSED_LOOP_CONTROL with no errors. The motor then vibrates slightly, draws slightly more current from the power supply, and seems to be ready to move.

With the controller set in either position or velocity control mode, either an input_pos or input_vel value can be set, but regardless of which mode I’m in (position or velocity control) and what value I set it to (I’ve tried a wide range of values in both control modes), the outcome is the same. The motor stops vibrating, does absolutely nothing, and I receive following dump errors:

axis0
axis: Error(s):
UNKNOWN ERROR: 0x00000200
motor: Error(s):
MOTOR_ERROR_CONTROL_DEADLINE_MISSED
sensorless_estimator: no error
encoder: no error
controller: Error(s):
CONTROLLER_ERROR_OVERSPEED

I’ve tried changing gains and velocity limits to attempt to address the overspeed issue, but to no avail, and I can’t find any information about this “unknown error” 0x00000200, either on Odrive’s documentation, forums, or the wider internet. Does anyone have any knowledge about this?? I’m incredibly stuck and having a very hard time solving this problem.

Your firmware version and your odrive version don’t match, which is why you have an UNKNOWN ERROR

that said, you have an overspeed, so you should just increase your controller.config.vel_limit

Oh ok, thanks! I’ll increase controller.config.vel_limit and update both the firmware for the odrive, hopefully that solves this.

Just tried increasing controller.config.vel_limit to 1000, and ‘trap_traj.config.vel_limit’ to 500, but even so, when I request odrv0.axis0.controller.input_vel = 2, I get the same exact error. And after updating the firmware, the problem persists.

Have the UNKNOWN_ERRORs been replaced by more useful information?

If not, then you might still be using an old odrivetool.
I’d recommend updating or even uninstalling ‘odrive’ via pip - if you uninstall it, you can run it directly from the repo with
python3 tools/odrivetool

As for your error, i’d try reducing the gains to 0 and verifying that you no longer get an error, then increase vel_gain and find the point where you get some movement without triggering an error.

If you still get an error, try using odrivetool liveplotter and turn the motor by hand to verify that the encoder is working correctly.

Ah ok, that’s interesting! Thanks for the info. The gains have already all been at 0, but I’ll try increasing vel_gain until I get any sort of movement. And I’ll see if I can run odrivetool directly from the repo to make sure I’m using the up-to-date version. Didn’t know that liveplotter was a thing as well, very interesting.