Skip to main content
Top

2019 | Book

Robot Operating System (ROS)

The Complete Reference (Volume 3)

insite
SEARCH

About this book

Building on the successful first and second volumes, this book is the third volume of the Springer book on the Robot Operating System (ROS): The Complete Reference. The Robot Operating System is evolving from year to year with a wealth of new contributed packages and enhanced capabilities. Further, the ROS is being integrated into various robots and systems and is becoming an embedded technology in emerging robotics platforms. The objective of this third volume is to provide readers with additional and comprehensive coverage of the ROS and an overview of the latest achievements, trends and packages developed with and for it. Combining tutorials, case studies, and research papers, the book consists of sixteen chapters and is divided into five parts. Part 1 presents multi-robot systems with the ROS. In Part 2, four chapters deal with the development of unmanned aerial systems and their applications. In turn, Part 3 highlights recent work related to navigation, motion planning and control. Part 4 discusses recently contributed ROS packages for security, ROS2, GPU usage, and real-time processing. Lastly, Part 5 deals with new interfaces allowing users to interact with robots. Taken together, the three volumes of this book offer a valuable reference guide for ROS users, researchers, learners and developers alike. Its breadth of coverage makes it a unique resource.

Table of Contents

Frontmatter

Multi-robot Systems

Frontmatter
A ROS-Based Framework for Simulation and Benchmarking of Multi-robot Patrolling Algorithms
Abstract
Experiments with teams of mobile robots in the physical world often represent a challenging task due to the complexity involved. One has to make sure that the robot hardware configuration, the software integration and the interaction with the environment is thoroughly tested so that the deployment of robot teams runs smoothly. This usually requires long preparation time for experiments and takes the focus away from what is essential, i.e. the cooperative task performed by the robots. In this work, we present patrolling_sim, a ROS-based framework for simulation and benchmarking of multi-robot patrolling algorithms. Making use of Stage, a multi-robot simulator, we provide tools for running, comparing, analyzing and integrating new algorithms for multi-robot patrolling. With this framework, roboticists can primarily focus on the specific challenges within robotic collaborative missions, run exhaustive tests in different scenarios and with different team sizes in a fairly realistic environment, and ultimately execute quicker experiments in the real world by mimicking the setting up of simulated experiments.
David Portugal, Luca Iocchi, Alessandro Farinelli
Multi-robot Systems, Virtual Reality and ROS: Developing a New Generation of Operator Interfaces
Abstract
This chapter describes a series of works developed in order to integrate ROS-based robots with Unity-based virtual reality interfaces. The main goal of this integration is to develop immersive monitoring and commanding interfaces, able to improve the operator’s situational awareness without increasing its workload. In order to achieve this, the available technologies and resources are analyzed and multiple ROS packages and Unity assets are applied, such as \(multimaster\_fkie\), \(rosbridge\_suite\), RosBridgeLib and SteamVR. Moreover, three applications are presented: an interface for monitoring a fleet of drones, another interface for commanding a robot manipulator and an integration of multiple ground and aerial robots. Finally, some experiences and lessons learned, useful for future developments, are reported.
Juan Jesús Roldán, Elena Peña-Tapia, David Garzón-Ramos, Jorge de León, Mario Garzón, Jaime del Cerro, Antonio Barrientos

Unmanned Aerial Systems

