Let's Make Robots!

The future of hobby robotics?

Hello dear LMRers! Not long ago I launched a blog at ohmnivore.co.nr . For a start, I wrote about an idea I had in mind for a long time and that has me wondering; why are there so little RaspberryPi-powered robots? I post this to stimulate a discussion about the RPi (I'm aware a lot more people will see it here, not at my blog). I'm too lazy to edit all the links, so the original version with working links is here.


In general opinion and world culture, robots are pictured as machines much more complex than what hobby robotics has to offer today. People expect robots to interface with our world much the same way we humans do. That’s very challenging, especially for the hobbyist.

I have been long enough in the hobby robotics community (mainly letsmakerobots) to witness the popularity of some components such as the Arduino, Picaxe, PING, and the general-purpose servo. The advent of each of these components has brought hobby robotics up a notch, and the more they arrive, the better.

I think that the next step to make more functional robots is to innovate with computer vision and sound processing. This is mainly done with a wireless connection that uses a PC for all the computations. While it does work, it can be compared to an invisible tether. The robot loses part of its autonomy. Instead, single board computers allow full autonomy. But to be honest, who at letsmakerobots.com has used an SBC? Not many people, at least before RaspberryPi came out. And that’s the point of my article. I firmly believe that this open-source, low-cost, versatile,community-supported, efficient and small SBC is the future of hobby robotics. While it may not be great to support a robot by itself, it can be coupled to an Arduino for a complete awesomness overload. The Arduino can take care of interfacing with electronics, while the RPi computes sound processing, computer vision and AI, for example. What do you think?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

In the .. ongoing..development of LMRv4 we have implemented a Wiki. The idea is that things like the R-PI should have a page in there, that everyone can contribute to. And then you can "include" this info / board in your robot projects that use the platform.

I am just saying this to contribute to the general knowledge (not becase I want people to ask when v4 goes on air - I tell you; We are seriously doing the last fixes these days - seriously! :)

Awesome! Thanks a lot to everyone working on LMR, it really is a great website and community.

I think there is an analogy with robotics between where things were in early to mid 1990s with computers in the workplace and home and where we are today with robotics.  I think the IRobot roomba, scooba etc are sort of like those first PCs with dual 5 1/4" drives, 640 K of ram.  At the time, they were kind of an expensive novelty but did some really nice stuff for their buyers.  It took a bit for people to understand the value, but they did.  Pretty soon, people couldn't imagine their lives without them. 

I am a PC developer, and I work in a very rich environment of services which just weren't in place in 1994 on Windows 3.1.  Back then, even creating a sorted list was a lot of work.  Now, go online, find a template application that does something close and similar to what you need (trust me, it is out there!) drag, drop change a few lines, clip that, tweak that and you have close to what you want..  With robotics, we have a mishmash of hardware and development platforms, none of which talk to each other, none of which can physically be connected to each other because there are no standards for connectors either.  But the vision of how robots can enhance and change people's lives is really, truly within reach.  Having robots that can help care for the elderly, clean your house when you are at work, shovel your driveway when it snows is more than just whimsy.  Today, Google's car can drive your car for you.  And in robotics, all of these problems are standard problems that could be off the shelf integrated components that interact smoothly with each other and anybody can easily purchase (Model T of robots!!). 

So, the RPi, the Arduino, Pickaxe etc are all just stepping stones, the great, great, great grandparent to that integrated solution of hardware and software components that can solve whatever problem you want.  I think you are right that an Arduino and a RPi together is great solution platform.  Linux has huge number of services and software available to it, great development tools in C++ and Python (which is really nice to work in).  The hobbyist such as myself, is not going to be putting together a robot maid in a weekend but is definitely a step on the way.




I used in mine :) 

But you are correct, no one does really advanced stuff as you describe, I think this is mostly because advanced stuff is pretty hard to do in the end, especially on hardware with limited capabilities.

