Preface
Being excited about learning ROS and working with ROS robots such as Baxter and TurtleBot is the beginning of a big adventure. The features and benefits of ROS are substantial, but the learning curve is steep. Through trial and error, we have foraged a path through many of the ROS applications trying everything. In this book, we hope to present to you the best of our knowledge of ROS and provide you with detailed step-by-step instructions for your journey. Our approach centers on using the ROS robots that are featured, namely TurtleBot, Baxter, Crazyflie, and Bebop, as well as simulated robots—Turtlesim and Hector.
This book provides introductory information as well as advanced applications featuring these ROS robots. The chapters begin with the basics of setting up your computer and loading ROS and the packages for ROS robots and tools. Straightforward instructions are provided with troubleshooting steps for when the desired results are not achieved. The building blocks of ROS are described first in the simulation Turtlesim, then on each of the featured robots. Starting with basic ROS commands, the ROS packages, nodes, topics, and messages are explored to gain an overall knowledge of these ROS robotic systems. Technical information on these example robots is provided to describe the robot's full capabilities.
ROS encompasses a full spectrum of software concepts, implementation, and tools that attempt to provide a homogeneous view of the complex systems and software integration required in robotics. Extensive libraries of sensor and actuator drivers and interfaces are already in place, as well as the latest and most efficient algorithms. What ROS doesn't provide directly is imported from other prevailing open source projects such as OpenCV. ROS also possesses a spectrum of time-saving tools to control, monitor, and debug robot applications: rqt, rviz, Gazebo, dynamic reconfigure, and MoveIt, to name a few.
In the pages that follow, each of these areas will be incrementally introduced to the reader as part of the robot examples. With TurtleBot, the subjects of navigation and mapping are explored. Using Baxter, joint control and path planning are described for your understanding. Simple Python scripts are included to provide examples of implementing ROS elements for many of these robots. These robots are all available in simulation to accomplish the exercises in this book. Furthermore, instructions are provided for you to build and control your own robot models in simulation.
The power of ROS, the variety of robots using ROS, and the diversity and support of the widespread ROS community make this adventure worthwhile. Extensive online tutorials, wiki instructions, forums, and tips and tricks are available for ROS. So dive into the pages of this book to begin your adventure with ROS robotics!