Chapter 1. Getting Started with ROS Robotics Application Development

Robotics is one of the upcoming technologies that can change the world. Robots can replace people in many ways, and we are all afraid of them stealing our jobs. One thing is for sure: robotics will be one of the influential technologies in the future. When a new technology gains momentum, the opportunities in that field also increase. This means that robotics and automation can generate lot of job opportunities in the future.

One of the main areas in robotics that can provide mass job opportunities is robotics software development. As we all know, software gives life to a robot or any machine. We can expand a robot's capabilities through software. If a robot exists, its capabilities such as control, sensing, and intelligence are realized using software.

Robotics software involves a combination of related technologies, such as computer vision, artificial intelligence, and control theory. In short, developing software for a robot is not a simple task; it may require expertise in many fields.

If you're looking for mobile application development in iOS or Android, there is a software development kit (SDK) available to build applications in it, but what about robots? Is there any generic software framework available? Yes. One of the more popular robotics software frameworks is called Robot Operating System (ROS).

In this chapter, we will take a look at an abstract concept of ROS and how to install it. The entire book is dedicated to ROS projects, so this chapter will be a kick-start guide for those projects.

The following topics are going to be covered in this chapter:

  • Getting started with ROS
  • Why we use ROS
  • Basic concepts of ROS
  • Robot, sensors, and actuators supporting ROS
  • Installing ROS
  • ROS in industries and research

So let's get started discussing ROS.

Getting started with ROS

ROS is an open source, flexible software framework for programming robots. ROS provides a hardware abstraction layer, in which developers can build robotics applications without worrying about the underlying hardware. ROS also provides different software tools to visualize and debug robot data. The core of the ROS framework is a message-passing middleware in which processes can communicate and exchange data with each other even when running from different machines. ROS message passing can be synchronous or asynchronous.

Software in ROS is organized as packages, and it offers good modularity and reusability. Using the ROS message-passing middleware and hardware abstraction layer, developers can create tons of robotic capabilities, such as mapping and navigation (in mobile robots). Almost all capabilities in ROS will be robot agnostic so that all kinds of robots can use it. New robots can directly use this capability package without modifying any code inside the package.

ROS has widespread collaborations in universities, and lots of developers contribute to it. We can say that ROS is a community-driven project supported by developers worldwide. The active developer ecosystem distinguishes ROS from other robotic frameworks.

In short, ROS is the combination of Plumbing (or communication), Tools, Capabilities and Ecosystem. These capabilities are demonstrated in the following figure:

Getting started with ROS

Figure 1: The ROS equation

The ROS project was started in 2007 in Stanford University under the name Switchyard. Later on, in 2008, the development was undertaken by a robotic research start-up called Willow Garage. The major development in ROS happened in Willow Garage. In 2013, the Willow Garage researchers formed the Open Source Robotics Foundation (OSRF). ROS is actively maintained by OSRF now.

Here are links to their websites:

ROS distributions

The ROS distributions are very similar to Linux distributions, that is, a versioned set of ROS packages. Each distribution maintains a stable set of core packages up to the end of life (EOL) of the distribution.

The ROS distributions are fully compatible with Ubuntu, and most of the ROS distributions are planned according to the respective Ubuntu versions.

