IEEE Robotics & Automation Magazine - December 2014 - 14

ros Topics

ROS Topics: Capabilities
By William Woodall, Marcus Liebhardt, Daniel Stonier, and Jonathan Binney

O

ne of the challenges of robot
software systems is that they
typically have a large number
of components that interact
with each other. A single robot may
have processes that are doing path planning, obstacle avoidance, manipulation,
sensor processing, and so on. Starting,
stopping, and monitoring these processes to make sure that the right set is
running to accomplish the robot's current task is a challenge. The robot operating system (ROS) "capabilities"
package provides a systematic way of
doing this. This article describes how
capabilities work and how they can be
used in typical robot applications.
ROS provides operating-system-like
features that allow robot developers to
build complex and intelligent robots more
efficiently. ROS provides communications,
development tools,
community infraROS provides
structure, and imoperating-system-like plementations of
common robot
features that allow
functionality. ROS
typically manifests
robot developers to
as a group of loosebuild complex and
ly coupled programs that, when
intelligent robots
run and configmore efficiently.
ured together,
make an entire
robot software system. To help robot developers manage these often complex
groups of programs and configurations,
ROS provides a tool called roslaunch. DeDigital Object Identifier 10.1109/MRA.2014.2360622
Date of publication: 19 December 2014

14

*

IEEE ROBOTICS & AUTOMATION MAGAZINE

*

velopers use roslaunch by defining XML
documents that describe what programs
to run and how those programs should be
connected through configuration.
Historically, one of the issues with
roslaunch files is that they are monolithic. Although roslaunch files can be
written to include other roslaunch files
to compose a larger system, developers
usually end up with several launch files
that they must run to get the robot running. One common solution to this is to
have a single master launch file that just
aggregates all of the robot's functionality, but the issue with this is that the single master launch file is not dynamic
enough for many use cases.
To understand this better, imagine a
robot that has many sensors, some of
which are needed for each specific application. This is analogous to the idea of
applications on a smartphone. Smartphones have many capabilities, but most
applications only use a few at a time.
Similarly, applications for robots may
only require a few of the available capabilities of the robot to function. Also, like
smartphones, there is usually a benefit in
terms of battery life to only running parts
of the robot software system when they
are needed. For example, running the robot's navigation system may not be required while idle or being remotely
controlled. To do this, you need to capture what constitutes the navigation system in the robot's stack of software and
what applications need the navigation
system. This kind of information is what
the new capabilities system (see http://
wiki.ros.org/capabilities) in ROS is designed to capture.

December 2014

How Capabilities Work
Capabilities are defined in terms of interfaces and interface providers.
The interface, which describes a capability, is defined in terms of ROS
primitives such as topics, services, and
parameters. The capability's interface is
the common ground to which both the
robot application developers and robot
developers adhere. The robot application developers will build on these interfaces to create more sophisticated
robot applications.
The robot developers, people who
set up a robot to implement capability
interfaces, will create interface providers for each capability their robot implements. An interface provider
consists of details about the implementation of a particular capability for a
particular robot. These details include a
launch file that implements that capability interface for that robot. This way
a capability is defined by an interface
but requires an implementation that is
defined in an interface provider to be
executed. This allows users who are
trying to build dynamically configured
robots to define the pieces of the robot
software stack separately and compose
them in different ways, depending on
the application.
To orchestrate this, the new capabilities system in ROS comes with a
capability server that is always running on the robot and allows applications to use capabilities when they are
started. When a capability is in use,
the capability server will automatically
execute that capability's associated
launch file. This effectively replaces


http://http:// http://wiki.ros.org/capabilities

Table of Contents for the Digital Edition of IEEE Robotics & Automation Magazine - December 2014