Frontmatter
Autonomous Exploration and Inspection Path Planning for Aerial Robots Using the Robot Operating System
Abstract
This use case chapter presents a set of algorithms for the problems of autonomous exploration, terrain monitoring and optimized inspection path planning using aerial robots. The autonomous exploration algorithms described employ a receding horizon structure to iteratively derive the action that the robot should take to optimally explore its environment when no prior map is available, with the extension to localization uncertainty–aware planning. Terrain monitoring is tackled by a finite–horizon informative planning algorithm that further respects time budget limitations. For the problem of optimized inspection with a model of the environment known a priori, an offline path planning algorithm is proposed. All methods proposed are characterized by computational efficiency and have been tested thoroughly via multiple experiments. The Robot Operating System corresponds to the common middleware for the outlined family of methods. By the end of this chapter, the reader should be able to use the open–source contributions of the algorithms presented, implement them from scratch, or modify them to further fit the needs of a particular autonomous exploration, terrain monitoring, or structural inspection mission using aerial robots. Four different open–source ROS packages (compatible with ROS Indigo, Jade and Kinetic) are released, while the repository https://​github.​com/​unr-arl/​informative-planning stands as a single point of reference for all of them.
Christos Papachristos, Mina Kamel, Marija Popović, Shehryar Khattak, Andreas Bircher, Helen Oleynikova, Tung Dang, Frank Mascarich, Kostas Alexis, Roland Siegwart
A Generic ROS Based System for Rapid Development and Testing of Algorithms for Autonomous Ground and Aerial Vehicles
Abstract
This chapter presents a Robot Operating System (ROS) framework for development and testing of autonomous control functions. The developed system offers the user significantly reduced development times over prior methods. Previously, development of a new function from theory to flight test required a range of different test systems which offered minimal integration; this would have required great effort and expense. A generic system has been developed that can operate a large range of robotic systems. By design, a developed controller can be taken from numerical simulation, through Software/Hardware in the loop simulation to flight test, with no adjustment of code required. The flexibility and power of ROS was combined with the Robotic Systems toolbox from MATLAB/Simulink, Linux embedded systems and a commercially available autopilot. This affords the user a low cost, simple, highly flexible and reconfigurable system. Furthermore, by separating experimental controllers from the autopilot at the hardware level, flight safety is maintained as manual override is available at all times, regardless of faults in any experimental systems. This chapter details the system and demonstrates the functionality with two case studies.
Pawel Ladosz, Matthew Coombes, Jean Smith, Michael Hutchinson
ROS-Based Approach for Unmanned Vehicles in Civil Applications
Abstract
Unmanned vehicle is the term that describes any platform without a human operator on-board. These vehicles can be either tele-operated remotely through a control station, or autonomously driven using on-board sensors and controllers. With the advances in micro and nano electronics, the increase in computing efficiency, and the ability to work in dull, dirty and dangerous environments, modern unmanned vehicles aim at higher levels of autonomy. This is through development of accurate control systems and a high-level environment understanding, in order to perform complex tasks. The main part of autonomous vehicles is the navigation system, along with the supporting subsystems. The navigation system utilizes information from various sensors, in order to estimate the position and orientation of the vehicle, sense the surrounding environment and perform the correct maneuver to achieve its assigned task. Accordingly, this chapter presents a ROS-based architecture for two different unmanned vehicles to be used in civil applications, which are constrained by Size, Weight and Power (SWap). This architecture includes the algorithms for control, localization, perception, planning, communication and cooperation tasks. In addition, in order to validate the robustness of the presented vehicles, different experiments have been carried out in real world applications with two different types of Unmanned Aerial Vehicle (UAV). The experiments cover applications in various fields; for instance, search and rescue missions, environment exploration, transportation and inspection. The obtained results demonstrates the effectiveness of the proposed architecture and validates its functionality on actual platforms.
Abdulla Al-Kaff, Francisco Miguel Moreno, Ahmed Hussein
A Quadcopter and Mobile Robot Cooperative Task Using Visual Tags Based on Augmented Reality ROS Package
Abstract
The objective of this chapter is to provide a simple tutorial on how to use a virtual reality tag (VR-TAG) tool and a Robot Operating System–compatible simulated multirotor vehicle to achieve the position of a small mobile ground robot, making possible the creation of a cooperative schema among them. The great novelty of the proposed architecture is that the ground robots do not have any onboard odometry, and all the position information is provided by the multirotor using a camera and the VR-TAGs to evaluate it. This kind of architecture poses value for real-world cooperative multiple robot research, in which the cost of constructing a large number of small robots makes practical applications inviable. In such cases, simple robots with minimal control hardware and sensors are a good alternative, and offboard positioning and control of these robots can be effective.
Alvaro Rogério Cantieri, Ronnier F. Rohrich, André Schneider de Oliveira, Marco Aurélio Wehrmeister, João Alberto Fabro, Marlon de Oliveira Vaz, Magnus Eduardo Goulart, Guilherme Hideki

Navigation, Motion Planning and Control

