This package serves as a hardware interface to control ODrives from ros2_control.
It assumes that the ODrive is already configured and calibrated (see docs for details).
This is a work in progress (see Features).
For a high level usage example, see the BotWheel Explorer ROS2 Package.
- Communicates over Linux SocketCAN
- Position Control (with optional velocity and torque feedforward)
- Velocity Control (with optional torque feedforward)
- Torque Control
- Automatic control mode selection (based on which Command Interfaces are claimed by the ros2_control Controller)
- Position, velocity and torque Feedback
- Multiple ODrives
TODO:
- Error feedback & error handling: If an ODrive disarms for some reason (e.g. undervoltage), the application that connects to ros2_control will currently not be notified.
- Other telemetry: Additional data like temperatures, DC voltage, etc. are currently not propagated through ros2_control up to the application.
Top level:
can
: Name of the CAN interface to run on
Per joint:
node_id
:node_id
of the ODrive
(from ros2_control Controller to ODrive)
position
velocity
effort
(aka Torque)
(from ODrive to ros2_control Controller)
position
velocity
effort
(aka Torque)