Again, never having messed with even the first version of ROS, I’m not exactly an expert here, but it seems that things are way too complicated.
The only real limitation to the GoPiGo-3, (aside from the programmer’s skill), is the 'bot’s physical size and hardware capabilities.
It’s relatively small.
The wheel motors are pitifully weak by robotics standards and there is relatively little room to attach stuff.
It could use more ports to attach things to.
I found a Seeed Studio Grove-Pi board that has an absolute S-load of ports on it. Since it uses the same 26 pin header that the GoPiGo uses, I wonder if they can be stacked.
These limitations are easily explained when you realize that the GoPiGo was originally designed to be a robotics teaching tool and not a DARPA/Steroid infused Battle Bot.
So far, I have not seen anything you can do in ROS of any flavor that could not be done in R4R.
I also believe that, as robots go, the Dexter/M.R. implementation is as simple and elegant as anything else I’ve seen.
At the risk of mangling a line from Fiddler on the Roof “I can do things in Bloxter that would cross a rabbi’s eyes!”
And it’s true.
I have not yet seen the limits of Bloxter, except for the implementation of undefined hardware like a LIDAR.
And that’s not even a limitation since new blocks can be defined. (I’m still waiting for the spec’ for that one. It’s been promised, but there appears to be too much on their plate as yet.)
And that objection goes away when using R4R.
Again, the interface is clean, remarkably intuitive, and relatively simple when compared to other robotic languages I’ve seen.
Also, based on the stuff both you and @KeithW are doing, ROS seems to be needlessly complex. It seems to embrace complexity for its own sake, avoiding simpler and more elegant ways of doing things.
Even while working on my Remote Camera Robot project, I am amazed by how difficult it is to do simple things.
The main control routine on the client side is a gigantic piece of code called “nipple.js” that is absolutely huge and virtually impossible to figure out.
Part of this, IMHO, is because it wants to do too many things at the same time that should really be broken out into separate routines.
Every time I end up in a situation where things appear to be needlessly complex, I try to take a step back and work out how to do it in a simpler way.
But that’s me.