万本电子书0元读

万本电子书0元读

顶部广告

Mastering ROS for Robotics Programming - Second Edition电子书

售       价:¥

11人正在读 | 0人评论 9.8

作       者:Lentin Joseph,Jonathan Cacace

出  版  社:Packt Publishing

出版时间:2018-02-26

字       数:59.6万

所属分类: 进口书 > 外文原版书 > 电脑/网络

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
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.
目录展开

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

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部