-
rosserial
A ROS client library for small, embedded devices, such as Arduino. See: http://wiki.ros.org/rosserial
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
Micro-XRCE-DDS
An XRCE DDS implementation. Looking for commercial support? Contact [email protected]
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
A core package of ROS1 is the Rosserial. It supports several concrete microcontrollers, including the Arduino, STM32, Teensy. Effectively, this package is a set of C/C++ headers that you incorporate in your microcontroller code. Then, you can directly receive and send ROS messages using the imported ROS message format. The receiver, e.g. your single board computer, needs to implement a ROS server. Here, you can use either C++ or Python. There are several examples in the Github repository. I also recommend a great blog article about connecting ROS to Arduino with L298D to directly convert TWIST messages to motor controller PWMs.
ROS2 does not provide a package similar to rosserial. A technical study how serial communication could be implemented is the ROS2 serial bridge. The basic idea: Incoming data from the ROS2 network is serialized and send to the microcontroller, and received messages are translated to ROS2 messages. However, this not a concrete library.
Alternatively, you can use the default client libraries like rclpy or rclcpp for writing custom code that reads and writes ROS2 messages.
Alternatively, you can use the default client libraries like rclpy or rclcpp for writing custom code that reads and writes ROS2 messages.
MicroROS is a project to implement a complete ROS2 node in your microcontrollers. The experimental MicroROS Arduino branch extends Arduino programs with additional C/C++ headers for full ROS2 compatible message subscription and publication. Specifically, its provides as precompiled binaries that support specific Microcontrollers such as the Arduino Nano RP2040 Connect or the Teensy 4.1. The list of natively supported ROS messages is impressive.
The ROS2Arduino library support more powerful Arduino Boards with at lest 32KB RAM and a TCP/IP hardware. Internally, it is build on top of the Micro XRCE-DDS framework, which provides Serial, UDP or TCP connections. According to the documentation, it only supports ROS2 up to the Dashing Diademata distribution.
The ROS2Arduino library support more powerful Arduino Boards with at lest 32KB RAM and a TCP/IP hardware. Internally, it is build on top of the Micro XRCE-DDS framework, which provides Serial, UDP or TCP connections. According to the documentation, it only supports ROS2 up to the Dashing Diademata distribution.
The Firmata Protocol provides an abstraction layer for communicating with a microcontroller to read and write its GPIO pins. Currently, it works with Arduino based microcontroller. To use this, you need to install the Firmata firmware on your microcontroller, and then use the client library for sending Firmata commands. The protocol support different client libraries, like Python Pymata4 or other languages like JavaScript and Ruby. There are no ROS abstractions, which means inside the client you would need to write custom code for processing and generating ROS messages.
Still experimental is U2IF, a very specific library to run MicroPython code on a host computer, like an Raspberry Pi, to which a Raspberry Pico is connected via USB. The MicroPython environment gives full access to the GPIO Pins and additional bus systems like I2C or SPI.