Skip to main content

2016 | Buch

Robot Operating System (ROS)

The Complete Reference (Volume 1)

insite
SUCHEN

Über dieses Buch

The objective of this book is to provide the reader with a comprehensive coverage on the Robot Operating Systems (ROS) and latest related systems, which is currently considered as the main development framework for robotics applications.

The book includes twenty-seven chapters organized into eight parts. Part 1 presents the basics and foundations of ROS. In Part 2, four chapters deal with navigation, motion and planning. Part 3 provides four examples of service and experimental robots. Part 4 deals with real-world deployment of applications. Part 5 presents signal-processing tools for perception and sensing. Part 6 provides software engineering methodologies to design complex software with ROS. Simulations frameworks are presented in Part 7. Finally, Part 8 presents advanced tools and frameworks for ROS including multi-master extension, network introspection, controllers and cognitive systems.

This book will be a valuable companion for ROS users and developers to learn more ROS capabilities and features.

Inhaltsverzeichnis

Frontmatter

ROS Basics and Foundations

Frontmatter
MoveIt!: An Introduction
Abstract
MoveIt! is state of the art software for mobile manipulation, incorporating the latest advances in motion planning, manipulation, 3D perception, kinematics, control and navigation. It provides an easy-to-use platform for developing advanced robotics applications, evaluating new robot designs and building integrated robotics products for industrial, commercial, R&D and other domains. MoveIt! is the most widely used open-source software for manipulation and has been used on over 65 different robots. This tutorial is intended for both new and advanced users: it will teach new users how to integrate MoveIt! with their robots while advanced users will also be able to get information on features that they may not be familiar with.
Sachin Chitta
Hands-on Learning of ROS Using Common Hardware
Abstract
Enhancing the teaching of robotics with hands-on activities is clearly beneficial. Yet at the same time, resources in higher education are scarce. Apart from the lack of supervisors, there are often not enough robots available for undergraduate teaching. Robotics simulators are a viable substitute for some tasks, but often real world interaction is more engaging. In this tutorial chapter, we present a hands-on introduction to ROS, which requires only hardware that is most likely already available or costs only about 150$. Instead of starting out with theoretical or highly artificial examples, the basic idea is to work along tangible ones. Each example is supposed to have an obvious relation to whatever real robotic system the knowledge should be transfered to afterwards. At the same time, the introduction covers all important aspects of ROS from sensors, transformations, robot modeling, simulation and motion planning to actuator control. Of course, one chapter cannot cover any subsystem in depth, rather the aim is to provide a big picture of ROS in a coherent and hands-on manner with many pointers to more in-depth information. The tutorial was written for ROS Indigo running on Ubuntu Trusty (14.04). The accompanying source code repository is available at https://​github.​com/​andreasBihlmaier​/​holoruch.
Andreas Bihlmaier, Heinz Wörn
Threaded Applications with the roscpp API
Abstract
We begin this tutorial by discussing the features of the Catkin build system. We then proceed by giving a thorough explanation of ROS callback functions in terms of sensor data. We utilize the Qt5 libraries to make a very simple Graphical User Interface to control the robot with on screen buttons, as well as view position information in \((x, y, \theta )\) coordinates. This GUI will use the Qt thread library as well as ROS messages to control and provide information about the state of the robot.
Hunter L. Allen

Navigation, Motion and Planning

