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.
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.
Links
- ROS homepage
- ROS Tutorials - While we handpicked some tutorials below, here is a long list of other tutorials of interest (on the ROS Wiki), nicely organized by difficulty
- rospy Tutorials - another summary of ROS tutorials for Python (rospy). Great material to get a feeling of what is where
- Generation Robots - ROS Overview - a 'management overview' of the system. If you really don't know where to start, start here
- All About Circuits - Introduction to ROS - a great overview for beginners in ROS
- ERLE Robotics - Introduction to ROS - a detailed ROS guide, targeted at ERLE models
- Robotic Systems Lab Video tutorials - Part 1 and Part 2. Worth watching
- A Dummy's Guide to Debugging ROS - great debugging overview by real practitioners
Our ROS Articles
- Install ROS on Raspberry Pi - get started on the PI. You might want to first read how to install Ubuntu Mate
- Install ROS on Windows 10 - Uses WSL - Windows Subsystem for Linux
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.
- Installing ROS Kinetic on the Raspberry Pi - the official (and thorough) guide from the ROS Wiki
- Duckietown - an MIT autonomous robot with Raspberry Pi and ROS onboard. We love this project!
- There is a New Duckietown project in development
ROS Tools
- Robot Web Tools - Overview of Web based solutions related to ROS
- 10 Useful ROS Tools - good overview of essential tools
- v-rep and Gazebo comparison
Language Specific
- An Introduction to Robot Operating System: The Ultimate Robot Application Framework - A Python based walkthrough. Great article
- How to structure a Python-based ROS Package
Industry overviews
- How to start with self-driving cars using ROS - if you want to start with autonomous vehicles, read-up here
Images
Here are ready-made images for ROS, if you don't want to roll your own.
- Raspbian Stretch with ROS and OpenCV - for the Raspberry Pi, by ROSbots.
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.
- 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