IEEE Robotics & Automation Magazine - December 2014 - Cover1
IEEE Robotics & Automation Magazine - December 2014 - Cover2
IEEE Robotics & Automation Magazine - December 2014 - 1
IEEE Robotics & Automation Magazine - December 2014 - 2
IEEE Robotics & Automation Magazine - December 2014 - 3
IEEE Robotics & Automation Magazine - December 2014 - 4
IEEE Robotics & Automation Magazine - December 2014 - 5
IEEE Robotics & Automation Magazine - December 2014 - 6
IEEE Robotics & Automation Magazine - December 2014 - 7
IEEE Robotics & Automation Magazine - December 2014 - 8
IEEE Robotics & Automation Magazine - December 2014 - 9
IEEE Robotics & Automation Magazine - December 2014 - 10
IEEE Robotics & Automation Magazine - December 2014 - 11
IEEE Robotics & Automation Magazine - December 2014 - 12
IEEE Robotics & Automation Magazine - December 2014 - 13
IEEE Robotics & Automation Magazine - December 2014 - 14
IEEE Robotics & Automation Magazine - December 2014 - 15
IEEE Robotics & Automation Magazine - December 2014 - 16
IEEE Robotics & Automation Magazine - December 2014 - 17
IEEE Robotics & Automation Magazine - December 2014 - 18
IEEE Robotics & Automation Magazine - December 2014 - 19
IEEE Robotics & Automation Magazine - December 2014 - 20
IEEE Robotics & Automation Magazine - December 2014 - 21
IEEE Robotics & Automation Magazine - December 2014 - 22
IEEE Robotics & Automation Magazine - December 2014 - 23
IEEE Robotics & Automation Magazine - December 2014 - 24
IEEE Robotics & Automation Magazine - December 2014 - 25
IEEE Robotics & Automation Magazine - December 2014 - 26
IEEE Robotics & Automation Magazine - December 2014 - 27
IEEE Robotics & Automation Magazine - December 2014 - 28
IEEE Robotics & Automation Magazine - December 2014 - 29
IEEE Robotics & Automation Magazine - December 2014 - 30
IEEE Robotics & Automation Magazine - December 2014 - 31
IEEE Robotics & Automation Magazine - December 2014 - 32
IEEE Robotics & Automation Magazine - December 2014 - 33
IEEE Robotics & Automation Magazine - December 2014 - 34
IEEE Robotics & Automation Magazine - December 2014 - 35
IEEE Robotics & Automation Magazine - December 2014 - 36
IEEE Robotics & Automation Magazine - December 2014 - 37
IEEE Robotics & Automation Magazine - December 2014 - 38
IEEE Robotics & Automation Magazine - December 2014 - 39
IEEE Robotics & Automation Magazine - December 2014 - 40
IEEE Robotics & Automation Magazine - December 2014 - 41
IEEE Robotics & Automation Magazine - December 2014 - 42
IEEE Robotics & Automation Magazine - December 2014 - 43
IEEE Robotics & Automation Magazine - December 2014 - 44
IEEE Robotics & Automation Magazine - December 2014 - 45
IEEE Robotics & Automation Magazine - December 2014 - 46
IEEE Robotics & Automation Magazine - December 2014 - 47
IEEE Robotics & Automation Magazine - December 2014 - 48
IEEE Robotics & Automation Magazine - December 2014 - 49
IEEE Robotics & Automation Magazine - December 2014 - 50
IEEE Robotics & Automation Magazine - December 2014 - 51
IEEE Robotics & Automation Magazine - December 2014 - 52
IEEE Robotics & Automation Magazine - December 2014 - 53
IEEE Robotics & Automation Magazine - December 2014 - 54
IEEE Robotics & Automation Magazine - December 2014 - 55
IEEE Robotics & Automation Magazine - December 2014 - 56
IEEE Robotics & Automation Magazine - December 2014 - 57
IEEE Robotics & Automation Magazine - December 2014 - 58
IEEE Robotics & Automation Magazine - December 2014 - 59
IEEE Robotics & Automation Magazine - December 2014 - 60
IEEE Robotics & Automation Magazine - December 2014 - 61
IEEE Robotics & Automation Magazine - December 2014 - 62
IEEE Robotics & Automation Magazine - December 2014 - 63
IEEE Robotics & Automation Magazine - December 2014 - 64
IEEE Robotics & Automation Magazine - December 2014 - 65
IEEE Robotics & Automation Magazine - December 2014 - 66
IEEE Robotics & Automation Magazine - December 2014 - 67
IEEE Robotics & Automation Magazine - December 2014 - 68
IEEE Robotics & Automation Magazine - December 2014 - 69
IEEE Robotics & Automation Magazine - December 2014 - 70
IEEE Robotics & Automation Magazine - December 2014 - 71
IEEE Robotics & Automation Magazine - December 2014 - 72
IEEE Robotics & Automation Magazine - December 2014 - 73
IEEE Robotics & Automation Magazine - December 2014 - 74
IEEE Robotics & Automation Magazine - December 2014 - 75
IEEE Robotics & Automation Magazine - December 2014 - 76
IEEE Robotics & Automation Magazine - December 2014 - 77
IEEE Robotics & Automation Magazine - December 2014 - 78
IEEE Robotics & Automation Magazine - December 2014 - 79
IEEE Robotics & Automation Magazine - December 2014 - 80
IEEE Robotics & Automation Magazine - December 2014 - 81
IEEE Robotics & Automation Magazine - December 2014 - 82
IEEE Robotics & Automation Magazine - December 2014 - 83
IEEE Robotics & Automation Magazine - December 2014 - 84
IEEE Robotics & Automation Magazine - December 2014 - 85
IEEE Robotics & Automation Magazine - December 2014 - 86
IEEE Robotics & Automation Magazine - December 2014 - 87
IEEE Robotics & Automation Magazine - December 2014 - 88
IEEE Robotics & Automation Magazine - December 2014 - 89
IEEE Robotics & Automation Magazine - December 2014 - 90
IEEE Robotics & Automation Magazine - December 2014 - 91
IEEE Robotics & Automation Magazine - December 2014 - 92
IEEE Robotics & Automation Magazine - December 2014 - 93
IEEE Robotics & Automation Magazine - December 2014 - 94
IEEE Robotics & Automation Magazine - December 2014 - 95
IEEE Robotics & Automation Magazine - December 2014 - 96
IEEE Robotics & Automation Magazine - December 2014 - 97
IEEE Robotics & Automation Magazine - December 2014 - 98
IEEE Robotics & Automation Magazine - December 2014 - 99
IEEE Robotics & Automation Magazine - December 2014 - 100
IEEE Robotics & Automation Magazine - December 2014 - 101
IEEE Robotics & Automation Magazine - December 2014 - 102
IEEE Robotics & Automation Magazine - December 2014 - 103
IEEE Robotics & Automation Magazine - December 2014 - 104
IEEE Robotics & Automation Magazine - December 2014 - 105
IEEE Robotics & Automation Magazine - December 2014 - 106
IEEE Robotics & Automation Magazine - December 2014 - 107
IEEE Robotics & Automation Magazine - December 2014 - 108
IEEE Robotics & Automation Magazine - December 2014 - 109
IEEE Robotics & Automation Magazine - December 2014 - 110
IEEE Robotics & Automation Magazine - December 2014 - 111
IEEE Robotics & Automation Magazine - December 2014 - 112
IEEE Robotics & Automation Magazine - December 2014 - 113
IEEE Robotics & Automation Magazine - December 2014 - 114
IEEE Robotics & Automation Magazine - December 2014 - 115
IEEE Robotics & Automation Magazine - December 2014 - 116
IEEE Robotics & Automation Magazine - December 2014 - 117
IEEE Robotics & Automation Magazine - December 2014 - 118
IEEE Robotics & Automation Magazine - December 2014 - 119
IEEE Robotics & Automation Magazine - December 2014 - 120
IEEE Robotics & Automation Magazine - December 2014 - 121
IEEE Robotics & Automation Magazine - December 2014 - 122
IEEE Robotics & Automation Magazine - December 2014 - 123
IEEE Robotics & Automation Magazine - December 2014 - 124
IEEE Robotics & Automation Magazine - December 2014 - 125
IEEE Robotics & Automation Magazine - December 2014 - 126
IEEE Robotics & Automation Magazine - December 2014 - 127
IEEE Robotics & Automation Magazine - December 2014 - 128
IEEE Robotics & Automation Magazine - December 2014 - 129
IEEE Robotics & Automation Magazine - December 2014 - 130
IEEE Robotics & Automation Magazine - December 2014 - 131
IEEE Robotics & Automation Magazine - December 2014 - 132
IEEE Robotics & Automation Magazine - December 2014 - 133
IEEE Robotics & Automation Magazine - December 2014 - 134
IEEE Robotics & Automation Magazine - December 2014 - 135
IEEE Robotics & Automation Magazine - December 2014 - 136
IEEE Robotics & Automation Magazine - December 2014 - Cover3
IEEE Robotics & Automation Magazine - December 2014 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2023
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2022
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2021
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2020
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2019
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2018
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2017
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2016
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2015
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2014
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2013
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2012
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_june2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_march2011
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_december2010
https://www.nxtbook.com/nxtbooks/ieee/roboticsautomation_september2010
https://www.nxtbookmedia.com