I have build my RPI bot to try OpenCV on it an do some advanced stuff but hey I'm just a hobbyst in the end and my interest on it got away.  Not the bot just stads there waiting for some time and attention :/



Having actually done a little work in this field, I'll try to be a bit more brief than I usually am when a subject like this comes up. The first thing that occurs to me is that the Pi is a full blown computer like your desktop machine rather than a microcontroller. That means it needs a monitor, which is less than convenient to have to go chasing after on a mobile platform, either to read the monitor on board or to attach a prohibitively long cable to. Also, an on board monitor sucks batteries down like crazy. You kind of cover this when talking about the tether problem, but overlook that it creates its own problems on that front. The second is that the Pi only has one PWM channel built in and that isn't available if you use audio out (this can be overcome to an extent using WiringPi-see my tutrorial at http://letsmakerobots.com/node/34774) and it doesn't have any ADCs built in (which can likewise be overcome for far less than the cost of an Arduino using an MCP3008 or an ATTiny over the I2C bus.)   I do see a lot of people state the intention of using an Arduino as an intermediate between the Pi and the I/O, which to me is kind of like buying a light truck to pull around your tow truck given the solutions I mentioned above and the myriad others that I'm sure are extant.

Python is not strictly needed to program your Pi. If you want you can do everything in C-every level of control is available to you, so I don't think that's so much of a problem, and the availability of Python is an asset rather than a liability. It is an "elegant" language that lets you do complex things simply.

In addition to bdk6's observations, I will say that I have read accounts of people getting discouraged by the long compile times they experience when customizing builds of things like openCV, which may be necessary when you're trying to integrate vision and motion. Also, for hobby robotics, this is on the very high, complex end of what a hobbiest can work with-its low expense has out moded it's power. For the most part, hobby robotics is oriented towards "trapping" the next generation of engineers into seeing the inescapable coolness of what can be done for purposes of generating our next crop of engineers to put through college. Very few of us ever try to take it to a more utilitarian level. 99 percent of hobby robots built are line followers, obstacle avoiders, photophobes/photovores, beam walkers, maze solvers or sumo bots. You don't need a full Linux system to make any of those (indeed it would probably be more of a hindrance than an asset to have that much power.)  Very very few hobbyists ever branch out to try to make something that can do a simple household chore, and those that do usually find that even the simplest chores are more complex than even a Desktop workstation based unit can handle.

In summation, The Pi is a very young platform compared to Parallax and Arduino, and its primary function isn't mechatronics-it's education. The point is to get a Linux machine in to the hands of young people everywhere. Doubtless you'll see more and more Pis popping up in projects, but it may be a while before it becomes a popular robot brain.

Complexity.  That is the limiting factor.  I will try to get my thoughts across without making this too complex, but there are a lot of factors.  I will concentrate on three factors:  resources, ability, and prior art.  To do that I will compare robots to flying machines.

Let's start with resources.  Everyone has some amount of resources: time, money, junk in the garage.  If we want to build a flying machine we can probably find or buy some balso wood, styrofoam, paper, a small motor, and other stuff and take a few hours to glue something up on the kitchen table that will fly around the yard or park.  Not too much strain on our resources.  But what if we try to push the envelope and build a fighter jet, a 787, or a space shuttle.  That is going to take a LOT more time and money. A lot of people build RC airplanes.  Not many build "real" flying machines, and the ones who do take a lot longer.  Same with robots.  Fewer people have the resources to push the envelope and the development takes a lot longer.

Next up is ability.  The skills used to build an RC balsa or styrofoam plane don't scale up to larger aircraft.  The skills to build and program a robot that reads some reflective sensors and turns some wheels to keep a line under the sensors won't scale to using digital signal processing, complex data structures and algorithms, and multi-thousand line programs to interact "intelligently" with humans.  Most of the people building small robots on LMR simply don't have the skills for even one of those tasks, much less integrating them all into a functioning robot that interacts with its environment and the humans in that environment.

And then there is prior art.  Has someone done this before?  Can I build on what they've done?  If you want to build an RC plane, there are plenty of examples on the web and elsewhere to build on.  But a spaceship to carry ten people to Mars?  Gotta start from scratch.  How long does it take to build a Start Here robot or a line follower?  Look on LMR, get the plans, the schematics, the code, add a couple personal touches, and in a couple hours you are done.  But how about a life size, walking humanoid that can recognize its "master" and then fetch a drink from the refrigerator and bring it to him (or rarely, her).  Probably not a lot of places you can go to find working plans, schematics, and code for that.  So you better get busy designing, buying parts, building, and coding.

So, I would bet there are quite a few people building sophisticated robots with Raspberry PIs and similar boards.  Not nearly as many as post Start Here robots on LMR, though.  And those who stick it out and finish it will take a long time.  So expect to see a lot fewer of those and for them to take a lot longer to see the light of day.  Eventually, the base of prior art will build and the systems will become simpler and these types of things will become more common.  It wasn't long ago that something like a Picaxe or Arduino was just a pipe dream.  When someone does to Willow Garage's robot operating system what MIT did with C++ to create the Arduino, things will get easier and faster.  Technology builds on itself.  Until then, be a pioneer and lead the way.

At least that's my two cents worth.

Thanks a lot for taking the time to reply! I completely agree with what you enumerated. It also made me realize that the RPi actually is fairly accessible according to the ability+ressources+prior art system.

I think that the ability of a person to start coding on the RPi is his knowledge of Python, of the libraries he will be using with Python and of the notions he will be coding -i.e. knowing computer vision for coding with SimpleCV. Besides, AI and CV are things that were already accessible to the hobbyist, but its implemantations were hardly accessible. 

In regards to ressources, the RPi is fairly cheap, so time is the factor. I agree, of course that robotics is like a never-ending pit of complexity. There's always a way to dig further, to attempt something more complex and more time-consuming, but isn't that a hobbyist's goal? To build a robotic platform and to elaborate on it as much as possible ('till the originally set goal is reached or 'till the builder wants to try another idea)?

As to prior art, I think the RPi isn't the limiting the factor. It's Python, Python modules and the fields that the user is implementing. Setting up the RPi is well documented. Set up a serial connection with the Arduino, and you're good to go. In my opinion, the only prior art required is the one from different fields -i.e. programming, computer vision, AI, etc. In my opinion, their state of the art is capable of very great achievements.

To conclude this cascade of thoughts, I'd just like to say that the RPi enables a superior level of complexity to robots in an affordable, documented, and easy way. The complexity stems from the ends for which the user will use the RPi. 

PS- I hope this made sense

Yes, I agree that doing the basic things with RPi are still simple.  Perhaps not as simple, or maybe simpler, than Arduino, depending on your point of view.  In fact, simple robots doing the same types of things are showing up now.  There is one on the front page of LMR as I type.  But going to the next level, with more sophisticated behaviors, is a BIG step.

I don't think the RPi or Python, or really any other part, are the limiting factors.  They are very powerful.  A full Linux distro can make some wonderful robots.  But there simply isn't the huge number of examples to build on like there are with simpler boards like Arduino.  And it is one thing to add a couple servos and ultrasonic sensors, yet another to add large motors, stereo cameras, touch sensors, etc that are needed to really interact with the environment.  And of course someone has to write code to make it all work, together, as one robot.  I don't think we will see a Start Here robot like that anytime soon.  The RPi is a big step in the right direction, though.

Thanks for posting this and getting me (and others) thinking about it.

Always enjoy hearing your opinion bdk6. Your thoughts are clear and your knowledge deep I don't think I can add anything else to the original question. There is one thing though I am a bit puzzled about at the end of your post. The mit,c++ and arduino connection, I just can't get that. I thought it was the Italians Massimo Banzi and co.  that created the arduino.

And I almost forgot.  Thank you for the nice comments.  It is good to hear that my ramblings occassionally make sense.