SCARA project Odrive+ROS in a raspberry pi


A friend and I are making a SCARA with 4 DOF using bldc motors and Odrives. We already bought 2 boards but still haven’t received them so no test have been done yet.

I want to use ROS for this robot so what I plan to do is connect both of the Odrive boards to a Raspberry pi using the neomanic ROS node ( I would like to try different control strategies and for that I suppose that should use the Odrive in the current mode, is this possible with the neomanic ROS node?

Do you have any general recommendations when using the Odrive with the Raspberry pi, is there any issue with communication speed or something similar?

I also been reading different post and I noted that there is a CAN BUS interface (CAN Interface Available for Testing) in what case one would need to use this protocol, is it faster?

Thanks a lot for this project, we hope we can make a contribution!


I started using a Raspberry Pi with ROS to control an ODrive as well as some Dynamixel Smart Servos.

I used thisimage for the Pi. It already has ROS installed.

I had some issues with Pip here is what I did:

python -m pip uninstall pip

sudo pip install --upgrade pip==9.0.1

or try:

python -m pip install —-upgrade pip==9.0.1

This is needed to install Odrive from Pip:

pip install monotonic --user

Clone ODrive Repository:

git clone

Install Python3 & python-USB

sudo apt install python3 python3-pip
sudo apt install python3-usb

Set up USB permissions:

echo ‘SUBSYSTEM==“usb”, ATTR{idVendor}==“1209”, ATTR{idProduct}==“0d[0-9][0-9]”, MODE=“0666”’ | sudo tee /etc/udev/rules.d/91-odrive.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

instal ipython

sudo apt-get install ipython ipython3

Run ODrive:

cd ODrive/tools

You can try installing Odrive using pip, but I think I ran into errors which is why I just cloned the repository.

sudo -H pip3 install odrive

there is an ODrive ROS library that I started to play with but then I switched approches altoghter and went with a Windows PC and I’m communicating with the ODrive using the Ascii protocol. But there are some examples and python code you might be able to play with.

the problem I ran into is that Neomanic’s library was built for the ODrive as a two-wheeled vehicle controller and not a robot arm.

Good luck I hope that helps you some