Book description
Discover best practices and troubleshooting solutions when working on ROS
About This Book
- Develop complex robotic applications using ROS to interface robot manipulators and mobile robots
- Gain insight into autonomous navigation in mobile robots and motion planning in robot manipulators
- Discover best practices and troubleshooting solutions
Who This Book Is For
If you are a robotics enthusiast or researcher who want to learn more about building robot applications using ROS, this book is for you. In order to learn from this book, you should have a basic knowledge of ROS, GNU/Linux, and C++ programming concepts. The book is also excellent for programmers who want to explore the advanced features of ROS.
What You Will Learn
- Create a robot model with a seven-DOF robotic arm and a differential wheeled mobile robot
- Work with Gazebo and V-REP robotic simulator
- Implement autonomous navigation in differential drive robots using SLAM and AMCL packages
- Explore the ROS Pluginlib, ROS nodelets, and Gazebo plugins
- Interface I/O boards such as Arduino, robot sensors, and high-end actuators
- Simulate and motion plan an ABB and universal arm using ROS Industrial
- Explore the latest version of the ROS framework
- Work with the motion planning of a seven-DOF arm using MoveIt!
In Detail
In this day and age, robotics has been gaining a lot of traction in various industries where consistency and perfection matter. Automation is achieved via robotic applications and various platforms that support robotics. The Robot Operating System (ROS) is a modular software platform to develop generic robotic applications. This book focuses on the most stable release of ROS (Kinetic Kame), discusses advanced concepts, and effectively teaches you programming using ROS.
We begin with aninformative overview of the ROS framework, which will give you a clear idea of how ROS works. During the course of this book, you'll learn to build models of complex robots, and simulate and interface the robot using the ROS MoveIt! motion planning library and ROS navigation stacks. Learn to leverage several ROS packages to embrace your robot models.
After covering robot manipulation and navigation, you'll get to grips with the interfacing I/O boards, sensors, and actuators of ROS. Vision sensors are a key component of robots, and an entire chapter is dedicated to the vision sensor and image elaboration, its interface in ROS and programming. You'll also understand the hardware interface and simulation of complex robots to ROS and ROS Industrial.
At the end of this book, you'll discover the best practices to follow when programming using ROS.
Style and approach
This is a simplified guide to help you learn and master advanced topics in ROS using hands-on examples.
Table of contents
- Title Page
- Copyright and Credits
- www.PacktPub.com
- Contributors
- Preface
- Introduction to ROS
- Getting Started with ROS Programming
-
Working with 3D Robot Modeling in ROS
- ROS packages for robot modeling
- Understanding robot modeling using URDF
- Creating the ROS package for the robot description
- Creating our first URDF model
- Explaining the URDF file
- Visualizing the 3D robot model in RViz
- Adding physical and collision properties to a URDF model
- Understanding robot modeling using xacro
- Converting xacro to URDF
- Creating the robot description for a seven DOF robot manipulator
- Explaining the xacro model of the seven DOF arm
- Creating a robot model for the differential drive mobile robot
- Questions
- Summary
- Simulating Robots Using ROS and Gazebo
- Simulating Robots Using ROS and V-REP
-
Using the ROS MoveIt! and Navigation Stack
- Installing MoveIt!
-
Generating MoveIt! configuration package using the Setup Assistant tool
- Step 1 – Launching the Setup Assistant tool
- Step 2 – Generating the Self-Collision matrix
- Step 3 – Adding virtual joints
- Step 4 – Adding planning groups
- Step 5 – Adding the robot poses
- Step 6 – Setting up the robot end effector
- Step 7 – Adding passive joints
- Step 8 – Author information
- Step 9 – Generating configuration files
-
Motion planning of robot in RViz using MoveIt! configuration package
- Using the RViz Motion Planning plugin
-
Interfacing the MoveIt! configuration package to Gazebo
- Step 1 – Writing the controller configuration file for MoveIt!
- Step 2 – Creating the controller launch files
- Step 3 – Creating the controller configuration file for Gazebo
- Step 4 – Creating the launch file for Gazebo trajectory controllers
- Step 5 – Debugging the Gazebo- MoveIt! interface
- Understanding the ROS Navigation stack
- Installing the ROS Navigation stack
- Building a map using SLAM
- Questions
- Summary
-
Working with pluginlib, Nodelets, and Gazebo Plugins
-
Understanding pluginlib
-
Creating plugins for the calculator application using pluginlib
-
Working with the pluginlib_calculator package
- Step 1 - Creating the calculator_base header file
- Step 2 - Creating the calculator_plugins header file
- Step 3 - Exporting plugins using the calculator_plugins.cpp
- Step 4 - Implementing  the plugin loader using the calculator_loader.cpp
- Step 5 - Creating the plugin description file: calculator_plugins.xml
- Step 6 - Registering the plugin with the ROS package system
- Step 7 - Editing the CMakeLists.txt file
- Step 8 - Querying the list of plugins in a package
- Step 9 - Running the plugin loader
-
Working with the pluginlib_calculator package
-
Creating plugins for the calculator application using pluginlib
-
Understanding ROS nodelets
-
Creating a nodelet
- Step 1 - Creating a package for a nodelet
- Step 2 - Creating the hello_world.cpp nodelet
- Step 3 - Explanation of hello_world.cpp
- Step 4 - Creating the plugin description file
- Step 5 - Adding the export tag in package.xml
- Step 6 - Editing CMakeLists.txt
- Step 7 - Building and running nodelets
- Step 8 - Creating launch files for nodelets
-
Creating a nodelet
- Understanding the Gazebo plugins
- Questions
- Summary
-
Understanding pluginlib
-
Writing ROS Controllers and Visualization Plugins
- Understanding ros_control packages
-
Writing a basic joint controller in ROS
- Step 1 - Creating the controller package
- Step 2 – Creating the controller header file
- Step 3 – Creating the controller source file
- Step 4 – Explaining the controller source file
- Step 5 – Creating the plugin description file
- Step 6 – Updating package.xml
- Step 7 – Updating CMakeLists.txt
- Step 8 – Building the controller
- Step 9 – Writing the controller configuration file
- Step 10 – Writing the launch file for the controller
- Step 11 – Running the controller along with the seven dof arm in Gazebo
- Understanding the ROS visualization tool (RViz) and its plugins
-
Writing an RViz plugin for teleoperation
-
Methodology of building the RViz plugin
- Step 1 – Creating the RViz plugin package
- Step 2 – Creating the RViz plugin header file
- Step 3 – Creating the RViz plugin definition
- Step 4 – Creating the plugin description file
- Step 5 – Adding the export tags in package.xml
- Step 6 – Editing CMakeLists.txt
- Step 7 – Building and loading plugins
-
Methodology of building the RViz plugin
- Questions
- Summary
-
Interfacing I/O Boards, Sensors, and Actuators to ROS
- Understanding the Arduino-ROS interface
-
What is the Arduino-ROS interface?
- Understanding the rosserial package in ROS
- Understanding ROS node APIs in Arduino
- ROS - Arduino Publisher and Subscriber example
- Arduino-ROS, example - blink LED and push button
- Arduino-ROS, example - Accelerometer ADXL 335
- Arduino-ROS, example - ultrasonic distance sensor
- Arduino-ROS example - Odometry Publisher
- Interfacing non-Arduino boards to ROS
- Interfacing DYNAMIXEL actuators to ROS
- Questions
- Summary
-
Programming Vision Sensors Using ROS, Open CV, and PCL
- Understanding ROS – OpenCV interfacing packages
- Understanding ROS - PCL interfacing packages
- Interfacing USB webcams in ROS
-
Working with ROS camera calibration
- Converting images between ROS and OpenCV using cv_bridge
- Image processing using ROS and OpenCV
- Interfacing Kinect and Asus Xtion Pro in ROS
- Interfacing Intel Real Sense camera with ROS
- Interfacing Hokuyo Laser in ROS
- Working with point cloud data
- Working with AR Marker detection for object pose estimation
- Questions
- Summary
-
Building and Interfacing Differential Drive Mobile Robot Hardware in ROS
-
Introducing to Chefbot – a DIY mobile robot and its hardware configuration
- Flashing Chefbot firmware using Energia IDE
- Discussing Chefbot interface packages on ROS
- Computing odometry from encoder ticks
- Computing motor velocities from ROS twist message
- Configuring the Navigation stack for Chefbot
- Configuring the gmapping node
- Configuring the Navigation stack packages
- Understanding AMCL
- Understanding RViz for working with the Navigation stack
- Obstacle avoidance using the Navigation stack
- Working with Chefbot simulation
- Sending a goal to the Navigation stack from a ROS node
- Questions
- Summary
-
Introducing to Chefbot – a DIY mobile robot and its hardware configuration
-
Exploring the Advanced Capabilities of ROS-MoveIt!
- Motion planning using the move_group C++ interface
- Collision checking with a robot arm using MoveIt!
- Working with perception using MoveIt! and Gazebo
- Working with a robot pick-and-place task using MoveIt!
- Understanding DYNAMIXEL ROS Servo controllers for robot hardware interfacing
- Interfacing 7 DOF DYNAMIXEL-based robotic arm to ROS MoveIt!
- Questions
- Summary
- Using ROS in MATLAB and Simulink
-
ROS for Industrial Robots
- Understanding ROS-Industrial packages
- Installing ROS-Industrial packages
- Block diagram of ROS-Industrial packages
- Creating a URDF for an industrial robot
- Creating the MoveIt! configuration for an industrial robot
- Installing ROS-Industrial packages of  Universal robotic arms
- Understanding the Moveit! configuration of a Universal Robot arm
- Getting started with real Universal Robots hardware and ROS-I
- Working with MoveIt! configuration of ABB robots
- Understanding the ROS-Industrial robot support packages
- ROS-Industrial robot client package
- ROS-Industrial robot driver package
- Understanding the MoveIt! IKFast plugin
- Creating the MoveIt! IKFast plugin for the ABB IRB 6640 robot
- Creating the COLLADA file of a robot to work with OpenRave
- Generating the IKFast CPP file for the IRB 6640 robot
- Questions
- Summary
-
Troubleshooting and Best Practices in ROS
-
Setting up RoboWare Studio in Ubuntu
- Installing/uninstalling RoboWare Studio
- Getting started with RoboWare Studio
- Create ROS packages in RoboWare Studio
- Building ROS workspace in RoboWare Studio
- Executing ROS nodes in RoboWare Studio
- Starting ROS tools from the RoboWare interface
- Handling active ROS topics, nodes, and services
- Creating ROS nodes and classes with RoboWare tools
- ROS package manager in RoboWare Studio
- Best practices in ROS
- Best practices in the ROS package
- Important troubleshooting tips in ROS
- Questions
- Summary
-
Setting up RoboWare Studio in Ubuntu
- Other Books You May Enjoy
Product information
- Title: Mastering ROS for Robotics Programming - Second Edition
- Author(s):
- Release date: February 2018
- Publisher(s): Packt Publishing
- ISBN: 9781788478953
You might also like
book
Mastering ROS for Robotics Programming - Third Edition
Design, build, and simulate complex robots using the Robot Operating System Key Features Become proficient in …
book
Mastering ROS for Robotics Programming
Design, build and simulate complex robots using Robot Operating System and master its out-of-the-box functionalities About …
book
Hands-On ROS for Robotics Programming
Take your ROS skills to the next level by implementing complex robot structures in a ROS …
book
Learn Robotics Programming - Second Edition
Develop an extendable smart robot capable of performing a complex series of actions with Python and …