Home Page Icon
Home Page
Table of Contents for
Contributors
Close
Contributors
by Lentin Joseph, Ramkumar Gandhinathan
ROS Robotics Projects
Title Page
Copyright and Credits
ROS Robotics Projects Second Edition
Dedication
About Packt
Why subscribe?
Contributors
About the authors
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Code in Action
Conventions used
Get in touch
Reviews
Getting Started with ROS
Technical requirements
Getting started with ROS 
ROS distributions 
Supported OSes 
Robots and sensors supported by ROS 
Why use ROS?
Fundamentals of ROS
The filesystem level
The computation graph level
The ROS community level 
Communication in ROS 
ROS client libraries 
ROS tools 
ROS Visualizer (RViz) 
rqt_plot 
rqt_graph 
ROS simulators
Installing ROS Melodic on Ubuntu 18.04 LTS 
Getting started with the installation 
Configuring Ubuntu repositories 
Setting up source.list 
Setting up keys 
Installing ROS Melodic
Initializing rosdep 
Setting up the ROS environment 
Getting rosinstall 
Setting up ROS on VirtualBox 
Introduction to Docker 
Why Docker?
Installing Docker 
Installing from the Ubuntu repository
Removing Docker
Installing from the Docker repository
Working with Docker
Setting up the ROS workspace 
Opportunities for ROS in industries and research 
Summary 
Introduction to ROS-2 and Its Capabilities
Technical requirements
Getting started with ROS-2
ROS-2 distributions
Supported operating systems
Robots and sensors supported in ROS-2
Why ROS-2?
Fundamentals of ROS-2
What is DDS?
How is DDS implemented?
Computational graph
ROS-2 community level
Communication in ROS-2
Changes between ROS-1 and ROS-2
ROS-2 client libraries (RCL)
ROS-2 tools
Rviz2
Rqt
Installing ROS-2
Getting started with the installation
Setting up the system locale
Adding ROS-2 repositories
Installing development and ROS tools
Getting the ROS-2 source code
Installing dependencies using rosdep
Installing DDS implementations (optional)
Building code
Setting up ROS-1, ROS-2, or both environments
Running test nodes
Setting up the ROS-2 workspace
Writing ROS-2 nodes
ROS-1 example code
ROS-2 example code
Differences between ROS-1 and ROS-2 talker nodes
Bridging ROS-1 and ROS-2
Testing the ros1_bridge package
Summary
Building an Industrial Mobile Manipulator
Technical requirements
Understanding available mobile manipulators
Applications of mobile manipulators
Getting started building mobile manipulators
Units and coordinate system
Gazebo and ROS assumptions
Building the robot base
Robot base prerequisites
Robot base specifications
Robot base kinematics
Software parameters
ROS message format
ROS controllers
Modeling the robot base
Initializing the workspace
Defining the links
Defining the joints
Simulating the robot base
Defining collisions
Defining actuators
Defining ROS_CONTROLLERS
Testing the robot base
Getting started building the robot arm
Robot arm prerequisites
Robot arm specifications
Robot arm kinematics
Software parameters
The ROS message format
ROS controllers
Modeling the robot arm
Initializing the workspace
Defining the links
Defining the joints
Simulating the robot arm 
Defining collisions
Defining actuators
Defining ROS_CONTROLLERS
Testing the robot arm
Putting things together
Modeling the mobile manipulator
Simulating and testing the mobile manipulator
Summary
Handling Complex Robot Tasks Using State Machines
Technical requirements
Introduction to ROS actions
The client-server concept
An actionlib example – robot arm client
An actionlib example – battery simulator server-client
Creating a package and a folder action inside it
Creating an action file that has the goal, result, and feedback
Modifying the package files and compiling the package
Defining a server
Defining a client
Waiter robot analogy
Introduction to state machines
Introduction to SMACH
SMACH concepts
Outcome
User data
Preemption
Introspection
Getting started with SMACH examples
Installing and using SMACH-ROS
Simple example
Restaurant robot analogy
Summary
Building an Industrial Application
Technical requirements
Application use case – robot home delivery
Setting up the environment in Gazebo
Making our robot base intelligent
Adding a laser sensor
Configuring the navigation stack
Mapping the environment
Localizing the robot base
Making our robot arm intelligent
Introduction to Moveit
Installing and configuring Moveit for our mobile robot
Installing Moveit
Configuring the Moveit setup assistant wizard
Loading the robot model
Setting up self-collisions
Setting up planning groups
Setting up arm poses
Setting up passive joints
Setting up ROS controllers
Finalizing the Moveitconfig package
Controlling the robot arm using Moveit
Simulating the application
Mapping and saving the environment
Choosing the points on the environment
Adding the points to our library
Completing the state machine
Improvements to the robot
Summary
Multi-Robot Collaboration
Technical requirements
Understanding the swarm robotics application
Swarm robot classification
Multiple robot communication in ROS
Single roscore and common networks
Issues with a common network
Using groups/namespaces
Example – multi-robot spawn using groups/namespaces
Issues with using groups/namespaces
Introduction to the multimaster concept
Introduction to the multimaster_fkie package
Installing the multimaster_fkie package
Setting up the multimaster_fkie package
Setting up hostnames and IPs
Checking and enabling the multicast feature
Testing the setup
A multi-robot use case
Summary
ROS on Embedded Platforms and Their Control
Technical requirements
Understanding embedded boards
Important concepts
How different are microcontrollers and microprocessors in robotics?
What matters while choosing such boards
Introduction to microcontroller boards
Arduino Mega
How to choose an Arduino board for your robot
STM32
ESP8266
ROS-supported embedded boards 
OpenCR
Arbotix-Pro
Comparison table
Introduction to single-board computers
CPU boards
Tinkerboard S
BeagleBone Black
Raspberry Pi
Comparison table
GPU boards
Jetson TX2
Jetson Nano
Comparison table
Debian versus Ubuntu
Setting up ROS on Tinkerboard S
Prerequisites
Installing the Tinkerboard Debian OS
Installing Armbian and ROS
Installing using an available ROS image
Setting up ROS on BeagleBone Black
Prerequisites
Installing the Debian OS
Installing Ubuntu and ROS
Setting up ROS on Raspberry Pi 3/4
Prerequisites
Installing Raspbian and ROS
Installing Ubuntu and ROS
Setting up ROS on Jetson Nano
Controlling GPIOS from ROS
Tinkerboard S
BeagleBone Black
Raspberry Pi 3/4
Jetson Nano
Benchmarking embedded boards
Getting started with Alexa and connecting with ROS
Alexa skill-building requirements
Creating a skill
Summary
Reinforcement Learning and Robotics
Technical requirements
Introduction to machine learning
Supervised learning
Unsupervised learning
Reinforcement learning
Understanding reinforcement learning
Explore versus exploit
Reinforcement learning formula
Reinforcement learning platforms
Reinforcement learning in robotics
MDP and the Bellman equation
Reinforcement learning algorithms
Taxi problem analogy
TD prediction
Algorithm explanation
TD control
Off-policy learning – the Q-learning algorithm
Algorithm explanation
On-policy learning – the SARSA algorithm
Algorithm explanation
Installing OpenAI Gym, NumPy, and pandas
Q-learning and SARSA in action
Reinforcement learning in ROS
gym-gazebo
TurtleBot and its environment
Installing gym-gazebo and its dependencies
Testing the TurtleBot-2 environment
gym-gazebo2
MARA and its environment
Installing gym-gazebo2 and dependencies
Testing the MARA environment
Summary
Deep Learning Using ROS and TensorFlow
Technical requirements
Introduction to deep learning and its applications
Deep learning for robotics
Deep learning libraries
Getting started with TensorFlow
Installing TensorFlow on Ubuntu 18.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 18.04 LTS
Introduction to SVM and its application in robotics
Implementing an SVM-ROS application
Summary
Creating a Self-Driving Car Using ROS
Technical requirements
Getting started with self-driving cars
The history of autonomous vehicles
Levels of autonomy
Components of a typical self-driving car
GPS, IMU, and wheel encoders
Xsens MTi IMU
Camera
Ultrasonic sensors
LIDAR and RADAR
Velodyne HDL-64 LIDAR
SICK LMS 5xx/1xx and Hokuyo LIDAR
Continental ARS 300 radar (ARS)
The Delphi radar
Onboard computer
Software block diagram of self-driving cars
Simulating and interfacing self-driving car sensors in ROS
Simulating the Velodyne LIDAR
Interfacing Velodyne sensors with ROS
Simulating a laser scanner
Explaining the simulation code
Interfacing laser scanners with ROS
Simulating stereo and mono cameras in Gazebo
Interfacing cameras with ROS
Simulating GPS in Gazebo
Interfacing GPS with ROS
Simulating IMU on Gazebo
Interfacing IMUs with ROS
Simulating an ultrasonic sensor in Gazebo
Low-cost LIDAR sensors
Sweep LIDAR
RPLIDAR
Simulating a self-driving car with sensors in Gazebo
Installing prerequisites
Visualizing robotic car sensor data
Moving a self-driving car in Gazebo
Running hector SLAM using a robotic car
Interfacing a DBW car with ROS
Installing packages
Visualizing the self-driving car and sensor data
Communicating with DBW from ROS
Introducing the Udacity open source self-driving car project
Open source self-driving car simulator from Udacity
MATLAB ADAS Toolbox
Summary
Teleoperating Robots Using a VR Headset and Leap Motion
Technical requirements
Getting started with a VR headset and Leap Motion
Designing and working on the project
Installing the Leap Motion SDK on Ubuntu 14.04.5
Visualizing the Leap Motion controller data
Playing with the Leap Motion Visualizer tool
Installing the ROS driver for the Leap Motion controller
Testing the Leap Motion ROS driver
Visualizing Leap Motion data in RViz
Creating a teleoperation node using the Leap Motion controller
Building a ROS-VR Android application
Working with the ROS-VR application and interfacing with Gazebo
TurtleBot simulation in VR
Installing the Turtlebot simulator
Working with TurtleBot in VR
Troubleshooting the ROS-VR application
Integrating the ROS-VR application and Leap Motion teleoperation
Summary
Face Detection and Tracking Using ROS, OpenCV, and Dynamixel Servos
Technical requirements
Overview of the project
Hardware and software prerequisites
Installing the usb_cam ROS package
Creating an ROS workspace for dependencies
Configuring a webcam on Ubuntu 18.04
Interfacing the webcam with ROS
Configuring a Dynamixel servo using RoboPlus
Setting up the USB-to-Dynamixel driver on the PC
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
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 of the nodes together
Fixing the bracket and setting up the circuit
The final run
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
Why subscribe?
Next
Next Chapter
About the authors
Contributors
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset