Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at
Getting Started in Robotics (and blog-tagged)

Since I've been tagged a couple of times (thanks Jean-Paul Boodhoo and Mike Nichols), I'll start off quickly with a few things you don't know but have been absolutely dying to know about me:

  1. Back in the day (the pre-and-during punch card days), both of my parents were programmers.
  2. I grew up on a beef farm in Fayetteville, Ohio which my parents still run.  My father's planning on selling some of the cattle to grow grapes...when I grow up, I'm going to grow grapes, too.
  3. I spent six years in the Air National Guard and received my honorable discharge in 2005 as a Captain.  In fact, I (probably) wouldn't be programming if it weren't for the Air Force...they offered me a hefty ROTC scholarship if I would change my major from Mechanical Engineering to Computer Science just two weeks before I was to start school...I'll let you guess what I chose.
  4. I almost switched to marine biology while I was living in San Fransisco and getting completely burned out writing Active Server Pages.  Once .NET was released and I heard of something called "OOP," I've never questioned my career path again.
  5. I'm a singularitarian and look forward to downloading my mind to a robot.  In the coming years, I hope to return to school to pursue a PhD in robotics AI.

Getting Started in Robotics 

On that note, there are most likely others looking forward to the future of robotics and perhaps even wanting to take a shot at building/programming one.  Robotics has certainly gotten a lot of press lately, and, even better, has come along with a number of hardware choices allowing many - specifically those not funded by university grants - to get into the game.  The following is an approach that has worked for me to get into programming robotics:

  1. Read An Introduction to AI Robotics by Robin Murphy.  This book gives a terrific introduction to the fundamental challenges within robotics, general algorithmic approaches, and an overview of various AI architectures including hierarchal, reactive (behavior-based) and hybrid.  This book is more theory than practice but serves as a perfect starting point to the field.  It's an easy and enjoyable read.
  2. In conjunction with reading Robot Programming: A Practical Guide to Behavior-Based Robotics, get Lego Mindstorm NXT to get into behavior-based robotics and to get a feel for building your own robots.  Lego has done a superb job of delivering an intuitive IDE for programming behavior-based robotics with a simple drag-and-drop interface.  To take it a bit further, you can control your Lego robot, via Bluetooth, with Microsoft Robotics Studio.  With this, you can take full control of your Lego robots with C# or any other .NET language.  (If you're not interested in developing mobile robotics, steps three and four can be skipped.)
  3. After getting into robot-programming basics, get iRobot Create (and here) so you can experiment with more advanced algorithms and a lot more sensors - 32 to be exact.  iRobot Create provides a solid and inexpensive starting point for getting into mobile robotics.  For an almost exhaustive introduction to the challenges of mobile robotics, and concrete algorithms for implementing your own solutions, read Probabilistic Robotics.  This book is absolutely essential for implementing the latest techniques for mobile robot navigation.  This text is a huge leap from the last two books mentioned and almost reads more like a grad-school book on statistics rather than programming; but it also provides enough meat, algorithmically speaking, to enable you to develop highly sophisticated software.  It's a daunting read, so be prepared!  Just as important, this book gives you the proper vocabulary to mine Google for example implementations and bleeding edge techniques.  A couple Googled examples include SLAM for Dummies and, taking it just a wee bit further, using Rao-Blackwellised particle filtering for dynamic Bayesian networks, in conjunction with Scale Invariant Feature Transform implementations, to implement your own vision-based SLAM system.  (How's that for buzz-word mania...even if you don't program one, it certainly expands your Scrabble options.)
  4. If you've pushed iRobot Create to its limits, it's probably time to upgrade its sensor platform.  A low cost "next step" is to extend this mobile platform with additional sonar sensors such as the SensComp Instrument Package and related multiplexer, if you're looking to add a few.  With the addition of these sensors, there's little within Probabilistic Robotics that you will not be able to do.  If your budget allows (i.e. you have a few grand sitting around collecting dust), you can greatly improve your research base by augmenting your mobile robot platform with a SICK LMS 200 laser rangefinder which was used by Stanford to win the 2006 DARPA Grand Challenge.  The SICK LMS 200 seems ubiquitous among serious researchers in mobile robotics.  (If anyone knows where I can get my hands on one for part-time use, please let me know!)
  5. Although mobile robotics is exciting and challenging, it's only one aspect of programming robotics.  Another substantial area of robotics is manipulating the world around it.  To do this at home, you can mount a robotic arm onto the iRobot Create to take your robotic research to a whole new level.  (You may also use the arm by itself if you're not interested in the "mobile" aspect of robotics.)  Affordable, yet still advanced, options include LynxMotion's Lynx 5 ($275) & Lynx 6 ($388) which also integrate with Microsoft Robotics Studio.  To get a bit more lifting power, but at a bit more cost, you should consider CrustCrawler's SG5-UT ($499) & SG6-UT ($549) robotic arms.  CrustCrawler's arms also include mounting areas for cameras and other equipment.  You can find videos on the web of people using these arms to perform basic actions (WMV) and even play tic-tac-toe (YouTube).
  6. After playing around a bit with the mobile platform and/or robotic arm, you'll want to begin doing something more interesting.  ("More" here is a relative term.)  To get to this next level, you'll need a good primer on artificial intelligence.  The book Artificial Intelligence: A Modern Approach is the de facto starting point to get an overview of all fields of AI.  This book is much simpler than Probabilistic Robotics but still provides enough content to develop working solutions.  Topics include game theory (so you can get that arm to play connect four) and Bayesian networks, which are extensively used within probabilistic robotics.  This book also provides a spring-board for pursuing specific areas of AI research.  (Reading this also helps with the other areas of robotics already mentioned, so it's an appropriate read at any time.)

The above provides a good place to start for getting into the field of programming robotics and provides enough challenges for years worth of development research.  After getting through a couple of the mentioned texts, you'll be armed with the knowledge to develop your own robotic solutions and will know what to do to pursue further specialization.  Robotics is a very exciting field of programming; and tools such as Lego Mindstorm NXT, Microsoft Robotics Studio, iRobot Create and inexpensive robotic arms are allowing many more of us to get in on the fun.


PS - If you're looking for results of the third refactoring challenge, they're coming within the next day or two!

Posted 01-16-2007 1:22 PM by Billy McCafferty
Filed under:



Alex wrote re: Getting Started in Robotics (and blog-tagged)
on 01-17-2007 10:23 AM

Excellent article!! The iRobot Create look like it is going to be one slick device that is going to really accelerate the Robotics field. Thanks for the book recommendations:) Now I know what I'm going to be spending my free time on this year.

