Book description
Design, build, and simulate complex robots using the Robot Operating System
Key Features
- Become proficient in ROS programming using C++ with this comprehensive guide
- Build complex robot applications using the ROS Noetic Ninjemys release to interface robot manipulators with mobile robots
- Learn to interact with aerial robots using ROS
Book Description
The Robot Operating System (ROS) is a software framework used for programming complex robots. ROS enables you to develop software for building complex robots without writing code from scratch, saving valuable development time. Mastering ROS for Robotics Programming provides complete coverage of the advanced concepts using easy-to-understand, practical examples and step-by-step explanations of essential concepts that you can apply to your ROS robotics projects.
The book begins by helping you get to grips with the basic concepts necessary for programming robots with ROS. You'll then discover how to develop a robot simulation, as well as an actual robot, and understand how to apply high-level capabilities such as navigation and manipulation from scratch. As you advance, you'll learn how to create ROS controllers and plugins and explore ROS's industrial applications and how it interacts with aerial robots. Finally, you'll discover best practices and methods for working with ROS efficiently.
By the end of this ROS book, you'll have learned how to create various applications in ROS and build your first ROS robot.
What you will learn
- Create a robot model with a 7-DOF robotic arm and a differential wheeled mobile robot
- Work with Gazebo, CoppeliaSim, and Webots robotic simulators
- Implement autonomous navigation in differential drive robots using SLAM and AMCL packages
- Interact with and simulate aerial robots using ROS
- Explore ROS pluginlib, ROS nodelets, and Gazebo plugins
- Interface I/O boards such as Arduino, robot sensors, and high-end actuators
- Simulate and perform motion planning for an ABB robot and a universal arm using ROS-Industrial
- Work with the motion planning features of a 7-DOF arm using MoveIt
Who this book is for
If you are a robotics graduate, robotics researcher, or robotics software professional looking to work with ROS, this book is for you. Programmers who want to explore the advanced features of ROS will also find this book useful. Basic knowledge of ROS, GNU/Linux, and C++ programming concepts is necessary to get started with this book.
Table of contents
- Mastering ROS for Robotics Programming Third Edition
- Contributors
- About the authors
- About the reviewers
- Preface
- Section 1 – ROS Programming Essentials
- Chapter 1: Introduction to ROS
- Chapter 2: Getting Started with ROS Programming
- Section 2 – ROS Robot Simulation
-
Chapter 3: Working with ROS for 3D Modeling
- Technical requirements
- 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
- Summary
- Questions
-
Chapter 4: Simulating Robots Using ROS and Gazebo
- Technical requirements
- Simulating the robotic arm using Gazebo and ROS
- Creating the robotic arm simulation model for Gazebo
- Adding the gazebo_ros_control plugin
- Simulating the robotic arm with Xtion Pro
- Moving the robot joints using ROS controllers in Gazebo
- Simulating a differential wheeled robot in Gazebo
- Adding the ROS teleop node
- Questions
- Summary
- Chapter 5: Simulating Robots Using ROS, CoppeliaSim, and Webots
-
Chapter 6: Using the ROS MoveIt! and Navigation Stack
- Technical requirements
- The MoveIt! architecture
-
Generating a MoveIt! configuration package using the Setup Assistant tool
- Step 1 – Launching the Setup Assistant tool
- Step 2 – Generating a 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 a robot in RViz using the MoveIt! configuration package
- Understanding the ROS Navigation stack
- Building a map using SLAM
- Summary
- Questions
-
Chapter 7: Exploring the Advanced Capabilities of ROS MoveIt!
- Technical requirements
- Motion planning using the move_group C++ interface
- Working with perception using MoveIt! and Gazebo
- Performing object manipulation with MoveIt!
- Understanding DYNAMIXEL ROS servo controllers for robot hardware interfacing
- Interfacing a 7-DOF DYNAMIXEL-based robotic arm with ROS MoveIt!
- Summary
- Questions
- Chapter 8: ROS for Aerial Robots
- Section 3 – ROS Robot Hardware Prototyping
-
Chapter 9: Interfacing I/O Board Sensors and Actuators to ROS
- Technical requirements:
- 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 – blinking an LED with a push button
- Arduino-ROS example – Accelerometer ADXL 335
- Arduino-ROS example – ultrasonic distance sensor
- Arduino-ROS example – odometry data publisher
- Interfacing non-Arduino boards to ROS
- Interfacing DYNAMIXEL actuators to ROS
- Summary
- Questions
-
Chapter 10: Programming Vision Sensors Using ROS, OpenCV, and PCL
- Technical requirements
- Understanding ROS – OpenCV interfacing packages
- Understanding ROS – PCL interfacing packages
- Interfacing USB webcams in ROS
- Working with ROS camera calibration
- Interfacing Kinect and Asus Xtion Pro with ROS
- Interfacing the Intel RealSense camera with ROS
- Interfacing Hokuyo lasers with ROS
- Working with point cloud data
- Summary
- Questions
- Chapter 11: Building and Interfacing Differential Drive Mobile Robot Hardware in ROS
- Section 4 – Advanced ROS Programming
- Chapter 12: Working with pluginlib, nodelets, and Gazebo Plugins
-
Chapter 13: Writing ROS Controllers and Visualization Plugins
- Technical requirements
- 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 – detailed explanation of 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 RViz tool and its plugins
- Writing an RViz plugin for teleoperation
- Summary
- Questions
- Chapter 14: Using ROS in MATLAB and Simulink
-
Chapter 15: ROS for Industrial Robots
- Technical requirements
- Understanding ROS-Industrial packages
- Goals of ROS-Industrial
- ROS-Industrial – a brief history
- Installing ROS-Industrial packages
- Creating a URDF for an industrial robot
- Creating the MoveIt configuration for an industrial robot
- Updating the MoveIt configuration files
- Installing ROS-Industrial packages for Universal Robots arms
- Installing the ROS interface for Universal Robots
- Understanding the MoveIt configuration of a Universal Robots arm
- Getting started with real Universal Robots hardware and ROS-I
- Working with MoveIt configuration for ABB robots
- Understanding the ROS-Industrial robot support packages
- The ROS-Industrial robot client package
- Designing industrial robot client nodes
- The ROS-Industrial robot driver package
- Understanding the MoveIt IKFast plugin
- Creating the MoveIt IKFast plugin for the ABB IRB 6640 robot
- The OpenRave and IKFast modules
- 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
- Summary
- Questions
-
Chapter 16: Troubleshooting and Best Practices in ROS
-
Setting up Visual Studio Code with ROS
- Installing/uninstalling Visual Studio Code
- Getting started with Visual Studio Code
- Installing new Visual Studio Code extensions
- Getting started with the Visual Studio Code ROS extension
- Inspecting and building the ROS workspace
- Managing ROS packages using Visual Studio Code
- Visualizing the preview of a URDF file
- Best practices in ROS
- Best coding practices for the ROS package
- Important troubleshooting tips in ROS
- Summary
- Questions
- Why subscribe?
-
Setting up Visual Studio Code with ROS
- Other Books You May Enjoy
Product information
- Title: Mastering ROS for Robotics Programming - Third Edition
- Author(s):
- Release date: October 2021
- Publisher(s): Packt Publishing
- ISBN: 9781801071024
You might also like
book
Mastering ROS for Robotics Programming - Second Edition
Discover best practices and troubleshooting solutions when working on ROS About This Book Develop complex robotic …
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
Programming Robots with ROS
Want to develop novel robot applications, but don’t know how to write a mapping or object …