Frontmatter
Writing Global Path Planners Plugins in ROS: A Tutorial
Abstract
In this tutorial chapter, we demonstrate how to integrate a new planner into ROS and present their benefits. Extensive experimentations are performed to show the effectiveness of the newly integrated planners as compared to Robot Operating System (ROS) default planners. The navigation stack of the ROS open-source middleware incorporates both global and local path planners to support ROS-enabled robot navigation. Only basic algorithms are defined for the global path planner including Dijkstra, A*, and carrot planners. However, more intelligent global planners have been defined in the literature but were not integrated in ROS distributions. This tutorial was developed under Ubuntu 12.4 and for ROS Hydro version. However, it is expected to also work with Groovy (not tested). A repository of the new path planner is available at https://​github.​com/​coins-lab/​relaxed_​astar. A video tutorial also available at https://​www.​youtube.​com/​playlist?​list=​PL8UbFU8tzwRjkxc​cq2zLkmTkOOYela5​fu.
Maram Alajlan, Anis Koubâa
A Universal Grid Map Library: Implementation and Use Case for Rough Terrain Navigation
Abstract
In this research chapter, we present our work on a universal grid map library for use as mapping framework for mobile robotics. It is designed for a wide range of applications such as online surface reconstruction and terrain interpretation for rough terrain navigation. Our software features multi-layered maps, computationally efficient repositioning of the map boundaries, and compatibility with existing ROS map message types. Data storage is based on the linear algebra library Eigen, offering a wide range of data processing algorithms. This chapter outlines how to integrate the grid map library into the reader’s own applications. We explain the concepts and provide code samples to discuss various features of the software. As a use case, we present an application of the library for online elevation mapping with a legged robot. The grid map library and the robot-centric elevation mapping framework are available open-source at http://​github.​com/​ethz-asl/​grid_​map and http://​github.​com/​ethz-asl/​elevation_​mapping.
Péter Fankhauser, Marco Hutter
ROS Navigation: Concepts and Tutorial
Abstract
This tutorial chapter aims to teach the main theoretical concepts and explain the use of ROS Navigation Stack. This is a powerful toolbox to path planning and Simultaneous Localization And Mapping (SLAM) but its application is not trivial due to lack of comprehension of the related concepts. This chapter will present the theory inside this stack and explain in an easy way how to perform SLAM in any robot. Step by step guides, example codes explained (line by line) and also real robot testing will be available. We will present the requisites and the how-to’s that will make the readers able to set the odometry, establish reference frames and its transformations, configure perception sensors, tune the navigation controllers and plan the path on their own virtual or real robots.
Rodrigo Longhi Guimarães, André Schneider de Oliveira, João Alberto Fabro, Thiago Becker, Vinícius Amilgar Brenner
Localization and Navigation of a Climbing Robot Inside a LPG Spherical Tank Based on Dual-LIDAR Scanning of Weld Beads
Abstract
Mobile robot localization is a classical problem in robotics and many solutions are discussed. This problem becomes more challenging in environments with few and/or none landmarks and poor illumination conditions. This article presents a novel solution to improve robot localization inside a LPG spherical tank by robot motion of detected weld beads. No external light source and no easily detectable landmarks are required. The weld beads are detected by filtering and processing techniques applied to raw signals from the LIDAR (Light Detection And Ranging) sensors. A specific classification technique—-SVM (Support Vector Machine)—is used to sort data between noises and weld beads. Odometry is determined according to robot motion in relation with the weld beads. The data fusion of this odometry with another measurements is performed through Extended Kalman Filter (EKF) to improve the robot localization. Lastly, this improved position is used as input to the autonomous navigation system, allowing the robot to travel through the entire surface to be inspected.
Ricardo S. da Veiga, Andre Schneider de Oliveira, Lucia Valeria Ramos de Arruda, Flavio Neves Junior

Service and Experimental Robots

