Ros2_canopen shortcomings and improvements
Industrial robotics firm InMach patches critical ROS2 CANopen driver limitations, enabling multi-axle control and secure hardware interfaces.
Industrial robotics firm InMach has publicly detailed critical shortcomings in the ROS2 ros2_canopen package and is pushing to upstream their fixes. The core issues stem from the package's current CIA402 driver, which only supports controlling a single motor axle despite the industrial standard allowing up to 8. InMach's hardware utilizes 4 axles, necessitating a workaround. Furthermore, the team identified a significant security flaw: because ros2_control reuses standard ROS node implementations, external ROS topics and services can bypass the intended control layer, creating an unsafe scenario for industrial equipment.
Technically, the problems extend to system architecture. The current stack cannot handle different types of CAN devices on the same bus, forcing developers to write custom systems—a complexity that compounds when using nodes with custom APIs. InMach also points out that the package uses an outdated template pattern for handling Node and LifecycleNode types, whereas the modern ROS2 approach employs `rclcpp::node_interfaces`.
This public call for discussion, posted on the ROS Discourse forum, represents a collaborative effort to harden a foundational package for industrial robotics. By contributing their fixes for multi-axle support, security hardening, and modernized code patterns, InMach aims to elevate the reliability and capability of ROS2 in demanding manufacturing and automation environments. The improvements are crucial for developers building complex, multi-axis robotic systems that require deterministic and secure communication over CAN networks.
- Fixed CIA402 driver to support 4 axles, addressing a major limitation versus the standard's 8-axle capability.
- Patched critical security flaw where standard ROS topics/services could bypass the ros2_control layer, compromising system safety.
- Improved architecture to better handle mixed CAN devices on a single bus and modernized code to use `rclcpp::node_interfaces`.
Why It Matters
Strengthens ROS2 for industrial use, enabling safer, more complex multi-axis robots crucial for advanced manufacturing and automation.