The Robot Operating System (ROS) 101

Ever heard about the Robot Operating System? It’s a BSD-licensed open-source system for controlling robots, from a variety of hardware. Over the years we’ve shared quite a few projects that run ROS, but nothing on how to actually use ROS. Lucky for us, a robotics company called Clearpath Robotics — who use ROS for everything — have decided to graciously share some tips and tricks on how to get started with ROS 101: An Introduction to the Robot Operating System.

The beauty of the ROS system is that it is made up of a series of independent nodes which communicate with each other using a publish/subscribe messaging model. This means the hardware doesn’t matter. You can use different computers, even different architectures. The example [Ilia Baranov] gives is using an Arduino to publish the messages, a laptop subscribed to them, and even an Android phone used to drive the motors — talk about flexibility!

It appears they will be doing a whole series of these 101 posts, so check it out — they’ve already released numéro 2, ROS 101: A Practical Example. It even includes a ready to go Ubuntu disc image with ROS pre-installed to mess around with on VMWare Player!

And to get you inspired for using ROS, check out this Android controlled robot using it! Or how about a ridiculous wheel-chair-turned-creepy-face-tracking-robot?

15 thoughts on “The Robot Operating System (ROS) 101

  1. “is a BSD-licensed system for controlling robotic components from a PC.” So it cant run on “anything” and it must be a PC. As long as it does not need a GUI at all loaded that is fine. You can put a RasPi as the brain and then use duinos to do the rest. And honestly that is what I would really like to see as a Robot OS. a easy to replicate setup that schools and newbies can use. being able to use “anything” is a giant problem to newbies because “anything” never communicates the same way. You cant plug motors directly into a cellphone, and teaching a newbie how to is a lot harder than telling them, “no dont do that with a cellphone, use an arduino with a motor shield.”

    ROS needs to build a base “start here” model that even a person without any electronics ability could follow. Because I have no idea how to get a old Galaxy nexus to drive 20 amp motors directly, or talk via the I2C bus to the main control system. Because if they are using wireless, then it’s already an epic fail. Wired comms for ALL parts of the robot, wireless is for C&C only.

    1. Are you volunteering to write such information down? One of the biggest problems with ANY open source endeavor is finding knowledgeable people WILLING to document the process(es).

      1. In my own defense, I’m willing to write documentation (in my copious free time B^) but I’m not knowledgeable in specifics. Alas, if I only had the time to sit with a developer and learn from them the intricacies of their project, I’d do it.

    2. That’s exactly the idea!
      By slowly building up this knowledge base, and giving people a free, virtual environment to try it in, we hope to get people started with ROS as easily as possible.

      In the next few tutorials, we will feature how to interface between the virtual ROS machine, and a real world Arduino (Yep, you can run ROS code on the Arduino!)

      You will be able to read sensor values, and drive a servo from ROS!

    1. I feel your pain. I have started ROS several times but building a python codeset for the robots has always been faster and understandable for me. My most recent look into ROS is with the Clear Path TurtleBot2. The fist run failed because there really was no support in getting ROS up. It seems that they heard the cry for help and are now offering help in the form of tutorials. Lets see if this works. As we all know if you can get ROS up and running it does offer the biggest bang for the buck. The open source and available software coming out of NASA, and the Universities around the world give the amateur community access to some of the best robotic functions/packages available.

    2. I’ve made an entire framework with a central bus-master and services (nodes) all around. I made that in 3 months, for controlling my personal humanoid robot and it work’s correctly. Now I must use ROS for work and I really hate it.
      I don’t understand how one can say that it work’s everywhere… It works never and nowhere form me. Just thing for losing time, spending money and break robots…

  2. So Ive been using the “turtlebot” on ROS at the moment.

    Ive written some software for generating python scripts to control the direction and movement of the robot

    eg: drive forward 5m, turn 90degrees etc…

    Its a good way to get to know ros… if not a bit pricey!

  3. You should add the following statement, as the previous system named as “ROS” was a state of the art unix-like system used in the communist block until 1989.
    ROS, or the Romanian Operating System, was used in the PDP clones and IRIS50 clones made by ICE Felix romanian company back in the 70s and the 80s. The mainframes were Felix C and Felix M series (IRIS50 clones) and CORAL (PDP11 clone).

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.