[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>, David V. Lu!! <davidvlu at gmail.com>, Steven! Ragnarok <steven at openrobotics.org>, Chris Lalancette <clalancette at openrobotics.org>
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 [2] and in ros-infrastructure/infra-variants [3] repositories on github.com.

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.
  • ros-build-essential: The ros-build-essential ROS distribution independent variant includes only the packages that are required for building standalone ROS 2 packages. ROS developers should use ros-dev-tools instead for the full set of recommended tools.
  • ros-dev-tools: The ros-dev-tools ROS distribution independent variant provides the commonly-used tools and libraries that a user would want if they're developing ROS 2 packages.

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 - May 2027)

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]

Iron Irwini (May 2023 - November 2024)

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]

ROS Distribution Independent (September 2022 - Ongoing)

These variants are not released as ROS packages within each distribution as the others are. Instead they are made available as independent packages outside of any ROS distribution.

Build Essential

In addition to the explicitly listed packages this variant should include the base toolchain for any operating system (such as build-essential on Debian) as well as GNU Make and a C++ compiler if not already part of that toolchain.

- ros-build-essential:
     packages: [cmake, git, python3, python3-setuptools]

Dev Tools

- ros-dev-tools:
    extends:  [ros-build-essential]
    packages: [python3-bloom, python3-colcon-common-extensions,
               python3-rosdep, python3-vcstool, wget]

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)
[3]ROS Infrastructure Metapackages Repository (https://github.com/ros-infrastructure/infra-variants)