Preface
Acknowledgements
Acknowledgements to Reviewers
Contents
Part I ROS Basics and Foundations
MoveIt!: An Introduction
1 Introduction
2 A Brief History
3 MoveIt! Architecture
3.1 Collision Checking
3.2 Kinematics
3.3 Motion Planning
3.4 Planning Scene
3.5 3D Perception
3.6 Trajectory Processing
3.7 Using This Tutorial
3.8 Installing MoveIt!
4 Starting with MoveIt!: The Setup Assistant
4.1 Start
4.2 Generating the Self-Collision Matrix
4.3 Add Virtual Joints
4.4 Planning Groups
4.5 Robot Poses
4.6 Passive Joints
4.7 Adding End-Effectors (Optional)
4.8 Configuration Files
5 Using the Rviz Motion Planning Plugin
5.1 Visualization and Interaction
5.2 Useful Hints
6 The move_group_interface
6.1 Planning to a Pose Goal
6.2 Planning to a Joint Goal
6.3 Move to Joint or Pose Goals
6.4 Adding Objects into the Environment
6.5 Helpful Hints
6.6 Additional Resources
7 Connecting to a Robot
7.1 Configuring the Controller Interface
7.2 Debugging Hints
7.3 Integrating 3D Perception
7.4 Helpful Hints
8 Building Applications with MoveIt!
9 Conclusion
References
Hands-on Learning of ROS Using Common Hardware
1 Introduction
2 Background
3 ROS Environment Configuration
4 Camera Sensors: Driver, Use and Calibration
5 Custom Node and Messages for Image Processing with OpenCV
6 RGB-D Sensors and PCL
7 Actuator Control: Dynamixel and ROS Control
8 Robot Description with URDF
9 Motion Planning with MoveIt!
10 Robot Simulation with Gazebo
Reference
Threaded Applications with the roscpp API
1 Introduction
2 ROS Environment Configuration
3 Catkin Build System
3.1 Creating package.xml
3.2 CMake Setup
3.3 Message Generation
4 ROS Callback Functions
4.1 Basic Callback Functions
4.2 Robots as a Thread
5 GUI Programming with Qt5 and ROS
5.1 An Overview of Qt5 GUI Programming
5.2 Connecting the Robot to the GUI
5.3 Publishing the Velocity Messages
5.4 Results
References
Part II Navigation, Motion and Planning
Writing Global Path Planners Plugins in ROS: A Tutorial
1 Introduction
2 ROS
2.1 ROS Navigation Stack
3 Relaxed A*
4 Integration Steps
4.1 Writing the Path Planner Class
4.2 Writing Your Plugin
4.3 Running the Plugin
4.4 Testing the Planner with RVIZ
5 ROS Environment Configuration
6 Experimental Validation
References
A Universal Grid Map Library: Implementation and Use Case for Rough Terrain Navigation
1 Introduction
2 Overview
2.1 Prerequisites and Installation
2.2 Software Components
2.3 A Simple Example
3 Package Description
3.1 Adding, Accessing, and Removing Layers
3.2 Setting the Geometry and Position
3.3 Accessing Cells
3.4 Moving the Map
3.5 Basic Layers
3.6 Iterating over Cells
3.7 Using Eigen Functions
3.8 Creating Submaps
3.9 Converting from and to ROS Data Types
3.10 Adding Data from Images
4 Use Case: Elevation Mapping
4.1 Background
4.2 Implementation
4.3 Results
5 Summary and Conclusion
References
ROS Navigation: Concepts and Tutorial
1 Introduction
2 Background
3 ROS Environment
3.1 Configuring the Kinect Sensor
3.2 Sick S300 Laser Sensor
3.3 Transformations
3.4 Creating a Package
3.5 The Navigation Stack---System Overview
3.6 The Navigation Stack---Getting It to Work
3.7 Layered Costmaps
4 Starting with a Test
4.1 Using Rviz
4.2 Multiple Machines Communication
4.3 Real Tests on Pioneer 3-AT
References
Localization and Navigation of a Climbing Robot Inside a LPG Spherical Tank Based on Dual-LIDAR Scanning of Weld Beads
1 Introduction
2 AIR---Autonomous Inspection Robot
3 Localization Problems in Spherical Tanks
4 Weld Beads Scanning with LIDAR Sensors
5 Localization Inside LPG Spheres
5.1 LIDAR Based Odometry
6 Experimental Results
6.1 Experiments on Planar Environment
6.2 Experiments in LPG Spherical Tank
7 Navigation
7.1 Wheel Odometry
7.2 EKF
7.3 Simultaneous Localization and Mapping---SLAM
8 Conclusions
9 Compliance with Ethical Standards
References
Part III Service and Experimental Robots
People Detection, Tracking and Visualization Using ROS on a Mobile Service Robot
1 Introduction
2 Background of the SPENCER Project
2.1 Robot Hardware and Sensory Setup
2.2 People Tracking Pipeline
3 People Detection
3.1 ROS Message Definitions
3.2 Person Detection in 2D Laser Data
3.3 Person Detection in RGB-D
3.4 Person Detection in Monocular Vision
4 People Tracking
4.1 ROS Message Definitions
4.2 People Tracking Algorithms Used in Our Experiments
4.3 Example: Nearest-Neighbor Tracker
4.4 Improving Robustness of Tracking
4.5 Tracking Metrics
5 Group Tracking
5.1 Social Relation Estimation
5.2 Group Detection and Tracking
6 Multi-Modal Tracking
6.1 ROS Message Definitions
6.2 Strategies for Fusion at the Detection Level
6.3 Post-Processing Filters
6.4 Multi-Modal People Tracking Setup on the Robot
6.5 Exemplary Launch File
7 Visualizing the Outputs of the Perception Pipeline
7.1 Custom RViz Visualization Plugins
7.2 URDF Model for Robot Visualization
7.3 ROS-based SVG Exporters
8 Integration with 3rd-Party Simulation Tools
8.1 Integration with the Robot Simulator Gazebo
8.2 Integration with the Pedestrian Simulator PedSim
9 Results
9.1 Qualitative Results
9.2 Runtime Performance
9.3 Lessons Learned
10 Conclusion
References
A ROS-Based System for an Autonomous Service Robot
1 Introduction
2 ROS Environment Configuration
3 Graphical User Interface
3.1 Background
3.2 ROS Environment Configuration
3.3 Quick Start and Example
3.4 Package Description
4 Mapping and Navigation
4.1 Background
4.2 ROS Environment Configuration
4.3 Quick Start and Example
4.4 Using the homer_gui for Mapping and Navigation
4.5 Package Description and Code Examples
5 Object Recognition
5.1 Background
5.2 ROS Environment Configuration
5.3 Quick Start and Example
5.4 Using the homer_gui for Object Learning and Recognition
5.5 Package Description and Code Examples
6 Human Robot Interaction
6.1 Background
6.2 ROS Environment Configuration
6.3 Quick Start and Example
6.4 Package Description and Code Examples
7 Conclusion
References
Robotnik---Professional Service Robotics Applications with ROS
1 Contributions of the Book Chapter
2 RESCUER: Robot for CBRN Intervention
2.1 Brief Description of the System
2.2 Challenges
3 R-INSPECT: Mobile Robot for Tunnel Inspection
3.1 Brief Description of the System
3.2 Challenges
4 CROM: Upper Body Torso Robot
4.1 Brief Description of the System
4.2 Main Topics Covered
5 AGVS: Indoor Healthcare Logistics Transport Robot
5.1 Brief Description of the System
5.2 Main Topics Covered
5.3 Navigation
5.4 Challenges
6 VINBOT: Robot for Precision Viticulture
6.1 Brief Description of the System
6.2 Challenges
7 Summary and Conclusions
References
Standardization of a Heterogeneous Robots Society Based on ROS
1 Introduction
2 Robot Description
2.1 MariSorgin
2.2 Tartalo and Galtxagorri
2.3 Robotino-s
2.4 NAO
2.5 Kbot-I
3 Working Areas of RSAIT Research Group
4 Case Study 1: Setup of the Navigation Stack
5 Case Study 2: Kinect Based Teleoperation
5.1 The robotino_teleop_gesture Package
5.2 The nao_teleop_gesture Package
6 Case Study 3: Speech Based Teleoperation in Basque
6.1 Speech-Based Teleoperation in MariSorgin
6.2 The nao_teleop_speech_eus Package
7 Conclusions
References
Part IV Real-World Applications Deployment
ROS-Based Cognitive Surgical Robotics
1 Introduction
2 Background
3 ROS Environment Configuration
4 Components
4.1 Robots
4.2 Endoscope Cameras
4.3 OR Perception System
4.4 Marker-Based Optical Tracking
4.5 Time-of-Flight Cameras
4.6 RGB-D Cameras
4.7 Input Devices
4.8 OpenIGTLink-ROS-Bridge
4.9 Ultrasound Imaging
4.10 Surgical Instruments
4.11 Augmented Reality
5 Subsystems
5.1 Telemanipulation
5.2 Multi-RGBD People Tracking
5.3 Human-Robot-Interaction
5.4 Endoscope Guidance
5.5 Ultrasound Tomography
5.6 Simulation
5.7 Software Frameworks
6 Organization and Software Engineering
6.1 Registration and Calibration
6.2 TF and Pose Topics
6.3 Windows/Matlab Integration
6.4 Software Repositories and Configuration Management
References
ROS in Space: A Case Study on Robonaut 2
1 Introduction
2 Architecture Overview
2.1 System Architecture
2.2 Software Architecture
3 Control Software
3.1 RoboNet
3.2 JointApi
3.3 Robodyn
4 Safety System and Certification
4.1 Static Force
4.2 Dynamic Force
4.3 Crushing Force
4.4 Health Monitoring
4.5 Trajectory Monitoring
4.6 Inadvertent Release
4.7 Certification
5 Vision and Supervisory Elements
6 Simulation and User Interfaces
6.1 Simulation
6.2 Affordance Templates
6.3 Vanguard
7 Software Deployment
8 Remote Operations
9 Discussion
10 Conclusions
References
ROS in the MOnarCH Project: A Case Study in Networked Robot Systems
1 Introduction
2 System Architecture
3 Situational Awareness Module (SAM)
3.1 Definitions and Overview of the Concepts
3.2 An Example of the Use of SAM
3.3 Technical Description
3.4 Using SAM in Your Own NRS
4 Current Results
5 Related Work and Alternatives
6 Conclusion
References
Case Study: Hyper-Spectral Mapping and Thermal Analysis
1 Introduction
1.1 Company Information
1.2 Vehicle Overview
1.3 Operating Environment
2 Hardware
2.1 Imaging
2.2 Laser Rangefinder
2.3 Position and Orientation Sensors
2.4 GPS
2.5 Environmental Sensors
2.6 Processing and Storage
2.7 Network
2.8 Data Storage
2.9 Hardware Configuration and Introspection
3 Software
3.1 Simulation and Development
3.2 Diagnostics
3.3 Operator Interface
4 Best Practices and Lessons Learned
4.1 Data Storage and Indexing
4.2 Configuration Management
4.3 Startup
5 Conclusion
References
Part V Perception and Sensing
A Distributed Calibration Algorithm for Color and Range Camera Networks
1 Introduction
2 Related Work
3 Background
3.1 The Calibration Problem
3.2 Affine Transformations
3.3 Reference Frames
3.4 Pinhole Camera Model
3.5 Notations
4 Camera-Only Network Calibration
4.1 Pose Estimation
4.2 Optimization
4.3 Additional Constraints
5 Extension to a Depth Sensor-Camera Network
5.1 Pose Estimation
5.2 Optimization
6 ROS Environment Configuration
6.1 Dependencies
6.2 Basic Configuration
7 Real-World Example
8 ROS Package
8.1 Architecture
8.2 Device Node
8.3 Master Node
9 Conclusions
References
Acoustic Source Localization for Robotics Networks
1 Introduction
2 State of the Art
3 DOA-Based Localization Problem
4 Gaussian Probability over DOA Approach
5 Algorithm Analysis and Optimization
6 Simulation
6.1 Simulation Results
7 Real Tests
7.1 Real Tests Results
8 ROS Package Documentation
8.1 Why ROS?
8.2 Package Download
8.3 Installation and Required Packages
8.4 Input Parameters
8.5 Simulation Tests
8.6 Real Tests
9 Conclusions and Future Work
References
Part VI Software Engineering with ROS
ROS Web Services: A Tutorial
1 Introduction
2 Web Services
2.1 SOAP Web Services
2.2 RESTful Web Services
3 ROSJAVA API
4 ROS Web Services
4.1 Prerequisites
4.2 Implementation and Experimentation
5 Conclusion
References
rapros: A ROS Package for Rapid Prototyping
1 Introduction
2 Background
3 ROS Environment Configuration
3.1 BeagleBone Black Setup
3.2 BeagleBoard-xM Setup
3.3 rapros Package Installation
3.4 rapros Parameters Setup
4 Starting with a Test
4.1 A PIL Example: The Quadrotor Stabilization
4.2 An HIL Example: The FAN Control
5 Package Description
5.1 rapros Simulink Block
5.2 rapros.py Node
References
HyperFlex: A Model Driven Toolchain for Designing and Configuring Software Control Systems for Autonomous Robots
1 Introduction
2 Software Product Lines Development with HyperFlex
2.1 Modeling Stable Architectures
2.2 Modeling Robotic Requirements
2.3 System Configuration
2.4 The HyperFlex Toolchain
3 Variability Modeling, Composition, and Resolution
3.1 ROS Component Meta-Model
3.2 ROS Resolution Meta-Model
3.3 Architecture Composition Meta-Models
3.4 Resolution Composition Meta-Models
4 Case Study: Autonomous Logistics
4.1 The Robot Navigation Functional System
4.2 The Autonomous Logistics SPL
5 Related Works
5.1 MDE for Software Variability Management
5.2 Robotics-Specific MDE approaches
6 Conclusions and Future Works
References
Integration and Usage of a ROS-Based Whole Body Control Software Framework
1 Introduction
2 Overview of Whole Body Operational Space Control
3 Software Architecture
3.1 Core Classes
3.2 Parameter Binding
3.3 Multi-threaded Architecture
4 Plugin Libraries
5 Example Whole Body Control Configurations
6 Installation
7 Usage
8 Conclusions
References
Part VII ROS Simulation Frameworks
Simulation of Closed Kinematic Chains in Realistic Environments Using Gazebo
1 Introduction
2 Preliminaries
2.1 Kinematic Linkages
2.2 Description Formats
3 Creating a Basic Robot Model with Gazebo
3.1 Basic Skid Steer Robot
4 Creating a Simulation of a Robot in a Complex Test Environment
4.1 Creation of Scipio Model: Skid Steer Robot
4.2 Creation of Environment
5 Simulating a Robot Featuring Kinematic Loops in a Complex Test Environment
5.1 Creation of Robot Model Featuring Kinematic Loops
5.2 Creation of Environment
6 Lessons Learned
References
RotorS---A Modular Gazebo MAV Simulator Framework
1 Introduction
2 Background
2.1 MAV Modeling
2.2 Control
2.3 State Estimation
2.4 Octree Representation
3 Tutorials
3.1 Simulator Setup
3.2 Simulator Overview
3.3 Hovering Example
3.4 Hovering with State Estimation
3.5 Mount Sensors
3.6 Evaluation
4 Advanced Tutorials
4.1 Developing a Custom Controller
4.2 Tutorial on Xacros
4.3 Assembling a Model
4.4 Creating Custom Sensors
5 Using RotorS for Higher Level Tasks
5.1 Collision Avoidance
5.2 Path Planning
6 Transfer to a Real MAV
7 Conclusion
References
Part VIII Advanced Tools for ROS
The ROS Multimaster Extension for Simplified Deployment of Multi-Robot Systems
1 Introduction
2 Background
2.1 ROS Master Change Detection
2.2 Discovery
2.3 ROS Master Synchronization
3 Installation and Usage
3.1 Installation
3.2 Usage Example with One Host
3.3 Remarks to Understand Synchronization
3.4 Network Setup
3.5 Synchronization of Multiple Hosts
3.6 Special Synchronization Parameters
3.7 Default Configuration
4 Node Manager
4.1 ROS Network
4.2 Host Description Panel
4.3 ROS Nodes View and Control
4.4 ROS Topics View
4.5 ROS-Services and Parameter View
4.6 Launch Dock
4.7 Launch Editor
4.8 Description Dock
4.9 Capabilities and Additional Description
4.10 Capability View
4.11 Auto Update
Advanced ROS Network Introspection (ARNI)
1 Introduction
2 Background
3 ROS Environment Configuration
3.1 ARNI: Testing of the Setup
4 ARNI: Overview
4.1 Metadata Acquisition
4.2 ARNI rqt GUI
4.3 Reference State Specification
4.4 Countermeasures Specification
5 ARNI: Advanced Introspection
6 ARNI: Monitoring
7 ARNI: Countermeasures
8 Conclusion
Reference
Implementation of Real-Time Joint Controllers
1 Introduction
2 Background on Control Systems
2.1 Computed Torque Controller
3 ROS Packages for Implementation of Controllers
3.1 Setting up a Catkin Workspace
3.2 ros_control
3.3 ros_controllers
3.4 robot_model
3.5 orocos_kdl
3.6 gazebo_ros_pkgs
3.7 ufrgs_wam
4 Configuring the System for Real-Time
5 Testing the Installed Packages
6 Implementing Controllers in ROS
6.1 Controllers in ROS
6.2 The ROS Real-Time Loop
6.3 Implementation of a Computed Torque Controller
6.4 The wam_description Package
6.5 The wam_controllers ROS Package
7 Conclusion
References
LIDA Bridge---A ROS Interface to the LIDA (Learning Intelligent Distribution Agent) Framework
1 Introduction
2 Global Workspace Theory
3 The LIDA Model
3.1 Codelets
3.2 Perception
3.3 Episodic and Long Term Memories
3.4 Consciousness Mechanism
3.5 Action Selection
4 LIDA Framework
4.1 Structure
5 Using the LIDA Framework on ROS Through LIDA Bridge
5.1 Prerequisites
5.2 Setting up a New Project
6 Conclusions
References