A New Book for Learning ROS

Since the first release of ROS on March 2, 2010, Willow Garage has significantly invested in the development of this software. The framework is meant for programming robotic systems that organize a great number of modules running on a real robot, and helps to develop and use already tested code. In brief, it makes development with several tools a lot easier, and we don’t have to reinvent the wheel because there are a good number of robotic applications already integrated in the framework, covering topics such as SLAM, Path Planning, Computer Vision, etc. Additionally, many commercial robots use it, for example, Willow Garage’s PR2, Clearpath’s Husky, PAL Robotics’ REEM, etc.

The main drawback of ROS is its learning curve. At the beginning, there are a few concepts that are new, and it takes some time to get used to them. And it is for that reason, that the ROS community has created a wiki documentation and a collaborative answer system. Here is a book that also helps: “Learning ROS for Robotics Programming” book, which has recently appeared on the scene. The book is available at Packt Publishing, along with several online bookstores, and is also listed at the ROS wiki. The authors, Aaron Martinez and Enrique Fernandez, have been developing robots for several years, and have comprehensive knowledge of the ROS ecosystem. The book is aimed for ROS beginners, but it also covers advanced topics, so that everybody can learn new concepts and workflow becomes more productive in your robotics projects.

This contribution to the ROS community is more than a single book. It’s a reference for the main concepts that you will use in ROS and also a tutorial with a great number of examples. Even more, the source code of all these examples is provided through the following github repository. It’s worth mentioning that the examples are C++ code, which makes the book unique in that sense.

 

The book starts with the ROS installation, then goes on to explain the framework architecture, including concepts like nodes, topics, and services, and enumerates the mechanisms to debug and visualize the information that flows in our robotic system programmed with ROS. Then, it literally shows how to connect your nodes to real hardware devices, so you can sense and actuate with the environment. This is one of the key topics covered in this book. Another fundamental topic covered in the book is a thorough explanation of how to model, simulate, and integrate a mobile base robot designed from scratch. The integration includes the setup and usage of the powerful navigation stack that comes with ROS. Additionally, a chapter is dedicated to Computer Vision, from the perspective of the tools available in ROS, such as calibration, stereo vision, etc, and the integration of cameras. Finally, everything is combined at the end, where a good number of commercial robots that use ROS are shown. The last chapter shows how to install the software of those robots and use them in ROS.

 

Some of the robots shown in the book comprise of PR2, the Turtlebot, Husky, REEM, Robonaut 2, etc. For instance, one of the authors of the book is currently working at PAL Robotics, the developers of REEM. For this particular robot, there’s a public repository with the ROS packages that will allow you to move the robot in simulation with gazebo, and also build a map and navigate autonomously avoiding obstacles, as shown in the figure. The integration with the ROS navigation stack is complete. Additionally, you can perform vision and manipulation tasks, like grasping a can of Coke. These are just a few examples already running; but that’s simply the starting point. With this robot, as with many others, by following the explanations of ‘Learning ROS for Robotics Programming’, you will be able to develop your own software.

Author: Enrique Fernandez