logo资料库

ROS Programming: Building Powerful Robots.pdf

第1页 / 共1295页
第2页 / 共1295页
第3页 / 共1295页
第4页 / 共1295页
第5页 / 共1295页
第6页 / 共1295页
第7页 / 共1295页
第8页 / 共1295页
资料共1295页,剩余部分请下载后查看
Title page
Copyright and Credits
ROS Programming: Building Powerful Robots
Packt Upsell
Why subscribe?
PacktPub.com
Preface
Who this learning path is for
What this learning path covers
To get the most out of this learning path
Download the example code files
Conventions used
Get in touch
Reviews
Effective Robotics Programming with ROS, Third Edition
Getting Started with ROS
PC installation
Installing ROS Kinetic using repositories
Configuring your Ubuntu repositories
Setting up your source.list file
Setting up your keys
Installing ROS
Initializing rosdep
Setting up the environment
Getting rosinstall
How to install VirtualBox and Ubuntu
Downloading VirtualBox
Creating the virtual machine
Using ROS from a Docker image
Installing Docker
Getting and using ROS Docker images and containers
Installing ROS in BeagleBone Black
Prerequisites
Setting up the local machine and source.list file
Setting up your keys
Installing the ROS packages
Initializing rosdep for ROS
Setting up the environment in the BeagleBone Black
Getting rosinstall for BeagleBone Black
Basic ROS example on the BeagleBone Black
Summary
ROS Architecture and Concepts
Understanding the ROS Filesystem level
The workspace
Packages
Metapackages
Messages
Services
Understanding the ROS Computation Graph level
Nodes and nodelets
Topics
Services
Messages
Bags
The ROS master
Parameter Server
Understanding the ROS Community level
Tutorials to practise with ROS
Navigating through the ROS filesystem
Creating our own workspace
Creating an ROS package and metapackage
Building an ROS package
Playing with ROS nodes
Learning how to interact with topics
Learning how to use services
Using Parameter Server
Creating nodes
Building the node
Creating msg and srv files
Using the new srv and msg files
The launch file
Dynamic parameters
Summary
Visualization and Debugging Tools
Debugging ROS nodes
Using the GDB debugger with ROS nodes
Attaching a node to GDB while launching ROS
Profiling a node with valgrind while launching ROS
Enabling core dumps for ROS nodes
Logging messages
Outputting logging messages
Setting the debug message level
Configuring the debugging level of a particular node
Giving names to messages
Conditional and filtered messages
Showing messages once, throttling, and other combinations
Using rqt_console and rqt_logger_level to modify the logging level on the fly
Inspecting the system
Inspecting the node's graph online with rqt_graph
Setting dynamic parameters
Dealing with the unexpected
Visualizing nodes diagnostics
Plotting scalar data
Creating a time series plot with rqt_plot
Image visualization
Visualizing a single image
3D visualization
Visualizing data in a 3D world using rqt_rviz
The relationship between topics and frames
Visualizing frame transformations
Saving and playing back data
What is a bag file?
Recording data in a bag file with rosbag
Playing back a bag file
Inspecting all the topics and messages in a bag file
Using the rqt_gui and rqt plugins
Summary
The Navigation Stack - Robot Setups
The navigation stack in ROS
Creating transforms
Creating a broadcaster
Creating a listener
Watching the transformation tree
Publishing sensor information
Creating the laser node
Publishing odometry information
How Gazebo creates the odometry
Using Gazebo to create the odometry
Creating our own odometry
Creating a base controller
Creating our base controller
Creating a map with ROS
Saving the map using map_server
Loading the map using map_server
Summary
The Navigation Stack - Beyond Setups
Creating a package
Creating a robot configuration
Configuring the costmaps - global_costmap and local_costmap
Configuring the common parameters
Configuring the global costmap
Configuring the local costmap
Base local planner configuration
Creating a launch file for the navigation stack
Setting up rviz for the navigation stack
The 2D pose estimate
The 2D nav goal
The static map
The particle cloud
The robot's footprint
The local costmap
The global costmap
The global plan
The local plan
The planner plan
The current goal
Adaptive Monte Carlo Localization
Modifying parameters with rqt_reconfigure
Avoiding obstacles
Sending goals
Summary
Manipulation with MoveIt!
The MoveIt! architecture
Motion planning
The planning scene
World geometry monitor
Kinematics
Collision checking
Integrating an arm in MoveIt!
What's in the box?
Generating a MoveIt! package with the Setup Assistant
Integration into RViz
Integration into Gazebo or a real robotic arm
Simple motion planning
Planning a single goal
Planning a random target
Planning a predefined group state
Displaying the target motion
Motion planning with collisions
Adding objects to the planning scene
Removing objects from the planning scene
Motion planning with point clouds
The pick and place task
The planning scene
The target object to grasp
The support surface
Perception
Grasping
The pickup action
The place action
The demo mode
Simulation in Gazebo
Summary
Using Sensors and Actuators with ROS
Using a joystick or a gamepad
How does joy_node send joystick movements?
Using joystick data to move our robot model
Using Arduino to add sensors and actuators
Creating an example program to use Arduino
Robot platform controlled by ROS and Arduino
Connecting your robot motors to ROS using Arduino
Connecting encoders to your robot
Controlling the wheel velocity
Using a low-cost IMU - 9 degrees of freedom
Installing Razor IMU ROS library
How does Razor send data in ROS?
Creating an ROS node to use data from the 9DoF sensor in our robot
Using robot localization to fuse sensor data in your robot
Using the IMU - Xsens MTi
How does Xsens send data in ROS?
Using a GPS system
How GPS sends messages
Creating an example project to use GPS
Using a laser rangefinder - Hokuyo URG-04lx
Understanding how the laser sends data in ROS
Accessing the laser data and modifying it
Creating a launch file
Using the Kinect sensor to view objects in 3D
How does Kinect send data from the sensors, and how do we see it?
Creating an example to use Kinect
Using servomotors - Dynamixel
How does Dynamixel send and receive commands for the movements?
Creating an example to use the servomotor
Summary
Computer Vision
ROS camera drivers support
FireWire IEEE1394 cameras
USB cameras
Making your own USB camera driver with OpenCV
ROS images
Publishing images with ImageTransport
OpenCV in ROS
Installing OpenCV 3.0
Using OpenCV in ROS
Visualizing the camera input images with rqt_image_view
Camera calibration
How to calibrate a camera
Stereo calibration
The ROS image pipeline
Image pipeline for stereo cameras
ROS packages useful for Computer Vision tasks
Visual odometry
Using visual odometry with viso2
Camera pose calibration
Running the viso2 online demo
Performing visual odometry with viso2 with a stereo camera
Performing visual odometry with an RGBD camera
Installing fovis
Using fovis with the Kinect RGBD camera
Computing the homography of two images
Summary
Point Clouds
Understanding the PCL
Different point cloud types
Algorithms in PCL
The PCL interface for ROS
My first PCL program
Creating point clouds
Loading and saving point clouds to the disk
Visualizing point clouds
Filtering and downsampling
Registration and matching
Partitioning point clouds
Segmentation
Summary
Mastering ROS for Robotics 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 robot 3D 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
Conversion of xacro to URDF
Creating the robot description for a seven DOF robot manipulator
Arm specification
Type of joints
Explaining the xacro model of 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 the 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
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
Working with Pluginlib, Nodelets, and Gazebo Plugins
Understanding pluginlib
Creating plugins for the calculator application using pluginlib
Working with pluginlib_calculator package
Step 1 - Creating calculator_base header file
Step 2 - Creating calculator_plugins header file
Step 3 - Exporting plugins using calculator_plugins.cpp
Step 4 - Implementing plugin loader using calculator_loader.cpp
Step 5 - Creating plugin description file: calculator_plugins.xml
Step 6 - Registering 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 nodelet
Step 2 - Creating hello_world.cpp nodelet
Step 3 - Explanation of hello_world.cpp
Step 4 - Creating 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 pr2_mechanism packages
pr2_controller_interface package
Initialization of the controller
Starting the ROS controller
Updating ROS controller
Stopping the controller
pr2_controller_manager
Writing a basic real-time joint controller in ROS
Step 1 – Creating controller package
Step 2 – Creating controller header file
Step 3 – Creating controller source file
Step 4 – Explanation of the controller source file
Step 5 – Creating plugin description file
Step 6 – Updating package.xml
Step 7 – Updating CMakeLists.txt
Step 8 – Building controller
Step 9 – Writing controller configuration file
Step 10 – Writing launch file for the controller
Step 11 – Running controller along with PR2 simulation in Gazebo
Understanding ros_control packages
Understanding ROS visualization tool (RViz) and its plugins
Displays panel
RViz toolbar
Views
Time panel
Dockable panels
Writing a RViz plugin for teleoperation
Methodology of building RViz plugin
Step 1 – Creating RViz plugin package
Step 2 – Creating RViz plugin header file
Step 3 – Creating RViz plugin definition
Step 4 – Creating plugin description file
Step 5 – Adding 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 14.04/15.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-C1 and Raspberry Pi 2
How to install an OS image to Odroid-C1 and Raspberry Pi 2
Installation in Windows
Installation in Linux
Connecting to Odroid-C1 and Raspberry Pi 2 from a PC
Configuring an Ethernet hotspot for Odroid-C1 and Raspberry Pi 2
Installing Wiring Pi on Odroid-C1
Installing Wiring Pi on Raspberry Pi 2
Blinking LED using ROS on Odroid-C1 and Raspberry Pi 2
Push button + blink LED using ROS on Odroid-C1 and Raspberry Pi 2
Running LED blink in Odroid-C1
Running button handling and LED blink in Odroid-C1
Running LED blink 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 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-ROS images using cv_bridge
Finding edges on the image
Visualizing raw and edge detected image
Step 4: Editing the CMakeLists.txt file
Step 5: Building and running example
Interfacing Kinect and Asus Xtion Pro in ROS
Interfacing Intel Real Sense camera with ROS
Working with point cloud to laser scan package
Interfacing Hokuyo Laser in ROS
Interfacing Velodyne LIDAR in ROS
Working with point cloud data
How to publish a point cloud
How to subscribe and process the point cloud
Writing a point cloud data to a PCD file
Read and publish point cloud from a PCD file
Streaming webcam from Odroid using ROS
Questions
Summary
Building and Interfacing Differential Drive Mobile Robot Hardware in ROS
Introduction 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 robot stand alone 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, local plan, and 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 in robot arm using MoveIt!
Adding a collision object in MoveIt!
Removing a collision object from the  planning scene
Checking self collision using MoveIt! APIs
Working with perception using MoveIt! and Gazebo
Grasping using MoveIt!
Working with robot pick and place task using MoveIt!
Creating Grasp Table and Grasp Object in MoveIt!
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 seven DOF Dynamixel based robotic arm to ROS MoveIt!
Creating a controller package for COOL arm robot
MoveIt! configuration of the COOL Arm
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 URDF for an industrial robot
Creating MoveIt! configuration for an industrial robot
Updating the MoveIt! configuration files
Testing the MoveIt! configuration
Installing ROS-Industrial packages of universal robotic arm
Installing the ROS interface of universal robots
Understanding the Moveit! configuration of a universal robotic arm
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 MoveIt! IKFast plugin
Creating the MoveIt! IKFast plugin for the ABB-IRB6640 robot
Prerequisites for developing the MoveIt! IKFast plugin
OpenRave and IK Fast Module
MoveIt! IK Fast
Installing MoveIt! IKFast package
Installing OpenRave on Ubuntu 14.04.3
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 Eclipse IDE on Ubuntu 14.04.3
Setting ROS development environment in Eclipse IDE
Global settings in Eclipse IDE
ROS compile script for Eclipse IDE
Adding ROS Catkin package to Eclipse
Adding run configurations to run ROS nodes in Eclipse
Best practices in ROS
ROS C++ coding style guide
Standard naming conventions used in ROS
Code license agreement
ROS code formatting
ROS code documentation
Console output
Best practices in the ROS package
Important troubleshooting tips in ROS
Usage of roswtf
Questions
Summary
ROS Robotics Projects
Face Detection and Tracking Using ROS, OpenCV and Dynamixel Servos
Overview of the project
Hardware and software prerequisites
Installing dependent ROS packages
Installing the usb_cam ROS package
Creating a ROS workspace for dependencies
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
The 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 the nodes together
Fixing the bracket and setting up the circuit
The final run
Questions
Summary
Building a Siri-Like Chatbot in ROS
Social robots
Building social robots
Prerequisites
Getting started with AIML
AIML tags
The PyAIML interpreter
Installing PyAIML on Ubuntu 16.04 LTS
Playing with PyAIML
Loading multiple AIML files
Creating an AIML bot in ROS
The AIML ROS package
Installing the ROS sound_play package
Installing the dependencies of sound_play
Installing the sound_play ROS package
Creating the ros_aiml package
The aiml_server node
The AIML client node
The aiml_tts client node
The AIML speech recognition node
start_chat.launch
start_tts_chat.launch
start_speech_chat.launch
Questions
Summary
Controlling Embedded Boards Using ROS
Getting started with popular embedded boards
An introduction to Arduino boards
How to choose an Arduino board for your robot
Getting started with STM32 and TI Launchpads
The Tiva C Launchpad
Introducing the Raspberry Pi
How to choose a Raspberry Pi board for your robot
The Odroid board
Interfacing Arduino with ROS
Monitoring light using Arduino and ROS
Running ROS serial server on PC
Interfacing STM32 boards to ROS using mbed
Interfacing Tiva C Launchpad boards with ROS using Energia
Running ROS on Raspberry Pi and Odroid boards
Connecting Raspberry Pi and Odroid to PC
Controlling GPIO pins from ROS
Creating a ROS package for the blink demo
Running the LED blink demo on Raspberry Pi and Odroid
Questions
Summary
Teleoperate a Robot Using Hand Gestures
Teleoperating ROS Turtle using a keyboard
Teleoperating using hand gestures
Setting up the project
Interfacing the MPU-9250 with the Arduino and ROS
The Arduino-IMU interfacing code
Visualizing IMU TF in Rviz
Converting IMU data into twist messages
Integration and final run
Teleoperating using an Android phone
Questions
Summary
Object Detection and Recognition
Getting started with object detection and recognition
The find_object_2d package in ROS
Installing find_object_2d
Installing from source code
Running find_object_2d nodes using webcams
Running find_object_2d nodes using depth sensors
Getting started with 3D object recognition
Introduction to 3D object recognition packages in ROS
Installing ORK packages in ROS
Detecting and recognizing objects from 3D meshes
Training using 3D models of an object
Training from captured 3D models
Recognizing objects
Questions
Summary
Deep Learning Using ROS and TensorFlow
Introduction to deep learning and its applications
Deep learning for robotics
Deep learning libraries
Getting started with TensorFlow
Installing TensorFlow on Ubuntu 16.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 16.04 LTS
Introducing to SVM and its application in robotics
Implementing an SVM-ROS application
Questions
Summary
ROS on MATLAB and Android
Getting started with the ROS-MATLAB interface
Setting Robotics Toolbox in MATLAB
Basic ROS functions in MATLAB
Initializing a ROS network
Listing ROS nodes, topics, and messages
Communicating from MATLAB to a ROS network
Controlling a ROS robot from MATLAB
Designing the MATLAB GUI application
Explaining callbacks
Running the application
Getting started with Android and its ROS interface
Installing rosjava
Installing from the Ubuntu package manager
Installing from source code
Installing android-sdk from the Ubuntu package manager
Installing android-sdk from prebuilt binaries
Installing the ROS-Android interface
Playing with ROS-Android applications
Troubleshooting
Android-ROS publisher-subscriber application
The teleop application
The ROS Android camera application
Making the Android device the ROS master
Code walkthrough
Creating basic applications using the ROS-Android interface
Troubleshooting tips
Questions
Summary
Building an Autonomous Mobile Robot
Robot specification and design overview
Designing and selecting the motors and wheels for the robot
Computing motor torque
Calculation of motor RPM
Design summary
Building 2D and 3D models of the robot body
The base plate
The pole and tube design
The motor, wheel, and motor clamp design
The caster wheel design
Middle plate and top plate design
The top plate
3D modeling of the robot
Simulating the robot model in Gazebo
Mathematical model of a differential drive robot
Simulating Chefbot
Building the URDF model of Chefbot
Inserting 3D CAD parts into URDF as links
Inserting Gazebo controllers into URDF
Running the simulation
Mapping and localization
Designing and building actual robot hardware
Motor and motor driver
Motor encoders
Tiva C Launchpad
Ultrasonic sensor
OpenNI depth sensor
Intel NUC
Interfacing sensors and motors with the Launchpad
Programming the Tiva C Launchpad
Interfacing robot hardware with ROS
Running Chefbot ROS driver nodes
Gmapping and localization in Chefbot
Questions
Summary
Creating a Self-Driving Car Using ROS
Getting started with self-driving cars
History of autonomous vehicles
Levels of autonomy
Functional block diagram 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)
Delphi radar
On-board computer
Software block diagram of self-driving cars
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
MATLAB ADAS toolbox
Questions
Summary
Teleoperating a Robot Using a VR Headset and Leap Motion
Getting started with a VR headset and Leap Motion
Project prerequisites
Design and working of the project
Installing the Leap Motion SDK on Ubuntu 14.04.5
Visualizing 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
Working with TurtleBot simulation in VR
Troubleshooting the ROS-VR application
Integrating ROS-VR application and Leap Motion teleoperation
Questions
Summary
Controlling Your Robots over the Web
Getting started with ROS web packages
rosbridge_suite
roslibjs, ros2djs, and ros3djs
The tf2_web_republisher package
Setting up ROS web packages on ROS Kinetic
Installing rosbridge_suite
Setting up rosbridge client libraries
Installing tf2_web_republisher on ROS Kinetic
Teleoperating and visualizing a robot on a web browser
Working of the project
Connecting to rosbridge_server
Initializing the teleop
Creating a 3D viewer inside a web browser
Creating a TF client
Creating a URDF client
Creating text input
Running the web teleop application
Controlling robot joints from a web browser
Installing joint_state_publisher_js
Including the joint state publisher module
Creating the joint state publisher object
Creating an HTML division for sliders
Running the web-based joint state publisher
Prerequisites
Installing prerequisites
Explaining the code
Running the robot surveillance application
Web-based speech-controlled robot
Prerequisites
Enabling speech recognition in the web application
Running a speech-controlled robot application
Questions
Summary
Bibliography
Other Books You May Enjoy
Leave a review - let other readers know what you think
ROS Programming: Building Powerful Robots Design, build, and simulate complex robots using the Robot Operating System A learning path in three sections BIRMINGHAM - MUMBAI
ROS Programming: Building Powerful Robots Copyright © 2018 Packt Publishing All rights reserved. No part of this learning path may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this learning path to ensure the accuracy of the information presented. However, the information contained in this learning path is sold without warranty, either express or implied. Neither the author(s), nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this learning path. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this learning path by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. Content Development Editors: Nithin George Varghese Graphics: Kirk D'penha Production Coordinator: Shantanu Zagade Published on: March 2018 Production reference: 1070318 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78862-743-6 www.packtpub.com
mapt.io Mapt is an online digital library that gives you full access to over 5,000 books and videos, as well as industry leading tools to help you plan your personal development and advance your career. For more information, please visit our website.
Why subscribe? Spend less time learning and more time coding with practical eBooks and Videos from over4,000 industry professionals Improve your learning with Skill Plans built especially for you Get a free eBook or video every month Mapt is fully searchable Copy and paste, print, and bookmark content
PacktPub.com Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us atservice@packtpub.com for more details. At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks.
Table of Contents Title page Copyright and Credits ROS Programming: Building Powerful Robots Packt Upsell Why subscribe? PacktPub.com Preface Who this learning path is for What this learning path covers To get the most out of this learning path Download the example code files Conventions used Get in touch Reviews
分享到:
收藏