Mastering Ros for Robotics Programming

Mastering Ros for Robotics Programming

Do you happen to have been searching for a place where you can download mastering ros for robotics programming book in PDF without restriction? Have you been searching for long without getting answers? Then you just came to the end of your search as you need not search anymore. I bring you the latest information on this Collegelearners site where you can download mastering ros for robotics programming book PDF without any cost or registration. What are you waiting for? All the mechanical engineering PDF books you need, now at your fingertips on Collegelearners site!

About Mastering Ros for Robotics Programming PDF Book

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 of Mastering Ros for Robotics Programming

    Title Page

    Copyright and Credits

        Mastering ROS for Robotics Programming Second Edition

    www.PacktPub.com

        Why subscribe?

        PacktPub.com

    Contributors

        About the authors

        About the reviewer

        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

            Conventions used

        Get in touch

            Reviews

    Introduction to ROS

        Why should we learn ROS?

        Why we prefer ROS for robots

        Why some do not prefer ROS for robots

        Understanding the ROS filesystem level

            ROS packages

            ROS metapackages

            ROS messages

            The ROS services

        Understanding the ROS computation graph level

            ROS nodes

            ROS messages

            ROS topics

            ROS services

            ROS bags

            The ROS Master

            Using the ROS parameter

        ROS community level

        What are the prerequisites for starting with ROS?

            Running the ROS Master and the ROS parameter server

                Checking the roscore command output

        Questions

        Summary

    Getting Started with ROS Programming

        Creating a ROS package

            Working with ROS topics

            Creating ROS nodes

            Building the nodes

        Adding custom msg and srv files

        Working with ROS services

            Working with ROS actionlib

                Creating the ROS action server

                Creating the ROS action client

            Building the ROS action server and client

        Creating launch files

        Applications of topics, services, and actionlib

        Maintaining the ROS package

        Releasing your ROS package

        Preparing the ROS package for the release

        Releasing our package

            Creating a Wiki page for your ROS package

        Questions

        Summary

    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

            Interacting with pan-and-tilt joints

        Adding physical and collision properties to a URDF model

        Understanding robot modeling using xacro

            Using properties

            Using the math expression

            Using macros

        Converting xacro to URDF

        Creating the robot description for a seven DOF robot manipulator

            Arm specification

                Type of joints

        Explaining the xacro model of the seven DOF arm

            Using constants

            Using macros

            Including other xacro files

            Using meshes in the link

            Working with the robot gripper

            Viewing the seven DOF arm in RViz

                Understanding joint state publisher

                Understanding robot state publisher

        Creating a robot model for the differential drive mobile robot

        Questions

        Summary

    Simulating Robots Using ROS and Gazebo

        Simulating the robotic arm using Gazebo and ROS

        Creating the robotic arm simulation model for Gazebo

            Adding colors and textures to the Gazebo robot model

            Adding transmission tags to actuate the model

            Adding the gazebo_ros_control plugin

            Adding a 3D vision sensor to Gazebo

        Simulating the robotic arm with Xtion Pro

            Visualizing the 3D sensor data

        Moving robot joints using ROS controllers in Gazebo

            Understanding the ros_control packages

            Different types of ROS controllers and hardware interfaces

            How the ROS controller interacts with Gazebo

            Interfacing joint state controllers and joint position controllers to the arm

            Launching the ROS controllers with Gazebo

            Moving the robot joints

        Simulating a differential wheeled robot in Gazebo

            Adding the laser scanner to Gazebo

            Moving the mobile robot in Gazebo

            Adding joint state publishers in the launch file

        Adding the ROS teleop node

        Questions

        Summary

    Simulating Robots Using ROS and V-REP

        Setting up V-REP with ROS

        Understanding the vrep_plugin

            Interacting with V-REP using ROS services

            Interacting with V-REP using ROS topics

        Simulating the robotic arm using V-REP and ROS

            Adding the ROS interface to V-REP joint controllers

        Simulating a differential wheeled robot in V-REP

            Adding a laser sensor to V-REP

            Adding a 3D vision sensor to V-REP

        Questions

        Summary

    Using the ROS MoveIt! and Navigation Stack

        Installing MoveIt!

            MoveIt! architecture

                The move_group node

                Motion planning using MoveIt!

                Motion planning request adapters

                MoveIt! planning scene

                MoveIt! kinematics handling

                MoveIt! collision checking

        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

            ROS Navigation hardware requirements

            Working with Navigation packages

                Understanding the move_base node

                Working of Navigation stack

                Localizing on the map

                Sending a goal and path planning

                Collision recovery behavior

                Sending the command velocity

        Installing the ROS Navigation stack

        Building a map using SLAM

            Creating a launch file for gmapping

            Running SLAM on the differential drive robot

            Implementing autonomous navigation using amcl and a static map

            Creating an amcl launch file

        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

        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

        Understanding the Gazebo plugins

            Creating a basic world plugin

        Questions

        Summary

    Writing ROS Controllers and Visualization Plugins

        Understanding ros_control packages

            The controller_interface package

                Initializating the controller

                Starting the ROS controller

                Updating the ROS controller

                Stopping the controller

            The controller_manager

        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

            Displays panel

            RViz toolbar

            Views

            Time panel

            Dockable panels

        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

        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

                Installing rosserial packages on Ubuntu 16.04

            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

                Equations to find distance using the ultrasonic range sensor

            Arduino-ROS example – Odometry Publisher

        Interfacing non-Arduino boards to ROS

            Setting ROS on Odroid-XU4 and Raspberry Pi 2

                How to install an OS image to Odroid-XU4 and Raspberry Pi 2

                    Installation in Windows

                    Installation in Linux

                Connecting to Odroid-XU4 and Raspberry Pi 2 from a PC

                Configuring an Ethernet hotspot for Odroid-XU4 and Raspberry Pi 2

                    Installing Wiring Pi on Odroid-XU4

                    Installing Wiring Pi on Raspberry Pi 2

            Blinking LED using ROS on Raspberry Pi 2

            Push button + blink LED using ROS on Raspberry Pi 2

            Running examples in Raspberry Pi 2

        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

            Installing ROS perception

        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

                Step 1 – Creating a ROS package for the experiment

                Step 2 – Creating source files

                Step 3 – Explanation of the code

                    Publishing and subscribing images using image_transport

                    Converting OpenCV to ROS images using cv_bridge

                    Finding edges on the image

                    Visualizing raw and edge-detected-images

                Step 4 – Editing the CMakeLists.txt file

                Step 5 – Building and running an example

        Interfacing Kinect and Asus Xtion Pro in ROS

        Interfacing Intel Real Sense camera with ROS

            Working with a point cloud to a laser scan package

        Interfacing Hokuyo Laser in ROS

        Working with point cloud data

            How to publish a point cloud

            How to subscribe and process the point cloud

            Writing data to a Point Cloud Data (PCD) file

            Reading and publishing a point cloud from a PCD file

        Working with AR Marker detection for object pose estimation

            Using AprilTag with ROS

        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

                Serial data sending protocol from LaunchPad to PC

                Serial data sending protocol from PC to Launchpad

            Discussing Chefbot interface packages on ROS

            Computing odometry from encoder ticks

            Computing motor velocities from ROS twist message

                Running the robot standalone launch file using C++ nodes

            Configuring the Navigation stack for Chefbot

            Configuring the gmapping node

            Configuring the Navigation stack packages

                Common configuration local_costmap and global_costmap

                Configuring global costmap parameters

                Configuring local costmap parameters

                Configuring base local planner parameters

                Configuring DWA local planner parameters

                Configuring move_base node parameters

            Understanding AMCL

            Understanding RViz for working with the Navigation stack

                2D Pose Estimate button

                Visualizing the particle cloud

                The 2D Nav Goal button

                Displaying the static map

                Displaying the robot footprint

                Displaying the global and local cost map

                Displaying the global plan, the local plan, and the planner plan

                The current goal

            Obstacle avoidance using the Navigation stack

            Working with Chefbot simulation

                Building a room in Gazebo

                Adding model files to the Gazebo model folder

            Sending a goal to the Navigation stack from a ROS node

        Questions

        Summary

    Exploring the Advanced Capabilities of ROS-MoveIt!

        Motion planning using the move_group C++ interface

            Motion planning a random path using MoveIt! C++ APIs

            Motion planning a custom path using MoveIt! C++ APIs

        Collision checking with a robot arm using MoveIt!

            Adding a collision object to MoveIt!

            Removing a collision object from the planning scene

            Attaching a collision object to a robot link

            Checking self-collisions using MoveIt! APIs

        Working with perception using MoveIt! and Gazebo

            Manipulating objects with MoveIt!

        Working with a robot pick-and-place task using MoveIt!

            Calculating grasp poses with GPD

            Pick and place action in Gazebo and real robot

        Understanding DYNAMIXEL ROS Servo controllers for robot hardware interfacing

            The DYNAMIXEL servos

            DYNAMIXEL-ROS interface

        Interfacing 7 DOF DYNAMIXEL-based robotic arm to ROS MoveIt!

            Creating a controller package for a COOL arm robot

            MoveIt! configuration of the COOL Arm

        Questions

        Summary

    Using ROS in MATLAB and Simulink

        Getting started with MATLAB and MATLAB-ROS

            Getting started with the Robotic System Toolbox and ROS-MATLAB interface

            Starting with ROS topics and MATLAB callback functions

            Implementing an obstacle avoidance system for a Turtlebot robot

        Getting started with ROS and Simulink

            Creating a wave signal integrator in Simulink

            Working with ROS messages in Simulink

            Publishing a ROS message in Simulink

            Subscribing to a ROS topic in Simulink

        Developing a simple control system in Simulink

            Configuring the Simulink model

        Questions

        Summary

    ROS for Industrial Robots

        Understanding ROS-Industrial packages

            Goals of ROS-Industrial

            ROS-Industrial – a brief history

            Benefits of ROS-Industrial

        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

            Updating the MoveIt! configuration files

            Testing the MoveIt! configuration

        Installing ROS-Industrial packages of  Universal robotic arms

            Installing the ROS interface of Universal Robots

        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

            Visualizing the ABB robot model in RViz

        ROS-Industrial robot client package

            Designing industrial robot client nodes

        ROS-Industrial robot driver package

        Understanding the MoveIt! IKFast plugin

        Creating the MoveIt! IKFast plugin for the ABB IRB 6640 robot

            Prerequisites for developing the MoveIt! IKFast plugin

            OpenRave and IK Fast modules

                MoveIt! IKFast

                Installing the MoveIt! IKFast package

                Installing OpenRave on Ubuntu 16.04

        Creating the COLLADA file of a robot to work with OpenRave

        Generating the IKFast CPP file for the IRB 6640 robot

            Creating the MoveIt! IKFast plugin

        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

            ROS C++ coding style guide

                Standard naming conventions used in ROS

                Code license agreement

                ROS code formatting

                Console output

        Best practices in the ROS package

        Important troubleshooting tips in ROS

            Using roswtf

        Questions

        Summary

    Other Books You May Enjoy

        Leave a review – let other readers know what you think

About the author

The Editorial Team at Infolearners.com is dedicated to providing the best information on learning. From attaining a certificate in marketing to earning an MBA, we have all you need. If you feel lost, reach out to an admission officer.
Study on Scholarship Today -- Check your eligibility for up to 100% scholarship.

Leave a Comment