ROS Electric Variants
Abstract
This REP describes the variants for the ROS Electric release. There are no new variants in this release. This REP mainly updates REP 108 1 for changes in stack contents. Otherwise, the variants are the same as those in REP 108.
Motivation
For a discussion on the general motivation and role of variants, please see REP 1082.
In ROS Electric, the common and geometry stacks were reorganized and broken apart into smaller units, and the arm_navigation stack was heavily reorganized. Other changes in ROS Electric include moving more packages to be system dependencies and updates related to using unary stacks3.
This REP proposes the same entrypoints as REP 108 and merely updates the variant definitions to reflect the organizational changes in ROS stacks.
Specification
End-user entry points
We define the same three main entry points for ROS users as REP 1084.
- desktop-full (recommended)
- desktop
- ros-base
Variants
ROS variants
The [ros-base]{.title-ref} variant composes the [ros]{.title-ref} and [ros_comm]{.title-ref} stacks, which were separated as part of REP 1005. This variant is not allowed to have any GUI dependencies.
1
2
- ros-base:
stacks: [ros, ros_comm]
The [ros-full]{.title-ref} variant adds the [rx]{.title-ref} and [documentation]{.title-ref} stacks, which provide useful tools that are not necessary for on-robot operation.
1
2
3
- ros-full:
extends: ros-base
stacks: [rx, documentation]
Robot variant
The [robot]{.title-ref} variant is defined to be core, stable, ROS libraries for any robot hardware. It is the "general robotics" libraries of ROS. It may not contain any GUI dependencies.
1
2
3
4
5
6
- robot:
extends: [ros-base]
stacks: [bond_core, common_msgs, common, diagnostics,
driver_common, eigen, filters, bullet, geometry, nodelet_core,
orocos_kinematics_dynamics, pluginlib, assimp, robot_model,
executive_smach, xacro]
Capability variants
The capability variants organize commonly used libraries that are specific to a class of robots. We also define a [simulators]{.title-ref} variant that provides an organizational role for higher-level variants. We discourage GUI dependencies in these stacks, if possible.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
- mobile:
extends: [robot]
stacks: [navigation, slam_gmapping, laser_pipeline,
perception_pcl]
- perception:
stacks: [image_common, image_transport_plugins, image_pipeline,
laser_pipeline, perception_pcl, vision_opencv]
- move-arm:
extends: [robot, viz]
stacks: [arm_navigation, octomap_mapping, kinematics,
motion_planners, motion_planning_common, physics_ode,
trajectory_filters, perception_pcl, pr2_controllers, control,
pr2_mechanism, pr2_common]
- simulators:
extends: [robot]
stacks: [simulator_stage, simulator_gazebo, stage, physics_ode,
visualization_common, rx, image_common, perception_pcl]
- viz:
extends: [robot]
stacks: [visualization_common, visualization, rx, image_common,
laser_pipeline, executive_smach_visualization,
diagnostics_monitors, geometry_visualization,
robot_model_visualization, geometry_experimental]
Desktop variants
The [desktop]{.title-ref} variants are main entry points for users. The [desktop-full]{.title-ref} is a "batteries included" experience for users and attempts to collect stable, well-documented libraries. These libraries may be specific to certain classes of robots, such as mobile robots, though they are not specific to a particular robot. The [desktop]{.title-ref} variant is more minimal and only provides the stacks in the [robot]{.title-ref} variant, plus visualization and debugging tools. Both of these variants contain tutorials for the stacks they provide.
1
2
3
4
5
6
- desktop:
extends: [ros-full, robot, viz]
stacks: [ros_tutorials, common_tutorials, geometry_tutorials,
visualization_tutorials]
- desktop-full:
extends: [desktop, mobile, perception, simulators]
Institution-specific
Please see REP 1086 for discussion of institution-specific variants.
This REP also proposes the addition of institution-specific variants. Institution-specific variants must have the name of the institution to clearly identify them. The best practice recommendation is to use the name of the institution's ros-pkg repository, e.g. "wg-ros-pkg".
An institution is not required to have a variant, and they are mainly provided for convenience and identity.
Robot-specific
Please see REP 1087 for discussion of robot-specific variants.
Backwards Compatibility
The variant modifications in this REP are fully backwards compatible with Diamondback.
References
Copyright
This document has been placed in the public domain.
#####
Local Variables: mode: indented-text indent-tabs-mode: nil sentence-end-double-space: t fill-column: 70 coding: utf-8 End:
REP 108: Diamondback Variants (http://www.ros.org/reps/rep-0108.html) ↩︎
REP 108: Diamondback Variants (http://www.ros.org/reps/rep-0108.html) ↩︎
REP 109: Unary Stacks (http://www.ros.org/reps/rep-0109.html) ↩︎
REP 108: Diamondback Variants (http://www.ros.org/reps/rep-0108.html) ↩︎
REP 100 (https://ros.org/reps/rep-0100.html) ↩︎
REP 108: Diamondback Variants (http://www.ros.org/reps/rep-0108.html) ↩︎
REP 108: Diamondback Variants (http://www.ros.org/reps/rep-0108.html) ↩︎