Jumping into ROS – The prerequisites


Really you won’t look back if you jump into the world of open source robotics using ROS. The main advantage is that you will not end up re-inventing the wheel.  While ROS is used in many research laboratories and universities, you don’t have to be an academic to use it. The installation instructions of ROS are here and they are pretty straightforward. Once installed and set up, it is time to rock. The basic tutorials about the ROS filesystem,terminology, etc will do very good.

 I would say as a general guide, you will want to have some background in the following.

Linux: You should be aware of how the Linux operating system is put together and how to navigate it’s file system. You should also be able to install and uninstall packages, as well as follow tutorials written for Linux software.

Command Line: You will want to have a basic fluency in using the Linux command line. Much of this can be learned as you go, but without some basic knowledge, you will struggle to get to the higher-level concepts that ROS has to offer.

Python and C Programming: You don’t have to have a degree in computer science to dabble in programming, and I would say that most hobbyists (or undergraduates) have the skill set necessary to create their own ROS nodes.

If you have some basic working knowledge of these things, then you should have no trouble using ROS. Some of the higher level concepts are more mathematically rigorous (or rely more heavily on computer science and control systems knowledge), but most of these things can be learned from Wikipedia or other sources of information on the web.

In addition to these, it would be better if you have some robotic platform to run. Depending on what you want to try with ROS, you can start with a relatively basic platform. I think that the main requirements for this platform (in order to be able to fully appreciate ROS) would be:

Locomotion: Some way of moving around in an environment. As Tully suggests, an iRobot Create is a good approach. You may also roll-your-own. Generally, if you design your own platform, you will have to write your own nodes to interface with the motors, rather than relying on previously-written stacks. A suggestion, though, encoders (or some sort of odometry) are more or less a must for navigation applications. If you are designing your own platform, consider using an arduino to control low level functionalities like motor control, servos, sensors encoders etc. It is because there are ROS packages meant to run on arduino and they can make your life a lot easier.

Computation: A (somewhat portable) computer that is capable of running ROS. There are plenty of solutions for this from a single board computer up to a full motherboard (or servers like the PR2!). Computation power is typically determined by how much you want to do. You can play with some of the ROS nodes on your computer to get a feel for what size computer you will need (and then buy bigger!)

Sensing: In order to do navigation and SLAM, you will need some way to see your environment around you. The Kinect has really revolutionized this part, mainly because of the price point. Other sensors are available, such as laser range finders (not cheap), or webcam inputs.

For basic navigation, mapping, and SLAM work, this should be enough to whet your appetite. As you move to more advanced concepts (such as arm motion planning), you may need more advanced hardware, but this will cover a wide variety of topics.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s