ODrive Documentation

High performance motor control

View the Project on GitHub odriverobotics/ODrive

Help improve these docs: submit edits using the link in the top right.

If you need help, please search or ask the ODrive Community.

Troubleshooting

Table of Contents:

Error codes

If your ODrive is not working as expected, run odrivetool and type dump_errors(odrv0) Enter. This will dump a list of all the errors that are present. To also clear all the errors, you can run dump_errors(odrv0, True).

With this information you can look up the API documentation for your error(s):

What if dump_errors() gives me python errors?

If you get output like this:

Show code:
In [1]: dump_errors(odrv0)
axis0
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/.local/lib/python3.6/site-packages/fibre/shell.py in <module>
----> 1 dump_errors(odrv0)

~/.local/lib/python3.6/site-packages/odrive/utils.py in dump_errors(odrv, clear)
     78             ('axis', axis, {k: v for k, v in odrive.enums.__dict__ .items() if k.startswith("AXIS_ERROR_")}),
     79             ('motor', axis.motor, {k: v for k, v in odrive.enums.__dict__ .items() if k.startswith("MOTOR_ERROR_")}),
---> 80             ('fet_thermistor', axis.fet_thermistor, {k: v for k, v in odrive.enums.__dict__ .items() if k.startswith("THERMISTOR_CURRENT_LIMITER_ERROR")}),
     81             ('motor_thermistor', axis.motor_thermistor, {k: v for k, v in odrive.enums.__dict__ .items() if k.startswith("THERMISTOR_CURRENT_LIMITER_ERROR")}),
     82             ('encoder', axis.encoder, {k: v for k, v in odrive.enums.__dict__ .items() if k.startswith("ENCODER_ERROR_")}),

~/.local/lib/python3.6/site-packages/fibre/remote_object.py in __getattribute__(self, name)
    243             return attr
    244         else:
--> 245             return object.__getattribute__(self, name)
    246             #raise AttributeError("Attribute {} not found".format(name))
    247 

AttributeError: 'RemoteObject' object has no attribute 'fet_thermistor'

when you call dump_errors(), you have a version mismatch between odrivetool and the firmware on your ODrive. To get the newest version of odrivetool, you can run pip install odrive --upgrade. To get the newest ODrive firmware, run odrivetool dfu. See the odrivetool page for more details.

USB Connectivity Issues

Firmware Issues

Failure to build the firmware when running make

Failure to flash the firmware when running make flash

Other issues that may not produce an error code

Motor cuts off or spins uncontrollably at high rotational speeds (ie: > 5000 RPM)

Motor vibrates when stationary or makes constant noise

Motor overshoots target position or oscillates back and forth

Motor slowly starts to increase in speed

Motor feels like it has less torque than it should and/or gets hot sitting still while under no load.

False steps or direction changes when using step/dir