Raspberry Pi

ROS

Robot enthusiasts - don't search further! While having a big learning curve, the Robot Operating System (ROS) is a dream come true for building your sophisticated robot solution.

ROS

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source. [ROS]

This page is the landing page of our experiments with the systems and essential links. Bundled here are also links of interest related to ROS. We chose the system not only for the amazing quantity of solutions and the wide range of tools and applications, but also because the tooling is extremely well documented, has good tutorials available and of course that it is a standard in robotics. Needless to say, it runs well on Raspberry Pi! It's hard to build your own and have the thousands of coding hours behind you...

Before we dig in into specific link categories, you might want to get a feel of what systems are available (not only ROS). Check this overview: 9 open source robotics projects.

Our ROS Articles

Raspberry Pi

Here is the space for Raspberry Pi specific solutions. Please note that ROS solutions are most easy to build on Ubuntu Mate if using your Pi. See our Ubuntu Mate Installation Guide to learn more.

Duckietown

ROS Tools

Language Specific

Industry overviews

Images

Here are ready-made images for ROS, if you don't want to roll your own.

Tips

We have learned a few things during our experiments and would like to share them with you. This section lists some 'gotchas' we encounered. Check it out to speed up your development.

  • You know we love XRDP for RDP access to our Raspberry Pi and / or other Linux systems. Well, take care when using ROS: many graphical tools are in conflict with XRDP (X10 problems)
  • All ROS versions are using Python 2 out of the box. It is possible to use Python 3 for some time, but you need to build ROS from source. Be aware - using Python 3 is still finicky (as of this writing)
  • You can run ROS on any version of Ubuntu (or Linux at that). But ROS distributions are quite picky with supported Ubuntu releases, so if you don't want to build ROS from source, check first which release is compatible with which Ubuntu version. It will save you a lot of time. This link shows ROS distributions and you can dig in to find which Ubuntu to use.
  • It is possible to install as many ROS releases as you wish to have on one machine. From the installation documentation, just notice the typically last step you do - sourcing the right version of ROS for your bash sessions. If you have more than one, you need to watch which version is sourced, or simply do it manually. For example, selecting 'hydro' or 'fuerte' boils down to running one or the other command below (when you open bash):
source /opt/ros/hydro/setup.bash
source /opt/ros/fuerte/setup.bash
  • So many terminal windows to handle! After just a few experiments with ROS, you will know that something has to be done with the number of open terminals. It can become a nightmare. Every ROS tutorial suggests the author's favourite tool as the only way out of terminal madness, so we'll do the same. What we use is something called Byobu. Check it out! If it suits your needs, you might want to spend 30 minutes learning the shortcuts and features. It will pay off big time. Just in case the master page is not enough, here is a nice Byobu tutorial.

byobu

  • Handling the network: there is some reading to be done when you want to handle a network of ROS devices. A typical setup would be an Ubuntu machine running as the master ('roscore') and several Pi devices publishing data or consuming data. In such scenarios, debugging basically boils down to checking if your environment variables are set correctly. If not, try setting the following:
export ROS_MASTER_URI=some_IP:11311 # the address of the server (roscore)
export ROS_IP=some_IP               # your own IP address