An Arduino library enabling Arduino boards to communicate with ROS2 via XRCE-DDS over Serial, UDP, or TCP.
ros2arduino is an Arduino library that enables Arduino microcontrollers to communicate with ROS2 (Robot Operating System 2) using the XRCE-DDS protocol. It solves the problem of integrating low-resource hardware like Arduino boards into modern ROS2-based robotic systems, allowing them to publish sensor data and subscribe to control commands as native ROS2 nodes.
Robotics developers and hobbyists working with Arduino hardware who need to integrate their projects into ROS2 ecosystems, particularly those building distributed robotic systems or IoT devices that require ROS2 communication.
Developers choose ros2arduino because it provides a standardized way to connect Arduino boards to ROS2 networks without requiring custom communication protocols, leveraging the established XRCE-DDS standard while maintaining compatibility with ROS2 tools and workflows.
This library helps the Arduino board communicate with the ROS2 using XRCE-DDS.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables Arduino boards to act as native ROS2 nodes using XRCE-DDS, allowing seamless publishing and subscribing to topics within distributed robotic systems, as highlighted in the ROS2 Integration feature.
Supports Serial, UDP, and TCP transport options for connectivity, providing adaptability to different hardware setups and network environments, as noted in the Multiple Transport Support section.
Allows pre-configuration of ROS2 entities like participants and topics via XML reference files, streamlining initialization and enabling compatibility with ROS2 security features when configured.
Utilizes the Micro XRCE-DDS protocol designed for resource-constrained devices, making it suitable for microcontrollers with limited RAM and processing power, as emphasized in the XRCE-DDS Protocol description.
The library is only tested with ROS2 Dashing and specific Micro-XRCE-DDS Agent versions, lacking support for newer ROS2 releases, which may hinder integration with modern robotic systems and tools.
TCP communication is not supported on all boards (e.g., ESP32), and only a few boards like OpenCR and MKR ZERO are officially tested, reducing out-of-the-box usability for diverse Arduino platforms.
Requires manual installation of specific ROS2 and agent versions, along with configuration changes in library code for features like entity references, increasing the learning curve and setup time for developers.