Effective Robotics Programming with ROS, Third Edition gives you a comprehensive review
of ROS, the Robot Operating System framework, which is used nowadays by hundreds of
research groups and companies in the robotics industry. More importantly, ROS is also the
painless entry point to robotics for nonprofessionals and students. This book will guide you
through the installation process of ROS, and soon enough, you will be playing with the basic
tools and understanding the different elements of the framework.
The content of the book can be followed without any special devices, and each chapter comes
with a series of source code examples and tutorials that you can run on your own computer.
This is the only thing you need to follow the book.
However, we also show you how to work with hardware so that you can connect your
algorithms with the real world. Special care has been taken in choosing devices that are
affordable for amateur users, but at the same time, the most typical sensors or actuators in
robotics research are covered.
Finally, the potential of ROS is illustrated with the ability to work with whole robots in a real
or simulated environment. You will learn how to create your own robot and integrate it with a
simulation by using the Gazebo simulator. From here, you will have the chance to explore the
different aspects of creating a robot, such as perceiving the world using computer vision or
point cloud analysis, navigating through the environment using the powerful navigation stack,
and even being able to control robotic arms to interact with your surroundings using the
MoveIt! package. By the end of the book, it is our hope that you will have a thorough
understanding of the endless possibilities that ROS gives you when developing robotic
systems.What this book covers
Chapter 1, Getting Started with ROS, shows the easiest way you must follow in order to have a
working installation of ROS. You will see how to install ROS on different platforms, and you
will use ROS Kinetic throughout the rest of the book. This chapter describes how to make an
installation from Debian packages, compile the sources, and make installations in virtual
machines, Docker, and ARM CPU.
Chapter 2, ROS Architecture and Concepts, is concerned with the concepts and tools provided
by the ROS framework. We will introduce you to nodes, topics, and services, and you will
also learn how to use them. Through a series of examples, we will illustrate how to debug a
node and visualize the messages published through a topic.
Chapter 3, Visualization and Debugging Tools, goes a step further in order to show you
powerful tools to debug your nodes and visualize the information that goes through the
node's graph along with the topics. ROS provides a logging API that allows you to diagnose
node problems easily. In fact, we will see some powerful graphical tools, such as rqt_console
and rqt_graph, as well as visualization interfaces, such as rqt_plot and rviz. Finally, this
chapter explains how to record and play back messages using rosbag and rqt_bag.
Chapter 4, 3D Modeling and Simulation, constitutes one of the first steps in order to
implement your own robot in ROS. It shows you how to model a robot from scratch and run
it in simulation using the Gazebo simulator. You will simulate sensors, such as cameras and
laser range sensors. This will later allow you to use the whole navigation stack provided by
ROS and other tools.
Chapter 5, The Navigation Stack – Robot Setups, is the first of two chapters concerned with the
ROS navigation stack. This chapter describes how to configure your robot so that it can be
used with the navigation stack. In the same way, the stack is explained, along with several
examples.
Chapter 6, The Navigation Stack – Beyond Setups, continues the discussion of the previous
chapter by showing how we can effectively make our robot navigate autonomously. It will use
the navigation stack intensively for that. This chapter shows the great potential of ROS using
the Gazebo simulator and RViz to create a virtual environment in which we can build a map,
localize our robot, and do path planning with obstacle avoidance.
Chapter 7, Manipulation with MoveIt!, is a set of tools for mobile manipulation in ROS. This
chapter contains the documentation that you need to install this package. The chapter also
contains example demonstrations with robotic arms that use MoveIt! for manipulation tasks,
such as grasping, picking and placing, or simple motion planning with inverse kinematics.
Chapter 8, Using Sensors and Actuators with ROS, literally connects ROS with the real world.
This chapter goes through a number of common sensors and actuators that are supported inROS, such as range lasers, servo motors, cameras, RGB-D sensors, and GPS. Moreover, we
explain how to use embedded systems with microcontrollers, similar to the widely known
Arduino boards.
Chapter 9, Computer Vision, shows the support for cameras and computer vision tasks in
ROS. This chapter starts with drivers available for FireWire and USB cameras so that you can
connect them to your computer and capture images. You will then be able to calibrate your
camera using the ROS calibration tools. Later, you will be able to use the image pipeline,
which is explained in detail. Then, you will see how to use several APIs for vision and
integrate OpenCV. Finally, the installation and usage of a visual odometry software is
described.
Chapter 10, Point Clouds, shows how to use Point Cloud Library in your ROS nodes. This
chapter starts with the basics utilities, such as read or write a PCL snippet and the conversions
needed to publish or subscribe to these messages. Then, you will create a pipeline with
different nodes to process 3D data, and you will downsample, filter, and search for features
using