Given here are some of latest ROS distributions recommended for use from the ROS website (http://wiki.ros.org/Distributions):

ROS distributions

Figure 2: Latest ROS distributions

The latest ROS distribution is Kinect Kame. We will get support for this distribution up to May 2021. One of the problems with this latest ROS distribution is that most of the packages will not be available on it because it will take time to migrate them from the previous distribution. If you are looking for a stable distribution, you can go for ROS Indigo Igloo, because the distribution started in 2015, and most of the packages are available on this distribution. The ROS Jade Turtle distribution will stop being supported on May 2017, so I do not recommend you use it.

Supported operating systems

The main operating system ROS is tuned for is Ubuntu. ROS distributions are planned according to Ubuntu releases. Other than Ubuntu, it is partially supported by Ubuntu ARM, Debian, Gentoo, Mac OS X, Arch Linux, Android, Windows, and Open Embedded:

Supported operating systems

Figure 3: OSes supporting ROS

This table shows new ROS distributions and the specific versions of the supporting OSes:

ROS distribution

Supporting OSes

Kinetic Kame (LTS)

Ubuntu 16.04 (LTS) and 15.10, Debian 8, OS X (Homebrew), Gentoo, and Ubuntu ARM

Jade Turtle

Ubuntu 15.04, 14.10, and 14.04, Ubuntu ARM, OS X (Homebrew), Gentoo, Arch Linux, Android NDK, and Debian 8

Indigo Igloo (LTS)

Ubuntu 14.04 (LTS) and 13.10, Ubuntu ARM, OS X (Homebrew), Gentoo, Arch Linux, Android NDK, and Debian 7

ROS Indigo and Kinetic are long-term support (LTS) distributions, coming with the LTS version of Ubuntu. The advantage of using LTS distribution is that we will get maximum lifespan and support.

Robots and sensors supported by ROS

The ROS framework is one of the successful robotics frameworks, and universities around the globe contribute to it. Because of the active ecosystem and open source nature, ROS is being used in a majority of robots and is compatible with major robotic hardware and software. Here are some of the famous robots completely running on ROS:

Robots and sensors supported by ROS

Figure 4: Popular robots supported by ROS

The names of the robots listed in the images are Pepper (a), REEM-C (b), TurtleBot (c), Robonaut (d), Universal Robots (e).

The robots supported by ROS are listed at the following link:

http://wiki.ros.org/Robots.

The following are links to get ROS packages of robots from:

Some popular sensors supporting ROS are as follows:

Robots and sensors supported by ROS

Figure 5: Popular robot sensors supported in ROS

The names of the sensors listed in the image are Velodyne (a), ZED Camera (b), Teraranger (c), Xsens (d), Hokuyo Laser range finder (e), and Intel RealSense (f).

The list of sensors supported by ROS is available at the following link:

http://wiki.ros.org/Sensors

These are the links to the ROS wiki pages of these sensors:

Why ROS

The main intention behind building the ROS framework is to become a generic software framework for robots. Even though there was robotics research happening before ROS, most of the software was exclusive to their own robots. Their software may be open source, but it is very difficult to reuse.

Compared to existing robotic frameworks, ROS is outperforming in the following aspects:

  • Collaborative development: As we discussed, ROS is open source and free to use for industries and research. Developers can expand the functionalities of ROS by adding packages. Almost all the packages of ROS work on a hardware abstraction layer, so it can be reused easily for other robots. So if one university is good in mobile navigation and other in robotic manipulators, they can contribute that to the ROS community and other developers can reuse their packages and build new applications.
  • Language support: The ROS communication framework can be easily implemented in any modern language. It already supports popular languages such as C++, Python, and Lisp, and it has experimental libraries for Java and Lua.
  • Library integration: ROS has an interface to many third-party robotics libraries, such as Open Source Computer Vision (Open-CV), Point Cloud Library (PCL), Open-NI, Open-Rave, and Orocos. Developers can work with any of these libraries without much hassle.
  • Simulator integration: ROS also has ties to open source simulators such as Gazebo and has a good interface with proprietary simulators such as Webots and V-REP.
  • Code testing: ROS offers an inbuilt testing framework called rostest to check code quality and bugs.
  • Scalability: The ROS framework is designed to be scalable. We can perform heavy computation tasks with robots using ROS, which can either be placed on the cloud or on heterogeneous clusters.
  • Customizability: As we have discussed, ROS is completely open source and free, so one can customize this framework as per the robot's requirement. If we only want to work with the ROS messaging platform, we can remove all the other components and use only that. One can even customize ROS for a specific robot for better performance.
  • Community: ROS is a community-driven project, and it is mainly led by OSRF. The large community support is a great plus for ROS, and one can easily start robotics application development.

Given here are the URLs of libraries and simulators integrated with ROS:

Let's go through some of the basic concepts of ROS; they can help you get started with ROS projects.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.105.15