[REP Index] [REP Source]

REP:2001
Title:ROS 2 Variants
Author:Tully Foote <tfoote at openrobotics.org>, Mikael Arguedas <mikael at openrobotics.org>, Ruffin White <roxfoxpox at gmail.com>
Status:Active
Type:Informational
Content-Type:text/x-rst
Created:16-Jul-2018
Post-History:17-Sep-2018, 15-Mar-2019, 10-Nov-2021

Abstract

This REP describes the variants for ROS 2 releases.

Motivation

For a discussion on the general motivation and role of variants, please see REP 108 [1].

This document covers the common variants used for recommended installations. It is expressed in the ros2/variants repository on github.com [2].

The definitions in this REP are concise for clearer purpose, and do not list all transitive dependencies explicitly.

Specification

End-user entry points

We define various entry points for ROS users.

  • desktop_full: The desktop_full variant provides a "batteries included" experience, enabling novice users to complete most entry tutorials without knowledge of the underlying library structure.
  • desktop (recommended): The desktop variant provides all commonly used libraries as well as visualization tools and tutorials.
  • ros_base: The ros_base variant composes the ros_core metapackage with commonly used libraries. It may not contain any GUI dependencies.
  • ros_core: The ros_core variant composes the core communication protocols. It may not contain any GUI dependencies.
  • perception: The perception variant includes packages commonly used for perception capabilities.
  • simulation: The simulation variant includes packages that are needed for automated simulation, without extra debugging tools.

Institution-specific and robot-specific

Please see REP 108 [1] for discussion of institution-specific metapackages.

When creating robot or institution specific metapackages consider using the *_robot and *_desktop and *_base form where * is the institution or robot name.

An institution is not required to provide a metapackage, they are mainly provided for convenience and identity.

Variants

