I like KISSing as well, but Micro ROS has its uses.
I went the Teensy 4.1 route with Micro ROS which is a bit harder than other routes such as the ESP32 and Pico, because, well, they haven’t made it easier.
I have very little use for other Arduino products besides the Teensy. Why go 16MHz when you can go 600 MHz. In robots, speed is almost everything. Why go with a few KB of RAM when you could have 1MB? Why go with 6 PWM ports when you could have 18? It just goes on and on. For me, I can’t think of a single reason not to use the Teensy 4.1.
Running MicroRos on a more limited processor might provide a harder decision as the advantages are less obvious. But, I can send hundreds of frame-related sensor messages per second with my Arduino over a serial port. And my robot now uses a pair of Teensy boards.
That being said, a simpler robot might just as easily justify a roll your own, KISS approach where the microcontroller sends simple bit streams to a more powerful processor, which then repackages the message into a ROS message. I did that for a few years, it works a treat. But I had to roll my own tools to measure clock skew, gather statistics, and so on. Adding in new sensors was a bit more of a pain. There isn’t a huge win either way, but there are tradeoffs each way.
I can’t make a great case for using MicroRos, but I do use it and I’m happy with it. It did take me quite a while to get a nice workflow going with me building custom Teensy boards for all the IO expansion I needed, running nearly two dozen sensor feeds with custom messages, some of them pretty big, to all work nicely. But I paid the price and now I’m happy with the product.
All of that, of course, suffers from the same brittleness and fragility you get with ROS and especially Linux, but every solution someone else offers has (so far) ended up with a much, much, much poorer place to be. It’s possible the Nvidia space is a better world, but I suspect that is true only after you invest 5 to 10 thousand dollars in hardware and a year of learning and then only on bigger robots than I’m building.
If you have a better solution, that works for a robot capable of reliably running in a house to do useful monitoring, sensing, moving applications, I’d like to hear about it. But, it must need less than 3 months to learn, and provide data recording and playback (one tick at a time), simulation, 3D visualization of all sensors, navigation, mapping, behavior trees or a good equivalent, plugins for extension, documentation and a few thousand people willing to chat and share knowledge about the framework.
The core people we have showing up every Tuesday to help each other with ROS is starting to pan out nicely.