ROS Robotics Projects
Table of Contents
ROS Robotics Projects
Credits
About the Author
Acknowledgements
About the Reviewer
www.PacktPub.com
Why subscribe?
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Getting Started with ROS Robotics Application Development
Getting started with ROS
ROS distributions
Supported operating systems
Robots and sensors supported by ROS
Why ROS
Fundamentals of ROS
The filesystem level
The computation graph level
The ROS community level
Communication in ROS
ROS client libraries
ROS tools
Rviz (ROS Visualizer)
rqt_plot
rqt_graph
Simulators of ROS
Installing ROS kinetic on Ubuntu 16.04 LTS
Getting started with the installation
Configuring Ubuntu repositories
Setting up source.list
Setting up keys
Installing ROS
Initializing rosdep
Setting the ROS environment
Getting rosinstall
Setting ROS on VirtualBox
Setting the ROS workspace
Opportunities for ROS in industries and research
Questions
Summary
2. Face Detection and Tracking Using ROS, OpenCV and Dynamixel Servos
Overview of the project
Hardware and software prerequisites
Installing dependent ROS packages
Installing the usb_cam ROS package
Creating a ROS workspace for dependencies
Interfacing Dynamixel with ROS
Installing the ROS dynamixel_motor packages
Creating face tracker ROS packages
The interface between ROS and OpenCV
Working with the face-tracking ROS package
Understanding the face tracker code
Understanding CMakeLists.txt
The track.yaml file
The launch files
Running the face tracker node
The face_tracker_control package
The start_dynamixel launch file
The pan controller launch file
The pan controller configuration file
The servo parameters configuration file
The face tracker controller node
Creating CMakeLists.txt
Testing the face tracker control package
Bringing all the nodes together
Fixing the bracket and setting up the circuit
The final run
Questions
Summary
3. Building a Siri-Like Chatbot in ROS
Social robots
Building social robots
Prerequisites
Getting started with AIML
AIML tags
The PyAIML interpreter
Installing PyAIML on Ubuntu 16.04 LTS
Playing with PyAIML
Loading multiple AIML files
Creating an AIML bot in ROS
The AIML ROS package
Installing the ROS sound_play package
Installing the dependencies of sound_play
Installing the sound_play ROS package
Creating the ros_aiml package
The aiml_server node
The AIML client node
The aiml_tts client node
The AIML speech recognition node
start_chat.launch
start_tts_chat.launch
start_speech_chat.launch
Questions
Summary
4. Controlling Embedded Boards Using ROS
Getting started with popular embedded boards
An introduction to Arduino boards
How to choose an Arduino board for your robot
Getting started with STM32 and TI Launchpads
The Tiva C Launchpad
Introducing the Raspberry Pi
How to choose a Raspberry Pi board for your robot
The Odroid board
Interfacing Arduino with ROS
Monitoring light using Arduino and ROS
Running ROS serial server on PC
Interfacing STM32 boards to ROS using mbed
Interfacing Tiva C Launchpad boards with ROS using Energia
Running ROS on Raspberry Pi and Odroid boards
Connecting Raspberry Pi and Odroid to PC
Controlling GPIO pins from ROS
Creating a ROS package for the blink demo
Running the LED blink demo on Raspberry Pi and Odroid
Questions
Summary
5. Teleoperate a Robot Using Hand Gestures
Teleoperating ROS Turtle using a keyboard
Teleoperating using hand gestures
Setting up the project
Interfacing the MPU-9250 with the Arduino and ROS
The Arduino-IMU interfacing code
Visualizing IMU TF in Rviz
Converting IMU data into twist messages
Integration and final run
Teleoperating using an Android phone
Questions
Summary
6. Object Detection and Recognition
Getting started with object detection and recognition
The find_object_2d package in ROS
Installing find_object_2d
Installing from source code
Running find_object_2d nodes using webcams
Running find_object_2d nodes using depth sensors
Getting started with 3D object recognition
Introduction to 3D object recognition packages in ROS
Installing ORK packages in ROS
Detecting and recognizing objects from 3D meshes
Training using 3D models of an object
Training from captured 3D models
Recognizing objects
Questions
Summary
7. Deep Learning Using ROS and TensorFlow
Introduction to deep learning and its applications
Deep learning for robotics
Deep learning libraries
Getting started with TensorFlow
Installing TensorFlow on Ubuntu 16.04 LTS
TensorFlow concepts
Graph
Session
Variables
Fetches
Feeds
Writing our first code in TensorFlow
Image recognition using ROS and TensorFlow
Prerequisites
The ROS image recognition node
Running the ROS image recognition node
Introducing to scikit-learn
Installing scikit-learn on Ubuntu 16.04 LTS
Introducing to SVM and its application in robotics
Implementing an SVM-ROS application
Questions
Summary
8. ROS on MATLAB and Android
Getting started with the ROS-MATLAB interface
Setting Robotics Toolbox in MATLAB
Basic ROS functions in MATLAB
Initializing a ROS network
Listing ROS nodes, topics, and messages
Communicating from MATLAB to a ROS network
Controlling a ROS robot from MATLAB
Designing the MATLAB GUI application
Explaining callbacks
Running the application
Getting started with Android and its ROS interface
Installing rosjava
Installing from the Ubuntu package manager
Installing from source code