Frontmatter
EXOTica: An Extensible Optimization Toolset for Prototyping and Benchmarking Motion Planning and Control
Abstract
In this research chapter, we will present a software toolbox called EXOTica that is aimed at rapidly prototyping and benchmarking algorithms for motion synthesis. We will first introduce the framework and describe the components that make it possible to easily define motion planning problems and implement algorithms that solve them. We will walk you through the existing problem definitions and solvers that we used in our research, and provide you with a starting point for developing your own motion planning solutions. The modular architecture of EXOTica makes it easy to extend and apply to unique problems in research and in industry. Furthermore, it allows us to run extensive benchmarks and create comparisons to support case studies and to generate results for scientific publications. We demonstrate the research done using EXOTica on benchmarking sampling-based motion planning algorithms, using alternate state representations, and integration of EXOTica into a shared autonomy system. EXOTica is an open-source project implemented within ROS and it is continuously integrated and tested with ROS Indigo and Kinetic. The source code is available at https://​github.​com/​ipab-slmc/​exotica and the documentation including tutorials, download and installation instructions are available at https://​ipab-slmc.​github.​io/​exotica.
Vladimir Ivan, Yiming Yang, Wolfgang Merkt, Michael P. Camilleri, Sethu Vijayakumar
Online Trajectory Optimization and Navigation in Dynamic Environments in ROS
Abstract
This tutorial chapter provides a comprehensive step-by-step guide on the setup of the navigation stack and the teb_local_planner package for mobile robot navigation in dynamic environments. The teb_local_planner explicitly considers dynamic obstacles and their predicted motions to plan an optimal collision-free trajectory. The chapter introduces a novel plugin to the costmap_converter ROS package which supports the detection and motion estimation of moving objects from the local costmap. This tutorial covers the theoretical foundations of the obstacle detection and trajectory optimization in dynamic scenarios. The presentation is designated for ROS Kinetic and Lunar and both packages will be maintained in future ROS distributions.
Franz Albers, Christoph Rösmann, Frank Hoffmann, Torsten Bertram
A Backstepping Non-smooth Controller for ROS-Based Differential-Drive Mobile Robots
Abstract
This chapter presents a non-linear controller for a mobile robot based on feedback linearization, non-smooth feedback and backstepping. The stability and convergence of the controller to the reference pose is proved by using the Lyapunov theory and the Barbalat Lemma. The controller design is based on a robot model considering its kinematics and dynamics, and hence the control inputs are the torques applied on the wheels. Contrariwise to most available implementation of controllers in the Robot Operating System, which implements a set of single input, single output controllers using the proportional \(+\) integral \(+\) derivative control law, here a truly multi-input, multi-output non-linear controller is considered. Results showing the effectiveness of the proposed controller for the setting point and the trajectory tracking problems were obtained by using the Gazebo robot simulator and Rviz.
Walter Fetter Lages
University Rover Challenge: Tutorials and Team Survey
Abstract
In this tutorial chapter we present a guide to building a robot through 11 tutorials. We prescribe simple software solutions to build a wheeled robot and manipulator arm that can autonomously drive and be remotely controlled. These tutorials are what worked for several teams at the University Rover Challenge 2017 (URC). Certain tutorials provide a quick start guide to using existing Robot Operating System (ROS) tools. Others are new contributions, or explain challenging topics such as wireless communication and robot administration. We also present the results of an original survey of 8 competing teams to gather information about trends in URC’s community, which consists of hundreds of university students on over 80 teams. Additional topics include satellite mapping of robot location (mapviz), GPS integration (original code) to autonomous navigation (move_base), and more. We hope to promote collaboration and code reuse.
Daniel Snider, Matthew Mirvish, Michal Barcis, Vatan Aksoy Tezer

Contributed ROS Packages

