ROS2 on microcontrollers with RIOT

Yes, that include the comms stacks.
The wireless communication is IEEE 802.15.4. In the user application point of view, RIOT provides a net interface similar to the interfaces you can find with Linux. RIOT have a fully working UDP/IPv6 stack (I use it in my project). I think TCP is also working, but I never used it, same for IPv4. About Ethernet, it depends on how you would use it.

Before choosing between NDN and MQTT, let me quickly list the pros and cons

  • NDN
    :heavy_check_mark: replace the full TCP/UDP/IP stack
    :heavy_check_mark: is topic-oriented by design
    :white_check_mark: is decentralized by design
    :white_check_mark: can be used on top of TCP/UDP/IP as well as directly on the MAC Layer (ethernet, 802.15.4, …)
    :x: is still an active research topic and not standardized
    :x: currently don’t provide the ROS2 communication patterns (Pub/Sub, Services)
    (but I implemented a beginning of Pub/Sub)

  • MQTT-SN
    :heavy_check_mark: is based on UDP/IP
    :heavy_check_mark: is topic-oriented by design
    :white_check_mark: provide a Pub/Sub communication that fits well ROS.
    :white_check_mark: is quite standardized
    :x: is centralized by design (needs a broker)
    :x: don’t provide the ROS’ Services communication pattern

For me, as a PhD student, NDN seems more interesting than MQTT, but harder to integrate in ROS2. But the thing is that I need to compare any of my implementation to something. Since I was not able to use DDS on my hardware, I just tried these 2 solutions, which may not be the only two I will try.

3 Likes