The docs reflect firmware version 0.5.1. There are many breaking changes. Please find docs for v0.4.12 here.

ODrive Documentation

High performance motor control

View the Project on GitHub madcowswe/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.

ASCII Protocol

How to send commands

The ODrive does not echo commands. That means that when you type commands into a program like screen, the characters you type won’t show up in the console.

Arduino

There is an Arduino library that gives some examples on how to use the ASCII protocol to communicate with the ODrive. Check it out here.

Command format

The ASCII protocol is human-readable and line-oriented, with each line having the following format:

command *42 ; comment [new line character]

Command Reference

Motor trajectory command

t motor destination

Example: t 0 -2

For general moving around of the axis, this is the recommended command.

This command updates the watchdog timer for the motor.

Motor Position command

For basic use where you send one setpoint at at a time, use the q command. If you have a realtime controller that is streaming setpoints and tracking a trajectory, use the p command.

q motor position velocity_lim torque_lim

Example: q 0 -2 1 0.1

p motor position velocity_ff torque_ff

Example: p 0 -2 0 0

Note that if you don’t know what feed-forward is or what it’s used for, simply omit it.

This command updates the watchdog timer for the motor.

Motor Velocity command

v motor velocity torque_ff

Example: v 0 1 0

Note that if you don’t know what feed-forward is or what it’s used for, simply omit it.

This command updates the watchdog timer for the motor.

Motor Current command

c motor torque

This command updates the watchdog timer for the motor.

Request feedback

f motor

response:
pos vel

Update motor watchdog

u motor

This command updates the watchdog timer for the motor, without changing any setpoints.

Parameter reading/writing

Not all parameters can be accessed via the ASCII protocol but at least all parameters with float and integer type are supported.

System commands: