REP: 2005 Title: ROS 2 Common Packages Author: Brian Gerkey <gerkey@openrobotics.org>, Dirk Thomas <dthomas@openrobotics.org> Status: Active Type: Informational Content-Type: text/x-rst Created: 12-Jan-2020 Post-History:
This REP describes the common packages of ROS 2.
Like ROS 1 before it, ROS 2 follows a federated development model. The open source code and other assets that make up the ROS 2 project are spread across multiple repositories, with different authors, maintainers, and contributors to each component. This federated model makes it easy for developers to share their contributions with the community while also retaining control over how those contributions are developed and released. As a result the community size and overall project scope can scale up naturally and efficiently.
But in exchange, it can be difficult in a federated ecosystem for users and developers to know, of all the available ROS 2 packages, which are integral to the project. With the curated list below we aim to provide community members with guidance regarding which parts of the ROS 2 ecosystem are widely used, actively maintained, and of sufficient quality to be relied upon. Furthermore, we encourage contributors to focus their efforts on items from this list.
The list below is curated to include packages that are:
- open source (not proprietary);
- connected to the ROS 2 project (not general purpose software, except when included with ROS 2-specific bindings);
- broadly usable (not narrowly tailored for uncommon use cases); and
- evidently used by a nontrivial part of the community.
We aim that all of these packages are also:
- actively maintained and following accepted software development processes, including code review and testing; and
- at Quality Level 3 or better, as defined in REP 2004; and
- are maintained by an organization or at least two individuals.
The list should be self-contained and exhaustive: if a package appears on the list, then all of its ROS 2 dependencies must also appear on the list (third-party or system dependencies should not be included).
Maintainers of the packages below are expected to respond to security vulnerability reports in a timely manner as outlined in REP-2006. The maintainers listed in the package.xml will be privately contacted with security vulnerability reports. This is to ensure that the security vulnerability is not disclosed before the timeline laid out in REP-2006.
This content is maintained at GitHub in the REP repo. To propose changes, such as adding or removing items, make a pull request (PR) to that repo. The ensuing public review and discussion will evaluate the change in light of the purpose and scope explained above. The final merge decision on a given PR will be made by the ROS 2 Technical Steering Committee (TSC) by a simple voting process:
- Each TSC member organization may vote on a PR by commenting with a score according to the REP voting guidelines.
- A TSC member may update their vote (e.g., following changes or discussion) with a new comment while the PR remains under review (i.e., before it has been merged); the new vote takes the place of the old one.
- The PR will be merged if and when the sum of TSC member vote values is >= 3 (votes of +0 and -0 are treated equally as 0 when computing the sum).
- The PR will be declined if it becomes numerically impossible based on existing votes to meet the minimum vote threshold.
- The proposer will be encouraged to withdraw a PR if after a significant amount the time the minimum vote threshold is still not met.
For example, if a PR garners the following 6 votes from TSC members: +1, +1, -1, +0, +1, +1, then the sum would be 3 and the PR would be merged.
The minimum vote threshold necessary to merge a PR may be changed by a majority vote of the TSC.
We wish for this list to grow steadily over time, but not to become an indiscriminate collection of all ROS 2 software. Our goal with this list is curation: we want to ensure that the contents are meaningful to the developer and user community. All else being equal, we prefer to include packages that:
- have clear evidence of reuse (e.g., declared dependencies elsewhere in ROS 2, stars or forks at GitHub, public user testimonials); and/or
- represent substantially new and important features that are reasonably expected to come into wide use but are not yet ready; and/or
- are demonstrably of high quality (e.g., via conformance with REP 2004).
We prefer not to include packages that meet none of these criteria.
The common packages may vary among distros; unless otherwise annotated below, each package in the list is available since Foxy Fitzroy. When planning starts for a new distro, the package list from the previous distro will be copied in as a starting point. All items on the list for the next distro should already be released into the rolling distro; as a bootstrapping exception, items on the list for Foxy may take some time to be released.
- Buildsystem, package index and tooling around
- ament_cmake/ament_cmake
- ament_cmake/ament_cmake_auto
- ament_cmake/ament_cmake_core
- ament_cmake/ament_cmake_export_definitions
- ament_cmake/ament_cmake_export_dependencies
- ament_cmake/ament_cmake_export_include_directories
- ament_cmake/ament_cmake_export_interfaces
- ament_cmake/ament_cmake_export_libraries
- ament_cmake/ament_cmake_export_link_flags
- ament_cmake/ament_cmake_export_targets
- ament_cmake/ament_cmake_gmock
- ament_cmake/ament_cmake_gtest
- ament_cmake/ament_cmake_include_directories
- ament_cmake/ament_cmake_libraries
- ament_cmake/ament_cmake_nose
- ament_cmake/ament_cmake_pytest
- ament_cmake/ament_cmake_python
- ament_cmake/ament_cmake_target_dependencies
- ament_cmake/ament_cmake_test
- ament_cmake/ament_cmake_version
- ament_index/ament_index_cpp
- ament_index/ament_index_python
- ament_package/ament_package
- ament_lint/ament_clang_format
- ament_lint/ament_clang_tidy
- ament_lint/ament_cmake_clang_format
- ament_lint/ament_cmake_clang_tidy
- ament_lint/ament_cmake_copyright
- ament_lint/ament_cmake_cppcheck
- ament_lint/ament_cmake_cpplint
- ament_lint/ament_cmake_flake8
- ament_lint/ament_cmake_lint_cmake
- ament_lint/ament_cmake_mypy
- ament_lint/ament_cmake_pclint
- ament_lint/ament_cmake_pep257
- ament_lint/ament_cmake_pycodestyle
- ament_lint/ament_cmake_pyflakes
- ament_lint/ament_cmake_uncrustify
- ament_lint/ament_cmake_xmllint
- ament_lint/ament_copyright
- ament_lint/ament_cppcheck
- ament_lint/ament_cpplint
- ament_lint/ament_flake8
- ament_lint/ament_lint
- ament_lint/ament_lint_auto
- ament_lint/ament_lint_cmake
- ament_lint/ament_lint_common
- ament_lint/ament_mypy
- ament_lint/ament_pclint
- ament_lint/ament_pep257
- ament_lint/ament_pycodestyle
- ament_lint/ament_pyflakes
- ament_lint/ament_uncrustify
- ament_lint/ament_xmllint
- ros_environment/ros_environment
- ros-infrastructure/bloom (not a ROS package)
- ros-infrastructure/catkin_pkg (not a ROS package)
- ros-infrastructure/rep (not a ROS package)
- ros-infrastructure/rosdep (not a ROS package)
- ros-infrastructure/rosdistro (not a ROS package)
- ros-infrastructure/ros_buildfarm (not a ROS package)
- ros-infrastructure/superflore (not a ROS package)
- ros/meta-ros (not a ROS package)
- ament_cmake_ros/ament_cmake_ros
- ament_cmake_ros/domain_coordinator
- Third party packages
- foonathan_memory_vendor/foonathan_memory_vendor
- googletest/gmock_vendor
- googletest/gtest_vendor
- uncrustify_vendor/uncrustify_vendor
- console_bridge_vendor/console_bridge_vendor
- poco_vendor/poco_vendor
- spdlog_vendor/spdlog_vendor
- tinydir_vendor/tinydir_vendor
- tinyxml_vendor/tinyxml_vendor
- tinyxml2_vendor/tinyxml2_vendor
- yaml_cpp_vendor/yaml_cpp_vendor
- Utility functionality
- ros2_tracing/ros2trace
- ros2_tracing/tracetools
- ros2_tracing/tracetools_launch
- ros2_tracing/tracetools_read
- ros2_tracing/tracetools_test
- ros2_tracing/tracetools_trace
- osrf_pycommon/osrf_pycommon
- osrf_testing_tools_cpp/osrf_testing_tools_cpp
- osrf_testing_tools_cpp/test_osrf_testing_tools_cpp
- class_loader/class_loader
- pluginlib/pluginlib
- eigen3_cmake_module/eigen3_cmake_module
- python_cmake_module/python_cmake_module
- rcutils/rcutils
- rcpputils/rcpputils
- ros_testing/ros2test
- ros_testing/ros_testing
- ros-tooling/libstatistics_collector
- ROS interface pipeline
- rosidl/rosidl_adapter
- rosidl/rosidl_cmake
- rosidl/rosidl_generator_c
- rosidl/rosidl_generator_cpp
- rosidl/rosidl_parser
- rosidl/rosidl_runtime_c
- rosidl/rosidl_runtime_cpp
- rosidl/rosidl_typesupport_interface
- rosidl/rosidl_typesupport_introspection_c
- rosidl/rosidl_typesupport_introspection_cpp
- rosidl_dds/rosidl_generator_dds_idl
- rosidl_defaults/rosidl_default_generators
- rosidl_defaults/rosidl_default_runtime
- rosidl_python/rosidl_generator_py
- rosidl_runtime_py/rosidl_runtime_py
- rosidl_typesupport/rosidl_typesupport_c
- rosidl_typesupport/rosidl_typesupport_cpp
- Interface definitions
- navigation_msgs/map_msgs
- navigation_msgs/move_base_msgs
- common_interfaces/actionlib_msgs
- common_interfaces/common_interfaces
- common_interfaces/diagnostic_msgs
- common_interfaces/geometry_msgs
- common_interfaces/nav_msgs
- common_interfaces/sensor_msgs
- common_interfaces/shape_msgs
- common_interfaces/std_msgs
- common_interfaces/std_srvs
- common_interfaces/stereo_msgs
- common_interfaces/trajectory_msgs
- common_interfaces/visualization_msgs
- example_interfaces/example_interfaces
- rcl_interfaces/action_msgs
- rcl_interfaces/builtin_interfaces
- rcl_interfaces/composition_interfaces
- rcl_interfaces/lifecycle_msgs
- rcl_interfaces/rcl_interfaces
- rcl_interfaces/rosgraph_msgs
- rcl_interfaces/statistics_msgs
- rcl_interfaces/test_msgs
- test_interface_files/test_interface_files
- unique_identifier_msgs/unique_identifier_msgs
- RMW
- rmw/rmw
- rmw/rmw_implementation_cmake
- rmw_implementation/rmw_implementation
- Connext (Connext itself is not open source)
- CycloneDDS
- FastRTPS
- fastcdr/fastcdr
- fastrtps/fastrtps
- rmw_fastrtps/rmw_fastrtps_cpp
- rmw_fastrtps/rmw_fastrtps_dynamic_cpp
- rmw_fastrtps/rmw_fastrtps_shared_cpp
- rosidl_typesupport_fastrtps/fastrtps_cmake_module
- rosidl_typesupport_fastrtps/rosidl_typesupport_fastrtps_c
- rosidl_typesupport_fastrtps/rosidl_typesupport_fastrtps_cpp
- Micro XRCE-DDS
- Client libraries
- rcl/rcl
- rcl/rcl_action
- rcl/rcl_lifecycle
- rcl/rcl_yaml_param_parser
- rcl_logging/rcl_logging_log4cxx
- rcl_logging/rcl_logging_noop
- rcl_logging/rcl_logging_spdlog
- rclcpp/rclcpp
- rclcpp/rclcpp_action
- rclcpp/rclcpp_components
- rclcpp/rclcpp_lifecycle
- rclpy/rclpy
- rclc/rclc
- rclc/rclc_lifecycle
- rclc/rclc_parameter
- Orchestration
- Features
- diagnostics/diagnostic_aggregator
- diagnostics/diagnostic_updater
- diagnostics/self_test
- joint_state_publisher/joint_state_publisher
- joint_state_publisher/joint_state_publisher_gui
- robot_state_publisher/robot_state_publisher
- xacro/xacro
- Sensor processing
- image_common/camera_calibration_parsers
- image_common/camera_info_manager
- image_common/image_common
- image_common/image_transport
- image_transport_plugins/compressed_depth_image_transport
- image_transport_plugins/compressed_image_transport
- image_transport_plugins/image_transport_plugins
- image_transport_plugins/theora_image_transport
- perception_pcl/pcl_conversions
- perception_pcl/perception_pcl
- vision_opencv/cv_bridge
- vision_opencv/image_geometry
- vision_opencv/vision_opencv
- laser_filters/laser_filters
- laser_geometry/laser_geometry
- laser_proc/laser_proc
- depthimage_to_laserscan/depthimage_to_laserscan
- Navigation2
- navigation2/costmap_queue
- navigation2/dwb_core
- navigation2/dwb_critics
- navigation2/dwb_msgs
- navigation2/dwb_plugins
- navigation2/nav2_amcl
- navigation2/nav2_behavior_tree
- navigation2/nav2_bringup
- navigation2/nav2_bt_navigator
- navigation2/nav2_common
- navigation2/nav2_controller
- navigation2/nav2_core
- navigation2/nav2_costmap_2d
- navigation2/nav2_dwb_controller
- navigation2/nav2_gazebo_spawner
- navigation2/nav2_lifecycle_manager
- navigation2/nav2_map_server
- navigation2/nav2_msgs
- navigation2/nav2_navfn_planner
- navigation2/nav2_planner
- navigation2/nav2_recoveries
- navigation2/nav2_regulated_pure_pursuit_controller
- navigation2/nav2_rviz_plugins
- navigation2/nav2_smac_planner
- navigation2/nav2_system_tests
- navigation2/nav2_util
- navigation2/nav2_voxel_grid
- navigation2/nav2_waypoint_follower
- navigation2/nav_2d_msgs
- navigation2/nav_2d_utils
- navigation2/navigation2
- navigation.ros.org
- MoveIt2
- moveit2/moveit_servo
- moveit2/moveit_setup_assistant
- moveit2/run_moveit_cpp
- moveit2/moveit_core
- moveit2/moveit_ros_occupancy_map_monitor
- moveit2/moveit_ros_robot_interaction
- moveit2/moveit_ros_warehouse
- moveit2/moveit_ros_manipulation
- moveit2/moveit_ros_move_group
- moveit2/moveit_ros
- moveit2/moveit_ros_planning
- moveit2/moveit_ros_perception
- moveit2/moveit_ros_visualization
- moveit2/moveit_ros_benchmarks
- moveit2/moveit_ros_planning_interface
- moveit2/moveit_simple_controller_manager
- moveit2/moveit_plugins
- moveit2/moveit_ros_control_interface
- moveit2/moveit_planners_ompl
- moveit2/moveit_planners_trajopt
- moveit2/moveit_planners
- moveit2/moveit_chomp_optimizer_adapter
- moveit2/chomp_motion_planner
- moveit2/moveit_planners_chomp
- moveit2/moveit_commander
- moveit2/moveit_runtime
- moveit2/moveit
- moveit2/moveit_kinematics
- moveit2/pilz_industrial_motion_planner
- cra-ros-pkg/robot_localization
- interactive_markers/interactive_markers
- geometry2/examples_tf2_py
- geometry2/geometry2
- geometry2/tf2
- geometry2/tf2_bullet
- geometry2/tf2_eigen
- geometry2/tf2_geometry_msgs
- geometry2/tf2_kdl
- geometry2/tf2_msgs
- geometry2/tf2_py
- geometry2/tf2_ros
- geometry2/tf2_sensor_msgs
- geometry2/tf2_tools
- kdl_parser/kdl_parser
- message_filters/message_filters
- ros/bond_core
- sros2/sros2
- sros2/sros2_cmake
- teleop_twist_joy/teleop_twist_joy
- ubuntu-robotics/ament_nodl
- ubuntu-robotics/nodl_python
- ROS Drivers
- joystick_drivers/joy
- velodyne/velodyne
- velodyne/velodyne_driver
- velodyne/velodyne_laserscan
- velodyne/velodyne_msgs
- velodyne/velodyne_pointcloud
- urg_c/urg_c
- urg_node/urg_node
- phidgets_drivers/libphidget22
- phidgets_drivers/phidgets_accelerometer
- phidgets_drivers/phidgets_analog_inputs
- phidgets_drivers/phidgets_api
- phidgets_drivers/phidgets_digital_inputs
- phidgets_drivers/phidgets_digital_outputs
- phidgets_drivers/phidgets_drivers
- phidgets_drivers/phidgets_gyroscope
- phidgets_drivers/phidgets_high_speed_encoder
- phidgets_drivers/phidgets_ik
- phidgets_drivers/phidgets_magnetometer
- phidgets_drivers/phidgets_motors
- phidgets_drivers/phidgets_msgs
- phidgets_drivers/phidgets_spatial
- phidgets_drivers/phidgets_temperature
- KumarRobotics/imu_vn_100
- ros-drivers/ros2_ouster_drivers
- Documentation, Examples, Tutorials
- demos/action_tutorials_cpp
- demos/action_tutorials_interfaces
- demos/action_tutorials_py
- demos/composition
- demos/demo_nodes_cpp
- demos/demo_nodes_cpp_native
- demos/demo_nodes_py
- demos/dummy_map_server
- demos/dummy_robot_bringup
- demos/dummy_sensors
- demos/image_tools
- demos/intra_process_demo
- demos/lifecycle
- demos/logging_demo
- demos/pendulum_control
- demos/pendulum_msgs
- demos/quality_of_service_demo_cpp
- demos/quality_of_service_demo_py
- demos/topic_monitor
- ros2/design (not a ROS package)
- examples/examples_rclcpp_minimal_action_client
- examples/examples_rclcpp_minimal_action_server
- examples/examples_rclcpp_minimal_client
- examples/examples_rclcpp_minimal_composition
- examples/examples_rclcpp_minimal_publisher
- examples/examples_rclcpp_minimal_service
- examples/examples_rclcpp_minimal_subscriber
- examples/examples_rclcpp_minimal_timer
- examples/examples_rclcpp_multithreaded_executor
- examples/examples_rclpy_executors
- examples/examples_rclpy_minimal_action_client
- examples/examples_rclpy_minimal_action_server
- examples/examples_rclpy_minimal_client
- examples/examples_rclpy_minimal_publisher
- examples/examples_rclpy_minimal_service
- examples/examples_rclpy_minimal_subscriber
- ros2/ros_core_documentation (not a ROS package)
- ros2/ros2_documentation (not a ROS package)
- Robot
- Web
- RobotWebTools/rclnodejs
- RobotWebTools/ros2djs
- RobotWebTools/ros3djs
- RobotWebTools/roslibjs
- rosbridge_suite/rosapi
- rosbridge_suite/rosapi_msgs
- rosbridge_suite/rosbridge_library
- rosbridge_suite/rosbridge_msgs
- rosbridge_suite/rosbridge_server
- rosbridge_suite/rosbridge_suite
- rosbridge_suite/rosbridge_test_msgs
- Tools
- gazebo_ros_pkgs/gazebo_dev
- gazebo_ros_pkgs/gazebo_msgs
- gazebo_ros_pkgs/gazebo_plugins
- gazebo_ros_pkgs/gazebo_ros
- gazebo_ros_pkgs/gazebo_ros_pkgs
- ignitionrobotics/ros_ign
- ignitionrobotics/ros_ign_bridge
- ignitionrobotics/ros_ign_gazebo
- ignitionrobotics/ros_ign_gazebo_demos
- ignitionrobotics/ros_ign_image
- ignitionrobotics/ros_ign_point_cloud
- cyberbotics/webots_ros2
- cyberbotics/webots_ros2_abb
- cyberbotics/webots_ros2_core
- cyberbotics/webots_ros2_demos
- cyberbotics/webots_ros2_desktop
- cyberbotics/webots_ros2_epuck
- cyberbotics/webots_ros2_examples
- cyberbotics/webots_ros2_importer
- cyberbotics/webots_ros2_msgs
- cyberbotics/webots_ros2_tiago
- cyberbotics/webots_ros2_universal_robot
- cyberbotics/webots_ros2_ur_e_description
- ros1_bridge/ros1_bridge
- ros2cli/ros2action
- ros2cli/ros2cli
- ros2cli/ros2component
- ros2cli/ros2doctor
- ros2cli/ros2interface
- ros2cli/ros2lifecycle
- ros2cli/ros2lifecycle_test_fixtures
- ros2cli/ros2multicast
- ros2cli/ros2node
- ros2cli/ros2param
- ros2cli/ros2pkg
- ros2cli/ros2run
- ros2cli/ros2service
- ros2cli/ros2topic
- rosbag2/ros2bag
- rosbag2/rosbag2
- rosbag2/rosbag2_converter_default_plugins
- rosbag2/rosbag2_storage
- rosbag2/rosbag2_storage_default_plugins
- rosbag2/rosbag2_test_common
- rosbag2/rosbag2_tests
- rosbag2/rosbag2_transport
- rosbag2/shared_queues_vendor
- rosbag2/sqlite3_vendor
- rviz/rviz2
- rviz/rviz_assimp_vendor
- rviz/rviz_common
- rviz/rviz_default_plugins
- rviz/rviz_ogre_vendor
- rviz/rviz_rendering
- rviz/rviz_rendering_tests
- rviz/rviz_visual_testing_framework
- ros-tooling/cross_compile
- ros-tooling/system_metrics_collector
- ApexAI/performance_test
- ApexAI/performance_test_ros1_msgs
- ApexAI/performance_test_ros1_publisher
- ms-iot/vscode-ros
- RQt
- python_qt_binding/python_qt_binding
- qt_gui_core/qt_dotgraph
- qt_gui_core/qt_gui
- qt_gui_core/qt_gui_app
- qt_gui_core/qt_gui_core
- qt_gui_core/qt_gui_cpp
- qt_gui_core/qt_gui_py_common
- rqt/rqt
- rqt/rqt_gui
- rqt/rqt_gui_cpp
- rqt/rqt_gui_py
- rqt/rqt_py_common
- rqt_action/rqt_action
- rqt_console/rqt_console
- rqt_graph/rqt_graph
- rqt_image_view/rqt_image_view
- rqt_msg/rqt_msg
- rqt_plot/rqt_plot
- rqt_publisher/rqt_publisher
- rqt_py_console/rqt_py_console
- rqt_reconfigure/rqt_reconfigure
- rqt_robot_steering/rqt_robot_steering
- rqt_service_caller/rqt_service_caller
- rqt_srv/rqt_srv
- rqt_tf_tree/rqt_tf_tree
- rqt_topic/rqt_topic
- CI tools
- ros-tooling/action-ros-ci (not a ROS package)
- ros-tooling/action-ros-lint (not a ROS package)
- ros-tooling/setup-ros (not a ROS package)
- micro-ROS
This document has been placed in the public domain.