Now that I have another experimental platform to mess with that can be reconfigured at-will without destroying years of work, I am considering taking a peak at ROS.
Before I do so, I want a clear picture of:
The present state of the art within ROS.
What I am getting myself into.
Will there be enough benefit to me to make it worthwhile, aside from bragging rights.
As I alluded to in another post, I am not sure that ROS is a really good fit for a robot like the GoPiGo-3, unless you want to fit advanced sensors like LIDAR or megabucks class optical recognition devices that, as yet, I don’t think I need as I haven’t yet made full use of the sensors I already have.
As I understand it, a ROS installation:
Starts with an Ubuntu installation that will require it’s own, non-trivial configuration.
Then the whole GPG/EasyGPG set of libraries have to be installed and configured.
Then, (once you have a working GoPiGo over Ubuntu set up), you install the whole ROS blob over that, adding additional layers of indirection, complexity and points of failure.
Then you go through the whole process of configuring talkers, listeners, message brokers, supervisory layers, etc.
THEN you apply power and hope the thing doesn’t spin outta control like a whirling dervish or smash itself to smithereens slamming into a brick wall at max RPMs.
Admittedly some of this is tongue-in-cheek, but is it really worth it? Or will I just have another unicorn to add to my already growing collection?
I’d really like to see some considered discussion on the relative merits of:
GoPiGo O/S
A custom curl’d installation of the GPG libraries over Buster/Bullseye.
I’m looking forward to @cyclicalobsessive 's insights. My short version is that I suspect it probably isn’t worth it for you. With GoPiGo OS you’ve got everything you need. For me, I picked up the GoPiGo3 specifically to improve my knowledge of ROS (because that was the platform on which the Hands on ROS for Robotics Programming book was based). So our starting points were completely different.
I also suspect that the two of you are further along with programming than I am too.
Programming for the sake of programming, (ars gratia artis - art for art’s sake), never really fascinated me so I never had the incentive to study it deeply.
I have been more interested in programming to solve a specific, identifiable, problem - like writing a capsule test to identify a failing chip, or simulating a piece of network test equipment.
Having to link twenty different talkers and listeners just to show a realtime video image somehow seems grossly inefficient - like going from Moscow to St. Petersburg via Vladivostok!
But that’s me.
So am I.
I expect he’s going to be able to provide a richness of thought and detail that few others can match.
What piqued your interest in ROS in the first place? (Aside from a masochistic lust for pain and degradation, that is.  ) And why did you go direct to that route? Do you have / are you planning on a larger, more sophisticated robot to bring you a beer?
Not really sure. I was interested in robotics, and ROS seemed to be the emerging standard. I’ve used Python for a while, and since Python was one of the two primary languages it seemed like a good fit. I liked the notion of having a lot of the infrastructure done for me.
Not to bring me a beer, but I would like to make robots that can navigate autonomously outdoors safely. I don’t know that I’ve made a lot of progresss in that direction, but I’ve learned a lot and had fun in the meanwhile. Since this is just a hobby, that’s what matters.
/K
PS - and I’m enjoying the (small) community here. I had hoped that when the book came out that there would be a more robust community that developed here (I think I’ve mentioned that before). But even though that hasn’t happened I’m delighted to have made the acquaintance of you (@jimrh ) and @cyclicalobsessive, as well as the @cleoqc. That’s probably the biggest thing that’s keeping me on the GoPiGo3 rather than moving on to a new platform.
In my case I had a golden “window of opportunity” to get an experimental robot, looked at what was available, and decided that in the sub-$200 price range the GoPiGo provided me the best robot for the buck.
Another criteria was a 'bot that I could “grow into” instead of “grow out of” and the GoPiGo seemed to fit that criteria admirably.
By comparison, all the other robots in that price range seemed to be fragile toys with a limited play-lifetime. The GoPiGo on the other hand seemed to be a serious robot with real chops that I could learn from.
The fact that the lion’s share of the O/S and library infrastructure was already in place was also a huge factor as I wasn’t particularly interested in programming low level motor, sensor, or servo functions - I wanted to program the robot, not the motors. That is I didn’t want to be required to program the motors unless I wanted to.
That, the active community at that time, and the googly eyes, (Translation:Â The robot was designed to be fun to mess with.), is what eventually lead me to buy one.
Allow me to second, third, and fourth that motion! (With the obvious substitution of you for my name there. )
Why ROS, wherefore base? (A cost/benefit analysis request)
You packed a lot of thoughts into your post, and I have a lot of thoughts of “What say ye?”:
The present state of the art within ROS.
ROS, the original Robot Operating System, is still actively supported and nearly every tutorial and ROS book is written to ROS original.
ROS2 is the “new” present and the future. ROS2 has been maturing quickly this last year, filling in any original ROS functionality gaps, and exploding with new functionality, libraries, and development environments. By the end of this year, I believe it will be very stable in terms of the functionality for new ROS2 developers. The changes from January 2022 to July would have changed some of my node startup code, and I have not revisited Dave in that time.
There are lots of camps and initiatives in ROS. Most are industrial or automotive in nature, but telling for us is the Turtlebot-4-Lite currently promised for Aug 2022 at $1195.
The Turtlebot-4-Lite is a base layer of the iRobot Create3 sensors and intrinsics, a LIDAR, the Oak-D-Lite, and a Raspberry Pi4 4GB.
The Create3 base offers basic find the dock and get on it from in front of the dock as a ROS2 action request - which is a major addition to the ROS2 “state of the art”, but I don’t see it as changing the orbit of the earth. Having iRobot supporting and writing ROS2 code puts the Create3 firmly into the ROS2 world.
The Oak-D-Lite (ODL) is an impressive programmable graphics processing unit combined with two stereoscopic black and white cameras and a central 4K resolution fixed or optionally variable focusing camera. (My kickstarter ODL is the variable focus for closer focusing ability.) This GPU has impressive capability with an equally impressive low power requirement. The ODL can be configured with the B&W cameras feeding a neural net that performs 3D depth estimation, while simultaneously feeding the color camera to a YOLO object detector, and then merging those outputs to provide a 3D position estimate of the recognized object, or a depth point cloud for the visible surface of the object, or … and the possibilities are nearly endless" as there are smart folks writing OpenCV libraries which it just so happens the ODL understands OpenCV. This sensor represents the single, biggest advance for computer vision on mobile robot platforms so far. This is significant, and is going to kickstart the next generation of mobile robots. Did I forget to mention it is truly an impressive sensor?
With that intro, we might wonder what is the ROS on GoPiGo3 state of the art? Pretty pitiful IMO. There is Keith’s Finmark running ROS “1” with no one to compare his results with, and there is Dave running ROS2 whose next step is to learn to do mapping and location estimation with the LIDAR. While Dave has an Oak-D-Lite, I have only written a Python (Non-ROS2) proof it works demo, so cannot even think about using it in ROS2.
The GoPiGo3 has lots of potential and flexibility, but without a company ROS guru on board to spearhead marketing, training, and support the GoPiGo3 will remain a bit player in the ROS world. If ModRobotics were to introduce a ROS2 version of the $119 Core GoPiGo3 bot (with the battery that has 12v and USB 5v outputs), adding a $125 Pi4, the $30 DI IMU, an $80 LIDAR, and the $149 OAK-D-Lite they would have a $500 ROS “GoPiGo4” that would fill a giant void in the educational ROS platform market. (The Turtlebot4 is going to be $1200 or more if you can even get your hands on one, and that will be the least expensive commercially available ROS platform by $600 from the nearest competitor at $1800.)
What I am getting myself into.
To put it blunt: a mess.
I am reasonably sure I could get you up and running ROS2 in 3 hours for your current bot, and perhaps 2 hours to load up ROS2 on your laptop. (Charlie is the bot with an IMU if I remember. You would want to move that to Charline to have as capable ROS2 bot as possible.
After that you would be in the same situation as Keith and I, having no ROS on GoPiGo3 Guru to help us. You could learn everything there is to know about ROS/ROS2
Theoretically it is possible for a ROS robot with only the DI DistanceSensor to wander around building an occupancy grid and even a rough map, using the encoders fused with the IMU for localization (position and heading). In reality I have not heard of anyone doing this, so you would be a unicorn in the dark IMO.
Will there be enough benefit to me to make it worthwhile, aside from bragging rights.
No benefit to your robots. The benefit to you? worth the while? Let’s just say that the only value to me has been to be aware of how messy ROS2 is, and how much I wish someone had already bridged the all ROS2 on GoPiGo3 chasms to having a fully self-contained bot with reasonably accurate localization, mapping, obstacle detection and avoidance.
Installing
That was true in January 22, I think they improved the process since. I will need to revisit this and script as much of it as I can.
I already have a “GoPiGo3 Install Script” for the 32-bit Bullseye PiOS that I need to try/update for 64-bit Ubuntu.
Installing ROS2 took less than a minute with a single command and “worked immediately out-of-the-box”
No, then:
make some folders to hold your ROS2 specific code
install my GoPiGo3 IMU for ROS2 package from PyPi - single line command
bring down my ROS2 GoPiGo3 node - single line wget
bring down my GoPiGo3 URDF model (temporary till you edit it to match your bot) - single line
fire it up
and then on your laptop:
install ROS2 (surprisingly easy)
make some folders to hold your ROS2 specific code
bring down my GoPiGo3 URDF model (temporary till you edit it to match your bot)
fire it up
see if your laptop ROS2 environment is hearing your robot’s broadcasts (works first time for most folks)
try sending a command message to the bot to see if the bot is hearing your laptop’s broadcasts
Benefits
The ROS Robot Operating System is generic for any robot (with a simple one page robot specific interface code)
with drivers for nearly every sensor imaginable and
enables zero-configuration distributed processing
has thousands of users
has hundreds of committed, active developers
has free tutorials and paid courses available
is reasonably simple to get started for an environment with unlimited capabilities
offers programming primarily in Python or C++
does not break when you update the underlying processor operating system
Â
GoPiGo O/S is a tailored educational environment
that offers simple to complex programming from any laptop with a browser
offers programming in visual Bloxter, Python, C++, Java, and NodeJS
has ready to run examples from basic motion all the way up to current machine learning vision
has one active user that I know of … sorry that is admittedly tongue-in-cheek
DI has that for Buster, and I have that for Bullseye 32-bit, but the 64-bit Ubuntu version needs an afternoon’s attention - on my TODO
The MR GoPiGo3 market is well served by offering the GoPiGo OS image and SDcard, with everything installed.
There are only three known regular GoPiGo3 users not running the GoPiGo OS.
(Really wish MR published an annual platforms sold and schools actively using the GoPiGo3.)
This is one of the best and most neutral write-ups I have seen so far.
Most of the writeups have been very polarized, (it’s the second coming of Christ or it’s the anti-christ), which makes me suspicious.
Likewise most of the literature has been based on heavier-weight (both literally and figuratively) robots that (IMHO) are designed for heavier weight projects.
At the present state-of-the-art, were I to go to ROS, I would seriously consider the turtlebot as it has a more highly developed ecosystem.
As you so astutely observed, the GoPiGo ecosystem is rapidly shrinking, no small part being MR’s decision to take support off-line.
Again, IMHO, this is a GIGANTIC, (i.e. first-order), mistake as anyone researching the 'bot and using depth of forum support as a metric, (as many do), will skip this otherwise excellent robot out-of-hand. I know I would have.
Summary:
At the present time ROS may not be the best fit for me.
It is. -ish. I learned most of my ROS taking a class that used Turtlebots. But even there they changed out the computer because the Raspberry Pi is too underpowered to run all of the code on the bot itself. Of course that meant a bigger battery and limited battery life. For learning I’ve been happy enough with the GoPiGo3, but I am running all of the SLAM code on my laptop, not the bot. I do worry that the Turtlebot 4 (full and Lite versions) will have the same issues. I’ve seen some other designs using NVidia Jetson as the CPU - haven’t looked close enough to see how much is running on the bot and how much on a networked laptop.
they would - and it really wouldn’t be any more limited than the Turtlebot 4 lite. But it seems DI is focused more on the jr high/high school market. With limited resources I understand the need to focus. I had hoped the book would trigger broader interest in the GoPiGo platform for ROS, but that doesn’t seem to have been the case. So no surprise if DI is hesitant. But at some point they’re going to have to migrate the platform to the RPi 4.
Only you can decide that, but I suspect that’s true. I can’t say that I can really do any more with ROS than you can do with the GPG O/S. But that wasn’t my goal.