A Gentle Introduction to ROS Jason M. O’Kane Back matter

A Gentle Introduction to ROS
Back matter
Jason M. O’Kane
Jason M. O’Kane
University of South Carolina
Department of Computer Science and Engineering
315 Main Street
Columbia, SC 29208
http://www.cse.sc.edu/~jokane
©2014, Jason Matthew O’Kane. All rights reserved.
This is version 2.1.1(3e3d9c5), generated on November 20, 2014.
Typeset by the author using LATEX and memoir.cls.
ISBN 978-14-92143-23-9
Index
ˆ[[0m, 68

---, 28
/, 23, 50, 78, 79, 93, 108, 114, see also names,
, 7, 8, 12–20, 24–26, 28, 32, 33, 40, 41,
45, 47, 50, 53, 54, 58–60, 64, 69,
73, 74, 81, 84, 87, 89, 97, 99, 103,
107, 108, 121–123, 125, 126, 134,
135, 137, 139
∼, 80, 113, 114, 129
global
::, 49
:=, 94, 113
<<, 63
[], 31
&, 58
¹, 7, 8, 12, 13, 15, 17, 20–23, 31, 32, 34,
account configuration, 14–15
add_executable, 45
advertise, 49, 50, 58, 129
agitr, 41, 42, 83
angular, 30, 95
anon, 88
anon.cpp, 82
answers.ros.org, 7
apt, 12
apt-get, 13, 18
install, 13
update, 12
apt-key, 12
39, 41–43, 50, 52, 57, 58, 64, 68,
70, 73, 74, 76, 81, 84, 85, 87, 90,
91, 93, 102, 103, 106, 107, 109,
111, 114, 122, 126, 129
_, 113
Í, 1, 3–5, 7–9, 11–15, 17, 19, 21–24, 27,
30–32, 37, 39, 40, 42, 44, 47, 49–
51, 53, 55, 57, 59, 61, 64, 68–70,
72, 77, 83, 87, 88, 90, 93, 94, 97,
99, 102, 105, 109, 110, 113, 114,
118, 123, 126, 131, 133, 139, 142,
143
145
I NDEX
arg, 99–103
args, 139
arrays, 31
audience, 5
bag files, 133–135
API, 139
compression, 134
example, 135–138
inspecting, 134
recording, 133, 135
replaying, 134, 136
bash, 5, 15, 32, 107
.bashrc, 15
bool, 30, 110
box turtle, 8
build, 45
build systems, 9
build_depend, 44, 127
built-in data type, 30
C Turtle, 8
C++, 4, 5, 9, 31, 41, 44, 47, 49, 51, 58, 62–
67, 73, 74, 80, 81, 96, 110–112,
121–123, 125, 139
call, 125–127
callback functions, 55, 127, 130, 142
allowing, 59, 130
timers, 131
catkin, 9, 17, 18, 40, 41, 44, 47
catkin_create_pkg, 40, 41, 45
catkin_make, 45–47, 54, 127
/clear, 109, 110
CMake, 40, 45
CMAKE_PREFIX_PATH, 18
CMakeLists.txt, 40, 41, 44–46, 54, 127
editing, 45
cmd_vel, 26, 78, 79, 122
146
coding style, 142
color_sensor, 122
communication
many-to-many, 36
one-to-one, 117
complexity via composition, 2, 36, 80
coordinate frames, 142
count.cpp, 63, 64, 67, 70
Ctrl-C, 20, 24, 52, 85, 134
data types, 29, see also messages, types,
see also services, types
deb, 14, 17
DEBUG, 61, 62, 64, 68, 73, 74, 76
Debug, 76
default, 100, 101
description, 41
devel, 45
/diagnostics, 71
/diagnostics_agg, 71
diamondback, 8
double, 51, 63, 66, 110
doublesim.launch, 91, 92, 97
draw_square, 135–138
dynamic_reconfigure, 109
electric, 8
eog, 19
ERROR, 61, 62, 68, 74, 88
Error, 76
example.launch, 83, 84, 90
executables, adding to package, 45
export, 14, 80
fast_yellow.launch, 115
FATAL, 61, 62, 68, 74, 88
Fatal, 76
${file}, 69
file, 97
Index
find, 97, 114
find_package, 44, 45, 54, 127
float64, 51
frame_id, 143
fuerte, 8, 18
${function}, 69
function pointers, 58, 130
Gazebo, 143
gazebo/ModelState, 34
gdb, 90
geometry_msgs, 8, 54
::Twist, 49, 51
geometry_msgs/Pose, 34
geometry_msgs/Twist, 9, 30, 32, 49, 51
geometry_msgs/Twist.h, 54
geometry_msgs/Vector3, 30
get_loggers, 119
graph resource names, see names
graph resources, 77
groovy, 8, 9, 18, 19
group, 100–103
hello.cpp, 41–47, 49, 54
compiling, 44–47
executing, 47
hydro, 8
IDE, 4
if, 101, 103
#include, 49, 56, 123
include, 93, 97, 98, 100–102, 114
indigo, 8, 106
INFO, 61, 62, 64, 65, 68, 73, 74, 88
Info, 76
init, 42
int, 63, 110
int8, 30
jade, 8
launch, 86, 94
launch files, 83–104
arguments, 99–102
accessing, 101
declaring, 100
includes, 101
values, 100
bags, 139
creating, 86–90
executing, 83–85
groups, 102–103, 113
includes, 97–99
nodes, 87, 113
directing output, 88
name, 87
output, 69, 103
pkg, 87
requiring, 89
respawning, 89
separate window, 90
type, 87
remappings, 93–95
root element, 86
rosparam, 114
syntax, 86–90
terminating, 85
verbosity, 85
launch-prefix, 90
${line}, 69
linear, 9, 30, 95
log files, 72
finding, 72
roslaunch, 88
purging, 72
log messages, 61–76
enabling and disabling, 73–76
147
I NDEX
from C++, 75
from command line, 74
from GUI, 75
example, 62
formatting, 68
generating, 62–67
one time, 65
simple, 62
throttled, 65
viewing, 67–73
in log files, 72–73
rosout, 69–71
on the console, 68–69
log4cxx, 64, 74, 75
logger levels, 73–76, see also severity levels
maintainer, 41
manifest, 40
master, see roscore
max_vel, 111, 114, 115
${message}, 69
messages, 24
objects, 51
publishing, 47–54
queues, 50
subscribing, 55–60
types, 29, 33, 49
arrays, 31, 51
constants, 31
creating, 142
fields, 30
nesting, 30
metapackage, 19
ModelState, 34
multiple computers, 2, 141
__name, 23, 34, 42
148
name, 92
names, 77–82
anonymous, 81–82, 87, 136
base, 78
collisions, 34, 80, 119, 122
global, 77–78
private, 80–81, 113
relative, 50, 78–80
purpose, 80
resolving, 79
remappings, 93–95
namespaces, 23, 78
global, 23, 78
launching in, 91–93
setting default, 79, see also names, relative
nice, 90
${node}, 69
node, 86, 87, 89–92, 94, 102, 103, 113, 114,
139
NodeHandle, 43, 123, 129, 130
nodelets, 50
nodes, 20–24
dead, 24
inspecting, 23
killing, 23
listing, 22, 23
names, 23, 34, 42, 52, 87
services, 120
starting, 21
__ns, 80
ns, 79, 91, 93, 98, 102, 103
once.cpp, 66
/opt/ros/indigo, 18
ostream, 63
out-of-source compilation, 18
Index
package authentication key, 12
package.xml, 17, 40–42, 44, 54, 127
editing, 41
packages, 17–20
creating, 40
dependencies, 34, 44, 54, 127
directories, 17, 86
finding, 18
listing, 17
manifest, see package.xml
param, 87, 113, 114
parameters, 105–115
files, 107, 114
in C++, 110–113
in launch files, 113–115
setting, 113
on the command line, 105–108
listing, 105
querying, 106
setting, 107
private names, 113
server, 105, 106
play, 139
polling, 67
pose, 78, 122
poses, 55
printf, 64, 65
private, 81
publish, 50, 51
publishing, see messages
publishing loops, 52–53
pubvel.cpp, 47–49, 51–55, 60, 111, 112,
135
compiling, 54
executing, 54
pubvel_with_max.cpp, 112
pubvel_toggle.cpp, 128, 130, 131
pubvel_with_max.cpp, 113, 114
pushing down, 91
Qt, 24
record, 139
redirection, 68
remap, 87, 93–95, 99
repository, 11
Request, 125, 127, 129
required, 89, 90
respawn, 89, 90
Response, 125, 126, 129
reverse.launch, 98
reverse_cmd_vel, 96, 97
reversed.launch, 99
Robot Operating System (ROS), 1–143
ROS
distributions, 8
documentation, 5, 7–9
installing, 11–14
limitations, 4
motivation, 1–4
pronunciation, 1
uniqueness, 3
versions, see also indigo, see ROS, distributions
ros
::NodeHandle, 42, 49, 123, 129
::advertiseService, 129
::Publisher, 49–51, 57, 77, 91, 125
::Rate, 53, 131, 142
::ServiceClient, 123, 125, 126
::ServiceServer, 127, 130
::Subscriber, 57–59, 91, 127, 130
::Timer, 142
::console
::notifyLoggerLevelsChanged, 76
149
I NDEX
::init, 42, 45, 52, 77, 80, 81, 87, 113,
123
::init_options
::AnonymousName, 81
::ok, 52
::param
::get, 99, 110, 111
::getCached, 110
::set, 110, 113
::shutdown, 52
::spin, 57, 59, 130, 131
::spinOnce, 57, 59, 130, 131
ros-indigo-desktop, 13
ros-indigo-ros-base, 13
ros-indigo-turtlesim, 11
ros-users, 8
ros.key, 12
ros/ros.h, 42, 45
ROS_DEBUG_STREAM, 73
ROS_DISTRO, 15
ROS_ERROR_STREAM, 126
ROS_INFO_STREAM, 43, 47, 52, 55,
56, 60, 61, 73
ROS_PACKAGE_PATH, 15
ROS_DEBUG, 64
ROS_DEBUG_STREAM, 62, 73
. . . _ONCE, 65
. . . _THROTTLE, 65
ROS_ERROR, 64
ROS_ERROR_STREAM, 62
. . . _ONCE, 65
. . . _THROTTLE, 65
ROS_FATAL, 64
ROS_FATAL_STREAM, 62
. . . _ONCE, 65
. . . _THROTTLE, 65
ROS_INFO, 64
ROS_INFO_STREAM, 62
150
. . . _ONCE, 65
. . . _THROTTLE, 65
ROS_WARN, 64
ROS_WARN_STREAM, 62
. . . _ONCE, 65
. . . _THROTTLE, 65
rosbag, 3, 33, 131, 133–140
info, 134
play, 134, 136, 137
record, 133, 135
-a, 134
rosbash, 15
rosbuild, 9
roscd, 15, 18, 19
rosclean
check, 72
purge, 73
ROSCONSOLE_FORMAT, 68
roscore, 16, 20–22, 34, 47, 72, 83, 84, 106,
108, 136
roscpp, 43, 44, 46, 54
rosdep, 13, 14, 37
init, 13, 14
update, 14
/rosdistro, 106
rosgraph_msgs/Log, 69, 70
rosinstall, 14
roslaunch, 21, 69, 72, 81–86, 88–90, 92,
97–99, 101, 106, 113, 139
--screen, 69, 88
-v, 85
rosls, 15, 18, 19
rosmsg, 121
show, 30, 51, 56
rosnode
cleanup, 24
info, 23, 55, 77, 119
kill, 23, 52
Index
list, 22, 23
/rosout, 120
rosout, 22, 25, 68, 69, 71, 72, 120
rosout.log, 72
rosout_agg, 70, 71
rospack, 18, 47
find, 18
list, 17
rosparam, 99, 107
dump, 107, 114
get, 72, 106, 109
list, 105, 108
load, 108, 114, 115
set, 107, 111, 113
rosrun, 21–23, 34, 42, 47, 54, 84, 87, 88,
90, 93, 95, 139
rosservice, 74, 75, 121
call, 74, 109, 122, 130, 131
info, 120
list, 118, 119
node, 120
rossrv, 121
show, 121, 122, 125
rostopic, 31, 121
bw, 28
echo, 28, 33, 69, 77
hz, 28, 53
info, 28, 56
list, 27, 50, 55
pub, 31, 33
-1 (dash one), 33
-l (dash ell), 33
roswtf, 37
rqt_console, 69, 70, 73
rqt_graph, 24–27, 35, 50, 55, 135
rqt_logger_level, 75
run_depend, 44, 127
run_id, 72, 78, 88
rviz, 142
sensor_msgs/NavSatFix, 31
ServiceClient, 125
serviceClient, 123
services, 36, 117–132
calling, 125
clients, writing, 123–127
from the command line, 118–122
listing, 118, 119
request and response objects, 123, 125
servers, 129
in C++, 127–131
types, 118
creating, 142
finding, 120
inspecting, 121
set_bg_color.cpp, 111
set_logger_level, 74, 75, 78, 119
set_pen, 122
setup.bash, 14, 15, 18, 46, 47
${severity}, 69
severity levels, 61–62
simulation, 3, 143
sleep, 53, 131
software reuse, 2
/spawn, 119, 120
spawn_turtle.cpp, 124
src, 40, 41
stack, 19
static, 65, 67
std
::boolalpha, 64
::cout, 22, 63
::endl, 65
::fixed, 64
::setprecision, 64
::string, 110
151
I NDEX
::stringstream, 64
std_msgs/Header, 31
std_srvs/Empty, 121, 129
stdbuf, 68
string, 30
subpose.cpp, 56, 60, 84, 88
subscribing, see messages
sudo, 12, 14
Tab, 33
tab completion, 18, 32, 33
target_link_libraries, 45
teleop_turtle, 23, 25, 26, 28, 78, 95
teleoperation, 21
teleport_absolute, 122
template parameter, 49
testing, 3
tf, 142, 143
throttle.cpp, 67
${time}, 69
toggle_forward, 127, 130
topics, 27–34
transformations, 143
triplesim.launch, 100
turtle1, 27, 78, 79, 122
/cmd_vel, 25, 26, 35, 36, 79, 91, 95,
135, 136
/cmd_vel_reversed, 95
/color_sensor, 91
/pose, 55, 91, 94, 135, 137, 138
turtle_teleop_key, 16, 17, 21, 36, 89, 90,
95
/turtlesim, 25
turtlesim, 8, 11, 13, 15–17, 19–21, 23–27,
34–36, 47, 48, 54–56, 60, 62, 78,
83, 84, 89, 91–99, 108–111, 114,
118–120, 122, 127, 136–138, 141,
142
152
::Pose, 56
::Spawn, 123
background color
reading, 109
setting, 109
cmd_vel, 77
draw_square, 135
installing, 13
multiple instances, 34–36
parameters, 108–110
pose, 77
reset, 121, 135, 138
reversing directions, 95
starting, 16
teleport_absolute, 122
teleport_relative, 122
turtle_teleop_key, 90
turtlesim/Color, 29, 30, 33
turtlesim/Pose, 34, 60
turtlesim/Spawn, 120
turtlesim/Velocity, 9
turtlesim_node, 17, 21, 22, 26, 36, 55,
60, 62, 89, 91, 95, 108, 109, 121,
130, 131, 137
tutorials, 5, 7
Ubuntu, 5, 11
universally-unique identifier (UUID), 72
unless, 103
usleep, 53
valgrind, 90
value, 100–102
void, 121
WARN, 61, 62, 68, 74
Warn, 76
workspaces, 39–41
building, 45
Index
creating, 39
directories, 39
X, 36
XML, 83
xterm, 90
YAML, 32
153
Acknowledgments
The author is thankful to the friends, colleagues, and students that have provided feedback and advice about this project.
Students, too numerous to name, from the author’s csce574 courses at the
University of South Carolina provided priceless feedback on early versions of
this book. Michael Reynolds, Laura Boccanfuso, G. vd. Hoorn, and Nik Elson helped the author to correct many mistakes in the text. The author is, of
course, to blame for any remaining errors.
The author is also grateful to the University of South Carolina for providing
a supportive and encouraging environment, and to the U. S. National Science
Foundation for a grant that helped to support the author’s time for this project.
Any opinions, findings, and conclusions or recommendations expressed in
this material are those of the author and do not necessarily reflect the views
of the National Science Foundation.
155