Ardent Apalone (December 2017 - December 2018)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               pluginlib, rcl_lifecycle, rclcpp, rclcpp_lifecycle,
               rclpy, ros2msg, ros2node, ros2pkg, ros2run,
               ros2service, ros2srv, ros2topic, ros_environment,
               rosidl_default_generators, rosidl_default_runtime]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - Connext: [rmw_connext, rosidl_typesupport_connext]
    - Opensplice: [rmw_opensplice, rosidl_typesupport_opensplice]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [kdl_parser, robot_state_publisher, tf2, tf2_eigen,
               tf2_geometry_msgs, tf2_ros, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [composition, demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors, examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclpy_executors,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, rviz2,
               rviz_default_plugins, sros2, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor]

Bouncy Bolson (June 2018 - June 2019)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               pluginlib, rcl_lifecycle, rclcpp, rclcpp_lifecycle,
               rclpy, ros2launch, ros2lifecycle, ros2msg,
               ros2node, ros2param, ros2pkg, ros2run, ros2service,
               ros2srv, ros2topic, ros_environment,
               rosidl_default_generators, rosidl_default_runtime]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - Connext: [rmw_connext, rosidl_typesupport_connext]
    - Opensplice: [rmw_opensplice, rosidl_typesupport_opensplice]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [kdl_parser, robot_state_publisher, tf2, tf2_eigen,
               tf2_geometry_msgs, tf2_ros, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [angles, composition, demo_nodes_cpp,
               demo_nodes_cpp_native, demo_nodes_py,
               depthimage_to_laserscan, dummy_map_server,
               dummy_robot_bringup, dummy_sensors,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclpy_executors,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, rviz2,
               rviz_default_plugins, sros2, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor]

Crystal Clemmys (December 2018 - December 2019)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               pluginlib, rcl_lifecycle, rclcpp, rclcpp_lifecycle,
               rclpy, ros2launch, ros2lifecycle, ros2msg,
               ros2multicast, ros2node, ros2param, ros2pkg,
               ros2run, ros2service, ros2srv, ros2topic,
               ros_environment, rosidl_default_generators,
               rosidl_default_runtime]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - Connext: [rmw_connext, rosidl_typesupport_connext]
    - Opensplice: [rmw_opensplice, rosidl_typesupport_opensplice]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [kdl_parser, robot_state_publisher, tf2, tf2_eigen,
               tf2_geometry_msgs, tf2_ros, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [angles, composition, demo_nodes_cpp,
               demo_nodes_cpp_native, demo_nodes_py,
               depthimage_to_laserscan, dummy_map_server,
               dummy_robot_bringup, dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclpy_executors,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, rviz2,
               rviz_default_plugins, sros2, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor]

Dashing Diademata (May 2019 - May 2021)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               pluginlib, rcl_lifecycle, rclcpp, rclcpp_lifecycle,
               rclpy, ros2action, ros2component, ros2launch,
               ros2lifecycle, ros2msg, ros2multicast, ros2node,
               ros2param, ros2pkg, ros2run, ros2service, ros2srv,
               ros2topic, ros_environment,
               rosidl_default_generators, rosidl_default_runtime,
               sros2, sros2_cmake]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - Connext: [rmw_connext, rosidl_typesupport_connext]
    - Opensplice: [rmw_opensplice, rosidl_typesupport_opensplice]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [kdl_parser, robot_state_publisher, tf2, tf2_eigen,
               tf2_geometry_msgs, tf2_kdl, tf2_ros, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [action_tutorials, angles, composition,
               demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclpy_executors,
               examples_rclpy_minimal_action_client,
               examples_rclpy_minimal_action_server,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, pendulum_msgs,
               quality_of_service_demo_cpp,
               quality_of_service_demo_py, rqt_common_plugins,
               rviz2, rviz_default_plugins, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor, turtlesim]

Eloquent Elusor (November 2019 - November 2020)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               pluginlib, rcl_lifecycle, rclcpp, rclcpp_lifecycle,
               rclpy, ros2action, ros2component, ros2doctor,
               ros2interface, ros2launch, ros2lifecycle, ros2msg,
               ros2multicast, ros2node, ros2param, ros2pkg,
               ros2run, ros2service, ros2srv, ros2topic,
               ros_environment, rosidl_default_generators,
               rosidl_default_runtime, sros2, sros2_cmake]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - Connext: [rmw_connext, rosidl_typesupport_connext]
    - Opensplice: [rmw_opensplice, rosidl_typesupport_opensplice]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [geometry2, kdl_parser, robot_state_publisher, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [action_tutorials_cpp, action_tutorials_interfaces,
               action_tutorials_py, angles, composition,
               demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclpy_executors,
               examples_rclpy_minimal_action_client,
               examples_rclpy_minimal_action_server,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, pendulum_msgs,
               quality_of_service_demo_cpp,
               quality_of_service_demo_py, rqt_common_plugins,
               rviz2, rviz_default_plugins, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor, turtlesim]

Foxy Fitzroy (May 2020 - May 2023)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               launch, launch_ros, launch_testing,
               launch_testing_ament_cmake, launch_testing_ros,
               launch_xml, launch_yaml, pluginlib, rcl_lifecycle,
               rclcpp, rclcpp_lifecycle, rclpy, ros2action,
               ros2component, ros2doctor, ros2interface,
               ros2launch, ros2lifecycle, ros2multicast, ros2node,
               ros2param, ros2pkg, ros2run, ros2service,
               ros2topic, ros_environment,
               rosidl_default_generators, rosidl_default_runtime,
               sros2, sros2_cmake]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - CycloneDDS: [cyclonedds, rmw_cyclonedds]
    - Connext: [rmw_connext, rosidl_typesupport_connext]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [geometry2, kdl_parser, robot_state_publisher,
               rosbag2, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [action_tutorials_cpp, action_tutorials_interfaces,
               action_tutorials_py, angles, composition,
               demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclcpp_multithreaded_executor,
               examples_rclpy_executors,
               examples_rclpy_minimal_action_client,
               examples_rclpy_minimal_action_server,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, pendulum_msgs,
               quality_of_service_demo_cpp,
               quality_of_service_demo_py, rqt_common_plugins,
               rviz2, rviz_default_plugins, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor, turtlesim]

Galactic Geochelone (May 2021 - November 2022)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               launch, launch_ros, launch_testing,
               launch_testing_ament_cmake, launch_testing_ros,
               launch_xml, launch_yaml, pluginlib, rcl_lifecycle,
               rclcpp, rclcpp_lifecycle, rclpy,
               ros2cli_common_extensions, ros2launch,
               ros_environment, rosidl_default_generators,
               rosidl_default_runtime, sros2, sros2_cmake]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - CycloneDDS: [cyclonedds, rmw_cyclonedds]
    - Connext: [rmw_connextdds]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [geometry2, kdl_parser, robot_state_publisher,
               rosbag2, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [action_tutorials_cpp, action_tutorials_interfaces,
               action_tutorials_py, angles, composition,
               demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclcpp_multithreaded_executor,
               examples_rclpy_executors,
               examples_rclpy_minimal_action_client,
               examples_rclpy_minimal_action_server,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, pendulum_msgs,
               quality_of_service_demo_cpp,
               quality_of_service_demo_py, rqt_common_plugins,
               rviz2, rviz_default_plugins, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor, turtlesim]

Humble Hawksbill (May 2022 - Ongoing)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               launch, launch_ros, launch_testing,
               launch_testing_ament_cmake, launch_testing_ros,
               launch_xml, launch_yaml, pluginlib, rcl_lifecycle,
               rclcpp, rclcpp_action, rclcpp_lifecycle, rclpy,
               ros2cli_common_extensions, ros2launch,
               ros_environment, rosidl_default_generators,
               rosidl_default_runtime, sros2, sros2_cmake]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - CycloneDDS: [cyclonedds, rmw_cyclonedds]
    - Connext: [rmw_connextdds]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [geometry2, kdl_parser, robot_state_publisher,
               rosbag2, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [action_tutorials_cpp, action_tutorials_interfaces,
               action_tutorials_py, angles, composition,
               demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclcpp_multithreaded_executor,
               examples_rclpy_executors,
               examples_rclpy_minimal_action_client,
               examples_rclpy_minimal_action_server,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, pendulum_msgs,
               quality_of_service_demo_cpp,
               quality_of_service_demo_py, rqt_common_plugins,
               rviz2, rviz_default_plugins, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor, turtlesim]

Perception

- perception:
    extends:  [ros_base]
    packages: [image_common, image_pipeline, image_transport_plugins,
               laser_filters, laser_geometry, perception_pcl,
               vision_opencv]

Simulation

- simulation:
    extends:  [ros_base]
    packages: [ros_ign_bridge, ros_ign_gazebo, ros_ign_image, ros_ign_interfaces]

Desktop Full

- desktop_full:
    extends:  [desktop]
    packages: [perception, simulation, ros_ign_gazebo_demos]

Rolling Ridley (June 2020 - Ongoing)

ROS Core

- ros_core:
    packages: [ament_cmake, ament_cmake_auto, ament_cmake_gmock,
               ament_cmake_gtest, ament_cmake_pytest,
               ament_cmake_ros, ament_index_cpp,
               ament_index_python, ament_lint_auto,
               ament_lint_common, class_loader, common_interfaces,
               launch, launch_ros, launch_testing,
               launch_testing_ament_cmake, launch_testing_ros,
               launch_xml, launch_yaml, pluginlib, rcl_lifecycle,
               rclcpp, rclcpp_action, rclcpp_lifecycle, rclpy,
               ros2cli_common_extensions, ros2launch,
               ros_environment, rosidl_default_generators,
               rosidl_default_runtime, sros2, sros2_cmake]
    And at least one of the following rmw_implementation:
    - Fast-RTPS: [Fast-CDR, Fast-RTPS, rmw_fastrtps]
    - CycloneDDS: [cyclonedds, rmw_cyclonedds]
    - Connext: [rmw_connextdds]

ROS Base

- ros_base:
    extends:  [ros_core]
    packages: [geometry2, kdl_parser, robot_state_publisher,
               rosbag2, urdf]

Desktop

- desktop:
    extends:  [ros_base]
    packages: [action_tutorials_cpp, action_tutorials_interfaces,
               action_tutorials_py, angles, composition,
               demo_nodes_cpp, demo_nodes_cpp_native,
               demo_nodes_py, depthimage_to_laserscan,
               dummy_map_server, dummy_robot_bringup,
               dummy_sensors,
               examples_rclcpp_minimal_action_client,
               examples_rclcpp_minimal_action_server,
               examples_rclcpp_minimal_client,
               examples_rclcpp_minimal_composition,
               examples_rclcpp_minimal_publisher,
               examples_rclcpp_minimal_service,
               examples_rclcpp_minimal_subscriber,
               examples_rclcpp_minimal_timer,
               examples_rclcpp_multithreaded_executor,
               examples_rclpy_executors,
               examples_rclpy_minimal_action_client,
               examples_rclpy_minimal_action_server,
               examples_rclpy_minimal_client,
               examples_rclpy_minimal_publisher,
               examples_rclpy_minimal_service,
               examples_rclpy_minimal_subscriber, image_tools,
               intra_process_demo, joy, lifecycle, logging_demo,
               pcl_conversions, pendulum_control, pendulum_msgs,
               quality_of_service_demo_cpp,
               quality_of_service_demo_py, rqt_common_plugins,
               rviz2, rviz_default_plugins, teleop_twist_joy,
               teleop_twist_keyboard, tlsf, tlsf_cpp,
               topic_monitor, turtlesim]

Perception

- perception:
    extends:  [ros_base]
    packages: [image_common, image_pipeline, image_transport_plugins,
               laser_filters, laser_geometry, perception_pcl,
               vision_opencv]

Simulation

- simulation:
    extends:  [ros_base]
    packages: [ros_ign_bridge, ros_ign_gazebo, ros_ign_image, ros_ign_interfaces]

Desktop Full

- desktop_full:
    extends:  [desktop]
    packages: [perception, simulation, ros_ign_gazebo_demos]

References

[1](1, 2) REP 108: Diamondback Variants (http://www.ros.org/reps/rep-0108.html)
[2]ROS Variants Repository (https://github.com/ros2/variants)