Frontmatter
People Detection, Tracking and Visualization Using ROS on a Mobile Service Robot
Abstract
In this case study chapter, we discuss the implementation and deployment of a ROS-based, multi-modal people detection and tracking framework on a custom-built mobile service robot during the EU FP7 project SPENCER. The mildly humanized robot platform is equipped with five computers and an array of RGB-D, stereo and 2D laser range sensors. After describing the robot platform, we illustrate our real-time perception pipeline starting from ROS-based people detection modules for RGB-D and 2D laser data, via nodes for aggregating detections from multiple sensors, up to person and group tracking. For each stage of the pipeline, we provide sample code online. We also present a set of highly configurable, custom RViz plugins for visualizing detected and tracked persons and groups. Due to the flexible and modular structure of our pipeline, all of our components can easily be reused in custom setups. Finally, we outline how to generate test data using a pedestrian simulator and Gazebo. We conclude with quantitative results from our experiments and lessons that we learned during the project. To our knowledge, the presented framework is the functionally most complete one that is currently available for ROS as open-source software.
Timm Linder, Kai O. Arras
A ROS-Based System for an Autonomous Service Robot
Abstract
The Active Vision Group (AGAS) has gained plenty of experience in robotics over the past years. This contribution focuses on the area of service robotics. We present several important components that are crucial for a service robot system: mapping and navigation, object recognition, speech synthesis and speech recognition. A detailed tutorial on each of these packages is given in the presented chapter. All of the presented components are published on our ROS package repository: http://​wiki.​ros.​org/​agas-ros-pkg.
Viktor Seib, Raphael Memmesheimer, Dietrich Paulus
Robotnik—Professional Service Robotics Applications with ROS
Abstract
This chapter summarizes our most relevant experiences in the use of ROS in the deployment of Real-World professional service robotics applications: a mobile robot for CBRN intervention missions, a tunnel inspection and surveillance robot, an upper body torso robot, an indoor healthcare logistic transport robot and a robot for precision viticulture. The chapter describes the mentioned projects and how ROS has been used in them. It focuses on the application development, on the ROS modules used and the ROS tools and components applied, and on the lessons learnt in the development process.
Roberto Guzman, Roman Navarro, Marc Beneto, Daniel Carbonell
Standardization of a Heterogeneous Robots Society Based on ROS
Abstract
In this use case chapter the use of ROS is presented to achieve the standardization of a heterogeneous robots society. So on, several specific packages have been developed. Some case studies have been analized using ROS to control particular robots different in nature and morphology in some applications of interest in robotics such as navigation and teleoperation, and results are presented. All the developed work runs for Indigo version of ROS and the open source code is available at RSAIT’s github (github.com/rsait). Some videos can be seen at our youtube: channel https://​www.​youtube.​com/​channel/​UCT1s6oS21d8fxFe​ugxCrjnQ.
Igor Rodriguez, Ekaitz Jauregi, Aitzol Astigarraga, Txelo Ruiz, Elena Lazkano

Real-World Applications Deployment

Frontmatter
ROS-Based Cognitive Surgical Robotics
Abstract
The case study at hand describes our ROS-based setup for robot-assisted (minimally-invasive) surgery. The system includes different perception components (Kinects, Time-of-Flight Cameras, Endoscopic Cameras, Marker-based Trackers, Ultrasound), input devices (Force Dimension Haptic Input Devices), robots (KUKA LWRs, Universal Robots UR5, ViKY Endoscope Holder), surgical instruments and augmented reality displays. Apart from bringing together the individual components in a modular and flexible setup, many subsystems have been developed based on combinations of the single components. These subsystems include a bimanual telemanipulator, multiple Kinect people tracking, knowledge-based endoscope guidance and ultrasound tomography. The platform is not a research project in itself, but a basic infrastructure used for various research projects. We want to show how to build a large robotics platform, in fact a complete lab setup, based on ROS. It is flexible and modular enough to do research on different robotics related questions concurrently. The whole setup is running on ROS Indigo and Ubuntu Trusty (14.04). A repository of already open sourced components is available at https://​github.​com/​KITmedical.
Andreas Bihlmaier, Tim Beyl, Philip Nicolai, Mirko Kunze, Julien Mintenbeck, Luzie Schreiter, Thorsten Brennecke, Jessica Hutzl, Jörg Raczkowsky, Heinz Wörn
ROS in Space: A Case Study on Robonaut 2
Abstract
Robonaut 2 (R2), an upper-body dexterous humanoid robot, was developed in a partnership between NASA and General Motors. R2 has been undergoing experimental trials on board the International Space Station (ISS) for more than two years, and has recently been integrated with a mobility platform. Once post-integration checkouts are complete, it will be able to maneuver around the ISS in order to complete tasks and continue to demonstrate new technical competencies for future extravehicular activities. The increase in capabilities requires a new software architecture, control and safety system. These have all been implemented in the ROS framework. This case study chapter will discuss R2’s new software capabilities, user interfaces, and remote deployment and operation, and will include the safety certification path taken to be able to use ROS in space.
Julia Badger, Dustin Gooding, Kody Ensley, Kimberly Hambuchen, Allison Thackston
ROS in the MOnarCH Project: A Case Study in Networked Robot Systems
Abstract
Networked Robot Systems (NRS) have a wide range of potential real-world applications. However, these systems have functional requirements that lie outside of those considered in the typical use cases of ROS. This chapter describes the use of ROS in the context of the ongoing MOnarCH FP7 project on social robotics. We describe the software architecture used in the MOnarCH NRS, focusing on the decentralized information sharing framework we developed called Situational Awareness Module (SAM), and present some of the current results of our project that showcase the applicability of our ROS packages in real-world environments.
João Messias, Rodrigo Ventura, Pedro Lima, João Sequeira
Case Study: Hyper-Spectral Mapping and Thermal Analysis
Abstract
A study of the development of a car-mounted system for mobile hyper-spectral mapping that integrates thermal cameras, near-infrared cameras, and 3D LiDAR data. The data produced by this system is used for city scale thermal energy analysis, which allows property owners to determine the most cost effective energy efficiency improvements for their buildings. The data collection system uses ROS to record several terabytes of data during each night of operation. This case study will consider our internal best practices and lessons learned during development of a robust system running ROS for thousands of miles.
William Morris

