Introduction to ROS
Table of Contents
1 What is ROS?
ROS stands for the Robot Operating System, and it is a "meta-OS" that exists on top of an actual operating system. It provides low-level device control, inter-process communication, package/dependency management, and standard packages/tools that are useful in robotics. One of its primary goals is to support code reuse in robotics R&D. It does this by allowing people to write standalone, language-agnostic executables that implement a particular task. Then groups of these executables can be collectively started to define the behavior of the whole system.
Figure 1: Illustration of the core pieces of ROS (from here).
ROS is not unique in what it provides. The features and utilities that ROS provides are things that many, maybe even most, robotics projects require. What makes ROS unique is that all of these things are brought together into a single ecosystem.
1.1 ROS history
Starting at Stanford in the mid-2000s, many projects were running that created software tools specifically aimed at robotics. In 2007, Willow Garage stepped in and began working with and expanding on switchyard, a program developed in the Personal Robotics Lab as part of the STAIR project. From 2008-2013, Willow Garage and researchers at more than 20 universities combined to develop ROS. In 2013, Willow Garage was absorbed into Suitable Technologies, and the Open-Source Robotics Foundation (now called Open Robotics) took over ROS development.
1.2 ROS usage
Getting exact metrics on ROS usage is somewhat difficult, but it is certainly widely used in modern robotics (both in industry and academia). Here are some known metrics (as of September 2017):
- The ROS wiki receives nearly 2,000,000 page views per month
- The ROS answers site receives nearly 600,000 page views per month
- There are 14 million total downloads from the ROS package servers each month
- 7000 people contribute to the wiki, and 18,000 people are on the answers site
- There are more than 4000 packages hosted on the ROS package servers
- There are 11 package mirrors hosted at universities around the world
- More than 50 commercial-grade robots listed on wiki running ROS
- At least 30 universities teaching ROS courses (probably a much higher number)
- At ICRA 2015, there were 930 accepted papers, and 100 of them explicitly used ROS
- At the DRC finals in June, 2015, 18 of the 23 teams used ROS, and 14 of the teams used Gazebo (the main ROS simulation tool).
The usage of ROS in industrial applications is definitely on the rise. Several years ago, the ROS-Industrial program was started. The goal was to form a group of experts from industry and academia that could all work together to solve common problems in industrial robotics. ROS would facilitate rapid development and easy resource-sharing between all members of the group. Today, the American Consortium has more than 50 members.
2 Useful Links
2.1 ROS history, high-level concepts, and tools
- ROS History This is a page on the official ROS website describing the history and timeline of ROS
- ROS Introduction This is probably the most useful link to get an idea of what ROS really is
- Willow Garage Wikipedia Provides history of Willow Garage and how ROS came to be
- Core ROS components This is a list of core tools and utilities that are part of ROS
- ROS integration with other libraries ROS is tightly coupled with several important libraries/packages commonly used in robotics; some of them are managed by OSRF and some were Willow Garage spin-offs or acquisitions
- Commonly used ROS tools Page on the ROS wiki listing commonly used ROS tools
- Robots List of robots relying on ROS (there are certainly many others)
- ROS Courses University courses, conference workshops, summer schools, etc. that teach/use ROS
- Check out the ROS Community Metrics page for reports on numbers of downloads, packages, page visits, etc. This is a good way to get a sense of how many people are using ROS.
- ROS Users of the World Map This map is managed with YAML files in this Git repository
- A Gentle Introduction to ROS One of the recommended course textbook
- Programming Robots with ROS: A Practical Introduction to the Robot Operating System The other recommended text book. Here is the associated example code.
2.2 Videos
- ROS 3 years Three year video summary of projects done using ROS
- ROS 5 years Five year video summary of projects done using ROS
- ROS 8 years Eight year video summary of projects done using ROS (a longer version is also available)
- Quadrotor video From Vijay Kumar's lab at UPenn; has over 2.5 million views
- Quadrotor swarm Also from Kumar's lab; over 8 million views
- Atlas Robot Introduction to the humanoid robot used in the DRC
- ROS-I 3 year montage Projects done by the ROS Industrial consortium during their first 3 years
- ROS-I 5 year montage
- NSF profile of recent work in Todd Murphey's lab All experiments in this video are running ROS
2.3 Robots and hardware
- Rethink Robotics' Baxter Research Robot We have two of these
- Rethink Robotics' Sawyer We have one of these, and could possibly borrow another
- Clearpath Robotics Jackal This is a small, outdoor AGV. We have one of these outfitted with a Velodyne Puck LITE LiDAR sensor, GPS, an IMU, and a machine vision camera
- Phantom Omni Haptic device We have one of these
- TurtleBot 2 We have one of these
- DARwIn-OP We have access to several of these
- Kinect/ASUS Xtion Pro Live We have easy access to several of each of these devices. We also have many Kinect2 devices.
- RPi/Odroid/BBB/Jetson A very common use case for ROS is installing it on small embedded computers that allow access to lower-level peripherals. We have some of these, and could certainly buy others.