PacktLib: Learning ROS for Robotics Programming

Learning ROS for Robotics Programming


About the Authors

About the Reviewers


Getting Started with ROS

Installing ROS Electric – using repositories

Installing ROS Fuerte – using repositories

How to install VirtualBox and Ubuntu


The ROS Architecture with Examples

Understanding the ROS Filesystem level

Understanding the ROS Computation Graph level

Understanding the ROS Community level

Some tutorials to practice with ROS


Debugging and Visualization

Debugging ROS nodes

Debugging messages

Inspecting what is going on

When something weird happens – roswtf!

Plotting scalar data

Visualization of images

3D visualization

Saving and playing back data

rqt plugins versus rx applications


Using Sensors and Actuators with ROS

Using a joystick or gamepad

Using a laser rangefinder – Hokuyo URG-04lx

Using the Kinect sensor to view in 3D

Using servomotors – Dynamixel

Using Arduino to add more sensors and actuators

Using the IMU – Xsens MTi

Using a low-cost IMU – 10 degrees of freedom


3D Modeling and Simulation

A 3D model of our robot in ROS

Creating our first URDF file

Xacro – a better way to write our robot models

Simulation in ROS


Computer Vision

Connecting and running the camera

Making your own USB camera driver with OpenCV

How to calibrate the camera

The ROS image pipeline

ROS packages useful for computer vision tasks

Performing visual odometry with viso2


Navigation Stack – Robot Setups

The navigation stack in ROS

Creating transforms

Publishing sensor information

Publishing odometry information

Creating a base controller

Creating a map with ROS


Navigation Stack – Beyond Setups

Creating a package

Creating a robot configuration

Configuring the costmaps (global_costmap) and (local_costmap)

Base local planner configuration

Creating a launch file for the navigation stack

Setting up rviz for the navigation stack

Adaptive Monte Carlo Localization (AMCL)

Avoiding obstacles

Sending goals


Combining Everything – Learn by Doing

REEM – the humanoid of PAL Robotics

PR2 – the Willow Garage robot

Robonaut 2 – the dexterous humanoid of NASA

Husky – the rover of Clearpath Robotics

TurtleBot – the low-cost mobile robot