ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

State of ROS2 on embedded MCUs

asked 2019-06-23 06:46:37 -0500

Hey All,

I've recently been diving in to the state of ROS2 on embedded microcontrollers (the STM32 family, etc). I'm hoping to play around with getting some devices participating directly in the ROS graph as first-class citizens, rather than writing a host-side 'ros driver' to bridge communication like we've done in the past. This goal includes non-ethernet DDS.

I'm trying to get a handle on what direction the community is currently headed so I can develop towards a common goal. On the one hand, I see several interesting repositories like the following, but they are marked 'archived'.

Meanwhile, the embedded SIG is all-in on the Micro-ROS project on top of DDS-XRCE. This is a great looking project, but seems to be targeting even lower-level devices than I am, and I'd like to avoid the distributed agent/client idea if possible.

Question is: What's up with the freertps project? Why is it archived? Is there any value in me working on that codebase, or is the community best served if I focus my efforts on Micro-ROS?

Thanks! Sean

edit retag flag offensive close merge delete


Hi, this is a great question, and something I am really interested in hearing more about. This might make for a good topic over on discourse. I would also love to hear more about your progress. and what you find.

kscottz gravatar image kscottz  ( 2019-09-10 16:52:46 -0500 )edit

Thanks! I haven't done much with it (I pivoted to another ROS2 topic at the moment but I'll be coming back to this idea next). If I get anywhere interesting, I'll share results on discourse.

theseankelly gravatar image theseankelly  ( 2019-09-27 13:12:35 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-09-10 11:41:33 -0500

ingo gravatar image

If you're looking at STM32-class devices, you will find it very hard, if not impossible, to get regular DDS running. The smallest implementation I've seen uses 100kB, and that has a lot of limitations, and is also not battery-friendly. Spending 100k just on the middleware already breaks most STM32's.

There is a reason the OMG embarked on using XRCE-DDS. If you want something close to DDS, that's your best bet.

That said, Micro-ROS doesn't require XRCE-DDS, it's just that at the moment, it's the only small middleware we have an implementation for. It uses the regular ROS stack, so you could have a different RMW layer, which does not require an agent. Of course, you would have to run the same, non-DDS middleware on your other devices as well if you don't want to bridge.

Also, the current Micro-ROS reference board is using an STM32F4, which is exactly the kind of device you said you want to use :-) The only bigger STM32 is the F7, which we currently don't have a board for, but if you want to look at that, we'd be happy to help.

btw, most people I've spoken to don't have a big issue with bridging. If you want to avoid, could you elaborate on why?

edit flag offensive delete link more


Thanks for the info -- I don't have a big issue with bridging. I'm coming at this more from intellectual curiosity to see whether it can be done.

theseankelly gravatar image theseankelly  ( 2019-09-27 13:11:58 -0500 )edit

@ingo I have been googling on how to get my sensor project going on ROS2, and I found out this post.

Is there any way, in ROS2, for a sensor microcontroller send data _without_ running a RTOS like nuttx, just like "bare_metal"?

I developed a imu sensor project where I am using rosserial_tivac. I was looking at solutions to go with ROS2, and I think would be the quickest way.

Best regards, Can

wintermute gravatar image wintermute  ( 2019-11-07 01:37:34 -0500 )edit

Question Tools



Asked: 2019-06-23 06:46:37 -0500

Seen: 2,257 times

Last updated: Sep 10 '19