Being a .NET programmer and all, I'm surprised you never mentioned Phidgets (check out Trossen Robotics). They have an entire line of devices that simplify the life of a PC-based robotics developer. The reason I mention these is because they can all be controlled via USB through a .NET API (including a MSRS Web Service).

Billy McCafferty wrote re: Getting Started in Robotics (and blog-tagged)
on 01-17-2007 12:33 PM

The Phidget Interface Kits look very promising...thanks for pointing me that way.  For others, here's a good overview of Phidget support for MSRS that Alex refers to:

I hope MSRS, or something similar, catches on.  Unfortunately (for me), the robotics world is so entrenched in C/C++.  It'll be interesting to see if C# gains momentum within commercial robotics; IMO, with the realease of C# 3.0, it's truly a top-class language well suited for AI and robotics.

Alex wrote re: Getting Started in Robotics (and blog-tagged)
on 01-17-2007 1:35 PM

Yes, I know what you mean about the robotics world revolving around the lower level languages. My company is working hard to bring robotics into the new age and take the processing off of the microcontroller level and onto the devices where they belong, CPU's. Robotics is soon to be a very processing intensive field and the microcontrollers will no longer be able to hand the computing that is needed. Interesting article about this in Robot Magazine. Microsoft recognized this problem and viola, we have MSRS!. We are currently developing a robotics system built entirely in .NET (I'm using C# right now) that we hope will help streamline many of the difficult tasks of robotics development and hope to plug it into MSRS:

I'm really interested in seeing where C# 3.0 takes us as well. I can't wait to start diving into it:) With the introduction of Generics in .NET 2.0, we've already been able to do some incredible things in robotics that previously was not possible. I can only imagine what levels we can travel to with things such as implicitly typed variables!

Unopopiehyponge wrote re: Getting Started in Robotics (and blog-tagged)
on 06-01-2007 12:43 AM

I've just been sitting around doing nothing. I've basically been doing nothing. I've just been letting everything wash over me recently. I haven't been up to anything lately, but it's not important. I can't be bothered with anything lately. Today was a complete loss.

[url=]order effexor[/url]

transparent bikini wrote re: Getting Started in Robotics (and blog-tagged)
on 06-10-2009 3:42 PM

Help me to find transparent bikini model

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-29-2009 3:24 AM

Help me to find the,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-29-2009 6:59 AM

Best Wishes!,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-29-2009 10:35 AM

I like it so much,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-29-2009 2:12 PM

Give somebody the  to a site about the,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-29-2009 5:40 PM

Excellent site. It was pleasant to me.,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-29-2009 8:58 PM

It is a very good thing,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-30-2009 12:20 AM

Help me to find the,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-30-2009 3:40 AM

I have the same.,

name wrote re: Getting Started in Robotics (and blog-tagged)
on 07-30-2009 7:05 AM

Where it is possible to buy the,

verne troyer sex tape here wrote re: Getting Started in Robotics (and blog-tagged)
on 05-05-2010 10:47 PM

I bookmarked this guestbook., Buy verne troyer sex tape,  616559,

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Google Reader or Homepage Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of
Red-Gate Tools For SQL and .NET


SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
NHibernate Profiler
Balsamiq Mockups
JetBrains - ReSharper
Web Sequence Diagrams
Ducksboard<-- NEW Friend!


Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers


Community Server (Commercial Edition)