// the find
Factor-Robotics/odrive_ros2_control
ODrive driver for ros2_control
A ros2_control hardware interface for ODrive motor controllers, talking to them over ODrive's native USB protocol. It is for ROS 2 developers on Foxy or Humble who want ODrive axes exposed as standard position, speed, or torque joints. Before cloning, know that each ROS distro and firmware pair lives on its own branch, and the default branch has not moved since August 2023.
- It implements the ros2_control hardware interface directly in C++ over the native USB protocol, so standard controllers can drive the axes without a custom bridge.
- Unit conversion follows REP-103, so joint definitions in the URDF use SI units without hand-written scaling factors.
- Each axis can run its own control mode, and the README claims smooth switching between modes. It supports multiple ODrives and either or both axes on each one.
- The odrive_demo_bringup package has diffbot, rrbot, and multi-interface launch files with matching controller YAMLs, which gives you a working reference to copy from.
- USB is the only transport. Serial and CAN are still on the todo list, so CAN-bus ODrive setups are out of reach.
- The compatibility table lists only firmware v0.5.1 and v0.5.3 on Foxy and Humble. Nothing covers Jazzy or later, and nothing covers newer ODrive firmware.
- The last push was in August 2023 and the todo list has not changed, so check the open issues before you depend on it for a new project.
- Axis configuration is not generated from the URDF or YAML yet. The ODrive's own parameters still have to be set separately, which is an easy place to get a mismatch.