What this book covers
Chapter 1, Getting Started with ROS, explains the advantages of learning ROS and highlights the spectrum of robots currently using ROS. Instructions to install and launch ROS on a computer running a Ubuntu operating system are provided. An overview of the ROS architecture is given and its components are described. The Turtlesim simulation is introduced and used to provide a deeper understanding of how the components of ROS work and ROS commands.
Chapter 2, Creating Your First Two-Wheeled ROS Robot (in Simulation), introduces you to the ROS simulation environment of Gazebo. We will lead you through the steps to create your first robot simulation (a two-wheeled differential-drive base) and teach the structure of the Universal Robotic Description Format. The use of the ROS tools, rviz and Gazebo, are detailed to enable you to display your robot and interact with it.
Chapter 3, Driving Around with TurtleBot, introduces you to a real ROS robot, TurtleBot. This mobile base robot can be used in the simulation environment of Gazebo if you do not own one. ROS commands and Python scripts are used to control the TurtleBot through a variety of methods. The ROS tool, rqt, is introduced and subsets of its plugins are used to control TurtleBot and monitor its sensor data.
Chapter 4, Navigating the World with TurtleBot, explores visual sensors and the ability for a robot to map its environment. The 3D sensor options for TurtleBot's vision system are described and their setup and operation using ROS enables TurtleBot to navigate autonomously. The knowledge of Simultaneous Localization and Mapping techniques is applied in combination with TurtleBot's navigation stack to move about in the mapped environment.
Chapter 5, Creating Your First Robot Arm (in Simulation), provides a gentle introduction to the complexity of robotic arms. A simulated robot arm is designed and built using the macro language of Xacro. Controllers for the arm are created to operate the arm in Gazebo. Through developing the controllers for this arm, an insight into the mechanics and physics of a simple robot arm is offered.
Chapter 6, Wobbling Robot Arms Using Joint Control, takes a deeper look at the intricacies of controlling robotic arms. Our second ROS robot, the "state-of-the-art" Baxter robot, is introduced. Baxter has two 7 degree-of-freedom arms and a number of other sensors. Baxter Simulator is available as open source software to use for the instructions in this chapter. Examples are provided for the control of Baxter's arms using position, velocity, and torque modes with control for both forward and inverse kinematics. The ROS tool, MoveIt, is introduced for motion planning in simulation and execution on either a real or simulated Baxter.
Chapter 7, Making a Robot Fly, describes a small but growing area of ROS robotics—unmanned air vehicles. This chapter focuses on quadrotors, and an understanding of quadrotor hardware and flight control is provided. Instructions to download and control the simulated quadrotor Hector are supplied. With skills from flying a simulated quadrotor, you can move on to control a real Bitcraze Crazyflie or Parrot Bebop. Quadrotor control is via teleoperation or ROS topic/message commands.
Chapter 8, Controlling Your Robots with External Devices, presents a number of peripheral devices you can use to control a ROS robot. Joystick controllers, controller boards (Arduino and Raspberry Pi), and mobile devices all have ROS interfaces that can be integrated with your robot to provide external control.
Chapter 9, Flying a Mission with Crazyflie, incorporates many of the ROS components and concepts presented in this book into a challenging mission of autonomous flight. The mission involves the Crazyflie quadrotor flying to a "remote" target all mapped through a Kinect 3D sensor. This mission uses ROS message communication and co-ordinate transforms to employ the Kinect's view of the quadrotor and target to orchestrate the flight. Flight control software for the Crazyflie using PID control is described and provided as part of the mission software.
Chapter 10, Extending Your ROS Abilities, provides a few last ROS capabilities to stimulate the further learning of advanced ROS robotic applications. The ability to control a robot with voice commands, the ability for a robot to detect and recognize faces as well as the ability for a robot to speak are all presented.