Perception and Sensing

Frontmatter
A Distributed Calibration Algorithm for Color and Range Camera Networks
Abstract
In this tutorial chapter we present a package to calibrate multi-device vision systems such as camera networks or robots. The proposed approach is able to estimate—in a unique and consistent reference frame—the rigid displacements of all the sensors in a network of standard cameras, Kinect-like depth sensors and Time-of-Flight range sensors. The sensor poses can be estimated in a few minutes with a user-friendly procedure: the user is only asked to move a checkerboard around while the ROS nodes acquire the data and perform the calibration. To make the system scalable, the data analysis is distributed in the network. This results in a low bandwidth usage as well as a really fast calibration procedure. The ROS package is available on GitHub within the repository iaslab-unipd/calibration_toolkit (https://​github.​com/​iaslab-unipd/​calibration_​toolkit). The package has been developed for ROS Indigo in C++11 and Python, and tested on PCs equipped with Ubuntu 14.04 64 bit.
Filippo Basso, Riccardo Levorato, Matteo Munaro, Emanuele Menegatti
Acoustic Source Localization for Robotics Networks
Abstract
This chapter presents a technical research contribution in the audio for robotics field where ROS was used for validating the results. More specifically it deals with 2D Audio Localization using only the Directions of Arrival (DOAs) of a fixed acoustic source coming from an audio sensor network and proposes a method for estimating the position of the acoustic source using a Gaussian Probability over DOA approach (GP-DOA). This method was thought for robotics purposes and introduces a new perspective of the audio-video synergy using video sensor localization in the environment for extrinsic audio sensor calibration. Test results using Microsoft Kinects as DOA-sensors mounted on robots within the ROS framework, show that the algorithm is robust and modular and prove that the approach can be easily used for robotics applications. The second part is dedicated to the detailed description of the implemented ROS package.
Riccardo Levorato, Enrico Pagello

Software Engineering with ROS

Frontmatter
ROS Web Services: A Tutorial
Abstract
This tutorial presents how to integrate the Service-Oriented Architecture (SOA) paradigm into Robot Operating System (ROS). The main objective consists in exposing ROS ecosystem as a service that can be invoked by Web Services (WS) clients. This integration enables end-users and client applications to seamlessly interact with the ROS ecosystem via common WS interfaces while hiding all implementation details of the applications deployed in the ROS middleware. By the end of this tutorial, the reader will be able to develop web services that expose ROS topics and services to the end-users and client applications. This tutorial was developed under Ubuntu 12.4 and for ROS Hydro version.
Fatma Ellouze, Anis Koubâa, Habib Youssef
rapros: A ROS Package for Rapid Prototyping
Abstract
ROS framework lacks of an internal tool to design or test control algorithms and therefore developers have to test their algorithms on-line, directly on the robotic platform they are working with. This is not always safe and possible, and a rapid prototyping tool can help during the design phase. Users can develop their algorithms directly on the controller board and safely test them in a simulated scenario. Although some rapid prototyping tools exist in the ROS community, none of them take Simulink® into consideration. In this work the authors provide an open source Rapid Prototyping tool which integrates ROS and Simulink. The proposed package is useful for control designers, who are frequently used to exploit Simulink features for control deployment. The tool can be downloaded from https://​github.​com/​gionatacimini/​rapros.
Luca Cavanini, Gionata Cimini, Alessandro Freddi, Gianluca Ippoliti, Andrea Monteriù
HyperFlex: A Model Driven Toolchain for Designing and Configuring Software Control Systems for Autonomous Robots
Abstract
A huge corpus of open source robotic software libraries is available on ROS repositories that can be reused to develop a large variety of robot control systems. The difficult challenge consists in selecting and integrating a coherent set of components that provide the required functionality taking into account their mutual dependencies and architectural mismatches. The HyperFlex approach presented in this chapter enables the explicit representation of robot system architectures, functional variability, and application requirements as software models that can be manipulated by a system configuration engine.
Davide Brugali, Luca Gherardi
Integration and Usage of a ROS-Based Whole Body Control Software Framework
Abstract
ControlIt! is a ROS-based high performance feedback control framework that enables Whole Body Control (WBC) algorithms to be implemented, instantiated, and integrated into ROS applications. It operates above individual joint controllers but below planners and takes a holistic view of the robot to achieve multiple simultaneous objectives. Such capabilities are particularly useful for highly redundant and multi-branched robots like humanoids where the large number of degrees of freedom (DOFs) and intrinsic multi-tasking like reaching for an object while maintaining balance requires advanced feedback control strategies. ControlIt! provides two software abstractions, a compound task and a constraint set, that enables users to configure, use, and integrate whole body controllers. The compound task consists of prioritized tasks with controllers that operate in a relatively low dimensional space compared to the number of joints. The constraint set specifies physical limits of the robot like points of contact with the environment and mechanical couplings between joints. ControlIt! comes with an implementation of the Whole Body Operational Space control (WBOSC) algorithm, one of the original WBC algorithms. Through prioritized null-space projection, WBOSC achieves each tasks’ objectives subjected to limitations from higher priority tasks and the constraint set. Using tasks and constraints, users can make high-DOF multi-branched robots execute sophisticated multi-objective and adaptive behaviors. This chapter presents ControlIt! and provides examples of advanced whole body behaviors it enables.
Chien-Liang Fok, Luis Sentis

ROS Simulation Frameworks

Frontmatter
Simulation of Closed Kinematic Chains in Realistic Environments Using Gazebo
Abstract
Simulation is an integral part of the robo design process; it allows the designer to verify that the mechanical structure, sensors and software work together as intended. It can also serve as a collaboration platform for a team. Gazebo is a particularly attractive simulation platform as the physical behavior of the robot can be simulated in parallel with the ROS software that controls it. A lesser known feature of Gazebo is its ability to simulate closed kinematic chains. This is partly due to a lack of a well-established procedure for creating such simulations. This chapter describes in detail how robots with closed kinematic chains can be simulated in Gazebo. It explains how a robot model created with a computer-aided design (CAD) program such as SolidWorks can be exported to Gazebo so that closed kinematic chains are properly modeled, and how a realistic simulation environment can be generated. We provide detailed step-by-step examples that can be used by the reader to easily create new simulations using Gazebo and SolidWorks. SolidWorks was chosen as the CAD tool because it can partially export kinematic structures. Closed kinematic chains can then be relatively easily added to these exported structures so they can be used in Gazebo.
Michael Bailey, Krystian Gebis, Miloš Žefran
RotorS—A Modular Gazebo MAV Simulator Framework
Abstract
In this chapter we present a modular Micro Aerial Vehicle (MAV) simulation framework, which enables a quick start to perform research on MAVs. After reading this chapter, the reader will have a ready to use MAV simulator, including control and state estimation. The simulator was designed in a modular way, such that different controllers and state estimators can be used interchangeably, while incorporating new MAVs is reduced to a few steps. The provided controllers can be adapted to a custom vehicle by only changing a parameter file. Different controllers and state estimators can be compared with the provided evaluation framework. The simulation framework is a good starting point to tackle higher level tasks, such as collision avoidance, path planning, and vision based problems, like Simultaneous Localization and Mapping (SLAM), on MAVs. All components were designed to be analogous to its real world counterparts. This allows the usage of the same controllers and state estimators, including their parameters, in the simulation as on the real MAV.
Fadri Furrer, Michael Burri, Markus Achtelik, Roland Siegwart

Advanced Tools for ROS

Frontmatter
The ROS Multimaster Extension for Simplified Deployment of Multi-Robot Systems
Abstract
This tutorial chapter describes how to set up a multi-robot system in ROS with the multimaster_fkie package. The package adds ROS support for multiple hosts, which can be added and removed from the network at any time without affecting the remaining nodes. The presented multi-master extension works with the unmodified ROS master and does not change the way ROS nodes communicate or establish connections with each other. Thus, the multi-robot system remains fully compatible with a single-master ROS system. It is easy to set up and execute the ROS masters independently on each robot. The multi-master extension takes care of synchronization and merges the masters into a unified network view. For better usability, the package includes a graphical user interface for monitoring, configuration and control of the ROS components. The latest version can be downloaded from https://​github.​com/​fkie/​multimaster_​fkie. You can also install the package from http://​packages.​ros.​org. The multimaster_fkie package works with all ROS versions since groovy.
Alexander Tiderko, Frank Hoeller, Timo Röhling
Advanced ROS Network Introspection (ARNI)
Abstract
This tutorial chapter gives an introduction to Advanced ROS Network Introspection (ARNI), which was released as a solution for monitoring large ROS-based robotic installations. In the spirit of infrastructure monitoring (like Nagios), we generate metadata about all hosts, nodes, topics and connections, in order to monitor and specify the state of distributed robot software based on ROS. ARNI provides a more in-depth view of what is going on within the ROS computation graph out of the box. Any existing ROS node and host can be introspected without prior modification or recompilation. This extends from live network properties to host and node specific ones by running an additional node on each host of the ROS network. Furthermore, it is possible to define reference values for the state of all ROS components based on their metadata attributes. Subsequently, ARNI provides a mechanism to take countermeasures on detection of a violated specification. All features are modular and can be used without modifying existing ROS software. ARNI was written for ROS Indigo and this tutorial has been tested on Ubuntu Trusty (14.04). A link to the source code repository together with complementary information is available at http://​wiki.​ros.​org/​arni.
Andreas Bihlmaier, Matthias Hadlich, Heinz Wörn
Implementation of Real-Time Joint Controllers
Abstract
This tutorial chapter explains the implementation of controllers in the Robot Operating System. The inner working of the ROS real-time loop is explained with discussion of the classes used to implement it. Contrariwise to most available examples of implementation of controllers in ROS, which show the use of single input, single output controllers using the proportional-integral-derivative control law, here controllers are approached in a more general sense, so that any control law can be used. A complete example of implementation of a MIMO nonlinear controller is presented using the computed torque control law. The real-time aspects of the problem are also considered and the controller is ready for running in hard-real-time with the PREEMPT_RT kernel patch. The source code of examples are available at public repositories to enable readers to experiment with the examples and adapt them to their robots.
Walter Fetter Lages
LIDA Bridge—A ROS Interface to the LIDA (Learning Intelligent Distribution Agent) Framework
Abstract
This chapter presents a tutorial on how to build a cognitive robotic system with the LIDA Framework. In order to ease this development, a new ROS module (the LIDA Bridge, made available at https://​github.​com/​lidabridge/​lidabridge) is presented. The LIDA Framework is a Java implementation of the LIDA conceptual model, which is a cognitive model of artificial consciousness. This work performs an in-depth discussion about LIDA conceptual model, its components and how they interact in order to manage a general-purpose cognitive system. These concepts are applied in a step-by-step tutorial to create a fully cognitive robot based on this ROS wrapper to LIDA Framework, that is able to learn with new experiences or different perceptions.
Thiago Becker, André Schneider de Oliveira, João Alberto Fabro, Rodrigo Longhi Guimarães
Metadaten
Titel
Robot Operating System (ROS)
herausgegeben von
Anis Koubaa
Copyright-Jahr
2016
Electronic ISBN
978-3-319-26054-9
Print ISBN
978-3-319-26052-5
DOI
https://doi.org/10.1007/978-3-319-26054-9

Neuer Inhalt