Frontmatter
SROS1: Using and Developing Secure ROS1 Systems
Abstract
SROS1 is a proposed addition to the ROS1 API and ecosystem to support modern cryptography and security measures. An overview of current progress will be presented, explaining each major advancement, including: over-the-wire cryptography for all data transport, namespaced access control enforcing graph policies/restrictions, and finally process profiles using Linux Security Modules to harden a node’s resource access. This chapter not only seeks to raise community awareness of the vulnerabilities in ROS1, but to provide clear instruction along designed patterns of development for using proposed solutions provided by SROS1 to advance the state of security for open source robotics subsystems.
Ruffin White, Gianluca Caiazza, Henrik Christensen, Agostino Cortesi
GPU and ROS the Use of General Parallel Processing Architecture for Robot Perception
Abstract
This chapter presents a full tutorial on how to get started on performing parallel processing with ROS. The chapter starts with a guide on how to install the complete version of ROS on the Nvidia development boards Tegra K1, Tegra X1 and Tegra X2. The tutorial includes a guide on how to update the development boards with the latest OS, and configuring CUDA, ROS and OpenCV4Tegra so that they are ready to perform the sample packages included in this chapter. The chapter follows with a description on how to install CUDA in a computer with Ubuntu operating system. After that, the integration between ROS and CUDA is covered, with many examples on how to create packages and perform parallel processing over several of the most used ROS message types. The codes and examples presented on this chapter are available in GitHub and can be found under the repository in https://​github.​com/​air-lasca/​ros-cuda.
Nicolas Dalmedico, Marco Antônio Simões Teixeira, Higor Santos Barbosa, André Schneider de Oliveira, Lucia Valeria Ramos de Arruda, Flavio Neves Jr
Connecting ROS and FIWARE: Concepts and Tutorial
Abstract
Nowadays, the Cloud technology permeates our daily life, spread in various services and applications used by modern instruments, such as smartphones, computer, and IoT devices. Besides, the robotic field represents one of the future emerging markets. Nevertheless, these two distinct worlds seem to be very far from each other, due to the lack of common strategies and standards. The aim of this tutorial chapter is to provide a walkthrough to build a basic Cloud Robotics application using ROS and the FIWARE Cloud framework. At the beginning, the chapter offers step-by-step instructions to create and manage an Orion Context Broker running on a virtual machine. Then, the firos package is used to integrate the ROS topic communication using publishers and subscribers, providing a clear example. Finally, a more concrete use case is detailed, developing a Cloud Robotics application to control a ROS-based robot through the FIWARE framework. The code of the present tutorial is available at https://​github.​com/​Raffa87/​ROS_​FIWARE_​Tutorial, tested using ROS Indigo.
Raffaele Limosani, Alessandro Manzi, Laura Fiorini, Paolo Dario, Filippo Cavallo
Enabling Real-Time Processing for ROS2 Embedded Systems
Abstract
Our research aims to integrate FreeRTPS, a portable and minimalist RTPS (Real-Time Publisher-Subscriber), an implementation that provides an option for embedded ROS2 (Robot Operating System), applications where RAM(Random Access Memory)/ROM(Read-Only Memory) size is a critical factor, with FreeRTOS, a free real-time operating system for microcontrollers and small microprocessors. As a result, we have a portable system that enables sensing and the possibilities of real-time processing, while communicating with ROS2 nodes in small and low-cost devices. Even having tools to implement internal real-time processing the system not ensure that the communication with other nodes will have real time constraints, once that we look for processing and not communication real-time. Real-time processing is an important component especially in Robotics where many applications require some data processing as it comes in, what means that they need processing with time requirements. The chapter shows some concepts, how the system was developed, how to implement it on the STM32F4 microcontroller and some tests to show its capabilities. The main system was developed under Ubuntu 16.04, with a STM32F4 microcontroller, and the portability test was made under Microsoft Windows 10, with a Texas Instruments LM3S Stellaris board. All presented components are published on the wiki ROS link: http://​wiki.​ros.​org/​FreeRTPS%2BFreeRTOS.
Lucas da Silva Medeiros, Ricardo Emerson Julio, Rodrigo Maximiano Antunes de Almeida, Guilherme Sousa Bastos

Interfaces for Interaction with Robots

Frontmatter
bum_ros: Distributed User Modelling for Social Robots Using ROS
Abstract
In this chapter we present the ROS implementation of our Bayesian User Model, BUM. BUM is a distributed user modelling technique that can be easily implemented in several system topologies. It is able to infer the characteristics of multiple users from heterogeneous data gathered by multiple devices, such as social robots, ambient sensors and surveillance cameras. This chapter presents the BUM process and its implementation, emphasizing the essential and advanced ROS concepts used and extended to achieve the modularity and flexibility needed. Instructions on how to achieve our experimental set-ups are also presented, including a discussion on the role of ROS in the experimental success of the system, and illustrations of the results that can be achieved with our technique. This chapter serves as a thorough description and tutorial for the usage of our package, which can now be useful to the scientific community in user modelling and user-adaptive systems.
Gonçalo S. Martins, Luís Santos, Jorge Dias
ROSRemote: Using ROS on Cloud to Access Robots Remotely
Abstract
Cloud computing is an area that, nowadays, has been attracting a lot of researches and is expanding not only for processing data, but also for robotics. Cloud robotics is becoming a well-known subject, but it only works in a way to find a faster manner of processing data, which is almost like the idea of cloud computing. In this paper we have created a way to use cloud not only for this kind of operation but, also, to create a framework that helps users to work with ROS in a remote master, giving the possibility to create several applications that may run remotely. Using SpaceBrew, we do not have to worry about finding the robots addresses, which makes this application easier to implement because programmers only have to code as if the application is local.
Alyson Benoni Matias Pereira, Ricardo Emerson Julio, Guilherme Sousa Bastos
Metadata
Title
Robot Operating System (ROS)
Editor
Dr. Anis Koubaa
Copyright Year
2019
Electronic ISBN
978-3-319-91590-6
Print ISBN
978-3-319-91589-0
DOI
https://doi.org/10.1007/978-3-319-91590-6