Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Preface
Who Should Read This Book?
Who Should Not Read This Book?
What You’ll Learn
Prerequisites
Conventions Used in This Book
Using Code Examples
Safari® Books Online
How to Contact Us
Acknowledgments
I. Fundamentals
1. Introduction
Brief History
Philosophy
Installation
Summary
2. Preliminaries
The ROS Graph
roscore
catkin, Workspaces, and ROS Packages
catkin
Workspaces
ROS Packages
rosrun
Names, Namespaces, and Remapping
roslaunch
The Tab Key
tf: Coordinate Transforms
Poses, Positions, and Orientations
tf
Summary
3. Topics
Publishing to a Topic
Checking That Everything Works as Expected
Subscribing to a Topic
Checking That Everything Works as Expected
Latched Topics
Defining Your Own Message Types
Defining a New Message
Using Your New Message
When Should You Make a New Message Type?
Mixing Publishers and Subscribers
Summary
4. Services
Defining a Service
Implementing a Service
Checking That Everything Works as Expected
Other Ways of Returning Values from a Service
Using a Service
Checking That Everything Works as Expected
Other Ways to Call Services
Summary
5. Actions
Defining an Action
Implementing a Basic Action Server
Checking That Everything Works as Expected
Using an Action
Checking That Everything Works as Expected
Implementing a More Sophisticated Action Server
Using the More Sophisticated Action
Checking That Everything Works as Expected
Summary
6. Robots and Simulators
Subsystems
Actuation: Mobile Platform
Actuation: Manipulator Arm
Sensors
Visual cameras
Depth cameras
Laser scanners
Shaft encoders
Computation
Complete Robots
PR2
Fetch
Robonaut 2
TurtleBot
Simulators
Stage
Gazebo
Other Simulators
Summary
7. Wander-bot
Creating a Package
Reading Sensor Data
Sensing and Actuation: Wander-bot!
Summary
II. Moving Around Using ROS
8. Teleop-bot
Development Pattern
Keyboard Driver
Motion Generator
Parameter Server
Velocity Ramps
Let’s Drive!
rviz
Summary
9. Building Maps of the World
Maps in ROS
Recording Data with rosbag
Building Maps
Starting a Map Server and Looking at a Map
Summary
10. Navigating About the World
Localizing the Robot in a Map
Getting a Good Initial Localization
What’s Going on Behind the Scenes
Tips for Setting a Better Initial Pose
Using the ROS Navigation Stack
The ROS Navigation Stack
Navigating in rviz
Seeing What’s Going On
Navigating in Code
Summary
11. Chess-bot
Joints, Links, and Kinematic Chains
Joint Space
Inverse Kinematics
The Key to Success
Installing and Running a Simulated R2
Moving R2 from the Command Line
Moving R2 Around a Chessboard
Operating the Hand
Modeling a Chessboard
Playing Back a Famous Chess Game
Summary
III. Perception and Behavior
12. Follow-bot
Acquiring Images
Detecting the Line
Following the Line
Summary
13. On Patrol
Simple Patrolling
State Machines
State Machines in ROS
Defining State Machines with smach
A Slightly More Relevant Example
Defining State Machines Procedurally
Patrolling with State Machines
A Better Way to Patrol
Summary
14. Stockroom-bot
Stockroom Simulation
Driving to Bins
Picking Up the Item
Summary
IV. Bringing Your Own Stuff into ROS
15. Your Own Sensors and Actuators
Adding Your Own Sensors
A (Fake) Sensor
Designing the ROS Wrapper
Design 1: Periodic Measurements over a Topic
Design 2: Streaming Measurements over a Topic
Design 3: Streaming Measurements Published at a Fixed Rate
Design 4: Sensor Measurements on Demand
Adding Your Own Actuators
A (Fake) Actuator
Designing the ROS Wrapper
Design 1: Continuous Actuation
Design 2: Infrequent, Instantaneous Actuation
Design 3: Infrequent, Extended Actuation
Summary
16. Your Own Mobile Robot
TortoiseBot
ROS Message Interface
Hardware Driver
Modeling the Robot: URDF
Simulation in Gazebo
Summary
17. Your Own Mobile Robot: Part 2
Verifying Transforms
Adding a Laser Sensor
Configuring the Navigation Stack
Using rviz to Localize and Command a Navigating Robot
Summary
18. Your Own Robot Arm
CougarBot
ROS Message Interface
Hardware Driver
Modeling the Robot: URDF
Simulation in Gazebo
Verifying Transforms
Configuring MoveIt
Using rviz to Send Goals
Summary
19. Adding a Software Library
Make Your Robot Talk: pyttsx
Action Interface
Parameters
Event Loops
The Speech Server
The Speech Client
Checking That Everything Works as Expected
Summary
V. Tips and Tricks
20. Tools
The Master and Friends: roscore
Parameters: rosparam
Navigating the Filesystem: roscd
Starting a Node: rosrun
Starting Many Nodes: roslaunch
Testing a Many-Node System: rostest
Introspection: rosnode, rostopic, rosmsg, rosservice, and rossrv
Summary
21. Debugging Robot Behavior
Log Messages: /rosout and rqt_console
Generating Log Messages: /rosout
Logger Levels
Reading Log Messages: rqt_console
/rosout Versus /rosout_agg
Nodes, Topics, and Connections: rqt_graph and rosnode
Visualizing the Graph: rqt_graph
Problem: Mismatched Topic Names
Problem: Mismatched Topic Types and/or Checksums
Problem: Incorrect Network Settings
Sensor Fusion: rviz
Plotting Data: rqt_plot
Data Logging and Analysis: rosbag and rqt_bag
Logging and Playing Back Data: rosbag
Visualizing Bags: rqt_bag
Analyzing ROS Bags with Other Tools: rostopic echo -b
Summary
22. The ROS Community: Online Resources
Etiquette
The ROS Wiki
ROS Answers
Trackers (Bugs and Feature Requests)
Mailing Lists and Special Interest Groups
Finding and Sharing Code
Summary
23. Using C++ in ROS
When Should You Use C (or Some Other Language)?
Building C++ with catkin
package.xml
CMakeLists.txt
catkin_make
Translating from Python to C++ (and Back Again)
A Simple Node
Topics
Services
Summary
Index
← Prev
Back
Next →
← Prev
Back
Next →