Awesome Robot Operating System 2 (ROS 2) Awesome

A curated list of awesome Robot Operating System Version 2.0 (ROS 2) resources and libraries.

The Robot Operating System 2 (ROS 2) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS 2 has what you need for your next robotics project. And it’s all open source.

DEPRECATION NOTICE: This repository is in the process of beeing handed over to Open Robotics. Feel free to checkout the GitHub ROS2 organization to find the repo there in the future.

Contents

Packages

Data collection

  • ros2_data_collection - Collect, validate and send data reliably from ROS 2 to create APIs and dashboards. ros2_data_collection

Demonstrations

  • adlink_ddsbot - The ROS 2.0/1.0 based robots swarm architecture (opensplice DDS). adlink_ddsbot
  • adlink_neuronbot - ROS2/DDS robot pkg for human following and swarm. adlink_neuronbot
  • turtlebot3 - ROS2 based TurtleBot3 demo including Bringup, Teleop and Cartographer. turtlebot3

Examples

Benchmarking

  • ros2_benchmarking - Framework for ROS2 benchmarking. ROS2 communication characteristics can be evaluated on several axes, quickly and in an automated way. ros2_benchmarking
  • performance_test - Test performance and latency of various communication means like ROS 2, FastRTPS and Connext DDS Micro. performance_test

Containerization

Networking

  • Husarnet VPN - A P2P, secure network layer dedicated for ROS & ROS 2. husarnet

Ecosystem

  • Link ROS - Cloud Logging for ROS 1 and ROS 2.
  • rosbag2 - ROS2 native rosbag. rosbag2
  • rviz - 3D Robot Visualizer. rviz
  • urdfdom - URDF (U-Robot Description Format) library which provides core data structures and a simple XML parser urdfdom
  • urdfdom_headers - Headers for URDF parsers. urdfdom_headers
  • ros2cli - ROS 2 command line tools. ros2cli
  • orocos_kinematics_dynamics - Orocos Kinematics and Dynamics C++ library. orocos_kinematics_dynamics
  • pydds - Simple DDS Python API for Vortex Lite and for OpenSplice. pydds
  • Webots - Robot simulator for ROS 2. webots
  • LGSVL - Simulation software to accelerate safe autonomous vehicle development.
  • Unity Robotics Hub - This is a central repository for tools, tutorials, resources, and documentation for robotic simulation in Unity.
  • Foxglove Studio - Integrated visualization and diagnosis tool for robotics. foxglove studio
  • ROS2 For Unity - An asset package which enables high-performance communication between Unity3D simulations and ROS2 ecosystem. ros2-for-unity

Interactivity

Penetration testing

Application layer

  • Apex.Autonomy - Apex.Autonomy provides autonomy algorithms as individual building blocks and is compatible with Autoware.Auto.
  • Autoware.Auto - Autoware.Auto provides an open-source software stack based on ROS 2 for self-driving technology.
  • ros2_control - ros2_control is a proof of concept on how new features within ROS 2 can be elaborated and used in the context of robot control (ros2_controllers). ros2_control
  • ros2_controllers - Description of ros_controllers. ros2_controllers
  • geometry2 - A set of ROS packages for keeping track of coordinate transforms. geometry2
  • ros2-ORB_SLAM2 - ROS2 node wrapping the ORB_SLAM2 library. ros2-ORB_SLAM2
  • basalt_ros2 - ROS2 wrapper for Basalt VIO. basalt_ros2
  • cartographer - Real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations. cartographer
  • slam_gmapping - Slam Gmapping for ROS2. slam_gmapping
  • slam_toolbox - Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS. slam_toolbox
  • lidarslam_ros2 - ROS2 package of 3D lidar slam using ndt/gicp registration and pose-optimization. lidarslam_ros2
  • li_slam_ros2 - ROS2 package of tightly-coupled lidar inertial ndt/gicp slam referenced from LIO-SAM. li_slam_ros2
  • octomap_server2 - ROS2 stack for mapping with OctoMap. Port of the ROS1 octomap_mapping package. octomap_server2
  • vision_opencv - Packages for interfacing ROS2 with OpenCV. vision_opencv
  • teleop_twist_keyboard - Generic Keyboard Teleop for ROS2. teleop_twist_keyboard
  • teleop_twist_joy - Simple joystick teleop for twist robots. teleop_twist_joy
  • navigation - ROS2 Navigation stack. navigation
  • diagnostics - Forked version of the original ROS1 Diagnostics for ROS 2 (currently diagnostics_updater only). diagnostics
  • robot_state_publisher - Forked version of the original ROS Robot State Publisher with all modifications to compile within a ROS2 Ecosystem. robot_state_publisher
  • common_interfaces - A set of packages which contain common interface files (.msg and .srv). common_interfaces
  • ros2_object_map - "Mark tag of objects on map when SLAM". ros2_object_map
  • ros2_object_analytics - Object Analytics (OA) is ROS2 wrapper for realtime object detection, localization and tracking. ros2_object_analytics
  • ros2_intel_movidius_ncs - ROS2 wrapper for Movidius™ Neural Compute Stick (NCS) Neuronal Compute API. ros2_intel_movidius_ncs
  • ros2_moving_object - Addressing moving objects based on messages generated by Object Analytics ros2_object_analytics. ros2_moving_object
  • ros2_openvino_toolkit - ROS2 wrapper for CV API of OpenVINO™ (human vision emulation). ros2_openvino_toolkit
  • ros2_grasp_library - Probably a grasp library :). ros2_grasp_library
  • apriltag_ros - ROS2 node for AprilTag detection. apriltag_ros
  • rosbridge_suite - Bridging your browser to the ROS 2.0. rosbridge_suite
  • ros2_message_filters - ros2_message_filters blends various messages based on the conditions that filter needs to met and derives from ROS2 porting of ROS message_filters. ros2_message_filters
  • ros2-tensorflow - ROS2 nodes for computer vision tasks in Tensorflow. ros2-tensorflow
  • ros2_pytorch - ROS2 nodes for computer vision tasks in PyTorch ros2_pytorch.
  • ros2_pytorch_cuda - Extension of ros2_pytorch for CUDA devices with containerization.
  • pid - A PID controller for ROS2. pid
  • system-modes - System modes for ROS 2 and micro-ROS.
  • darknet_ros - ROS2 wrapper for deploying Darknet's YOLO Computer Vision model.
  • easy_perception_deployment - Package that accelerates training and deployment of Computer Vision models for industries. easy_perception_deployment
  • easy_manipulation_deployment - Package that integrates perception elements to establish an end-to-end pick and place task. easy_manipulation_deployment
  • ros2_pid_library - A ROS2 Humble fully configurable PID library ros2_pid_library
  • wayp_plan_tools - Waypoint and planner tools for ROS 2 with minimal dependencies and an optional Gazebo Fortress simulation. wayp_plan_tools

Middleware

"System" bindings

  • rclandroid - Android API for ROS2. rclandroid
  • rclnodejs - Node.js version of ROS2.0 client. rclnodejs
  • riot-ros2 - This project enables ROS2 to run on microcontrollers using the RIOT Operating System. riot-ros2
  • ROS2-Integration-Service - ROS2 Integration and Routing which provides a complete tool to integrate other technologies with ROS2 easily and enable ROS2 on WAN/Internet.
  • soss - The System Of Systems Synthesizer is used to integrate ROS2 via ROS2-Integration-Service with other (communication) systems.
  • micro_ros_arduino - Integration of micro-ROS into Arduino software platform projects.
  • micro_ros_zephyr_module - Integration of micro-ROS in Zeyphr OS based projects.

Driver layer

Client libraries

  • rclada - ROS Client Library for Ada. rclada
  • rclcpp - ROS Client Library for C++. rclcpp
  • rclgo - ROS Client Library for Go. rclgo
  • rclpy - ROS Client Library for Python. rclpy
  • rcljava - ROS Client Library for Java. rcljava
  • rclnodejs - ROS Client Library for Node.js. rclnodejs
  • rclobjc - ROS Client Library for Objective C (for iOS). rclobjc
  • rclc - ROS Client Library for C. rclc
  • ros2_rust - Rust bindings for ROS2. ros2_rust
  • ros2_dotnet - .NET bindings for ROS2. ros2_dotnet
  • ros2cs - an alternative to ros2_dotnet, a ROS2 C# interface supporting full range of messages and modern ROS2. ros2cs

Client libraries common

  • rcl - Library to support implementation of language specific ROS Client Libraries. rcl
  • system_tests - Tests for rclcpp and rclpy. system_tests
  • rcl_interfaces - A repository for messages and services used by the ROS client libraries. rcl_interfaces

IDL generators

RMW (ROS middleware)

  • rmw - Contains the ROS middleware API. rmw
  • rmw_connext_cpp - Implement the ROS middleware interface using RTI Connext static code generation in C++. rmw_connext_cpp
  • rmw_fastrtps_cpp - Implement the ROS middleware interface using eProsima FastRTPS static code generation in C++. rmw_fastrtps_cpp
  • rmw_dps - Implementation of the ROS Middleware (rmw) Interface using Intel's Distributed Publish & Subscribe. rmw_dps
  • rmw_opensplice_cpp - Implement the ROS middleware interface using PrismTech OpenSplice static code generation in C++. rmw_opensplice_cpp
  • rmw_coredx - CoreDX DDS integration layer for ROS2. tocinc/rmw_coredx
  • rmw_freertps - RMW implementation using freertps. tocinc/rmw_coredx
  • rmw_zenoh - RMW implementation using Eclipse zenoh: Zero Overhead Pub/sub, Store/Query and Compute. atolab/rmw_zenoh
  • rcutils - Common C functions and data structures used in ROS 2. rmw
  • freertps - a free, portable, minimalist, work-in-progress RTPS implementation. rmw
  • rmw_cyclonedds - ROS2 RMW layer for Eclipse Cyclone DDS. rmw_cyclonedds
  • rmw_zenoh - ROS2 RMW layer for zenoh.
  • rmw_iceoryx - Enables usage of the inter-process-communication middleware Eclipse iceoryx.

DDS communication mechanism implementations

  • Connext DDS - Connectivity Software for Developing and Integrating IIoT Systems. 💲
  • Fast-RTPS - Implementation of RTPS Standard (RTPS is the wire interoperability protocol for DDS). Fast-RTPS
  • OpenSplice - Implementation of the OMG DDS Standard. opensplice 💲
  • CoreDX DDS - Implementation of Twin Oaks Computing, Inc.. 💲
  • freertps - A free, portable, minimalist, work-in-progress RTPS implementation. freertps
  • cdds - Cyclone DDS is developed completely in the open and is undergoing the acceptance process to become part of Eclipse IoT. cdds
  • Micro-XRCE-DDS) - An XRCE DDS implementation (supported by microROS). Micro-XRCE-DDS

Build system (Linux)

  • meta-ros2 - ROS 2 Layer for OpenEmbedded Linux. meta-ros2

Build system (ROS2)

  • ci - ROS 2 CI Infrastructure. ci
  • ament_cmake_export_jars - The ability to export Java archives to downstream packages in the ament buildsystem in CMake. ros2_java
  • rmw_implementation_cmake - CMake functions which can discover and enumerate available implementations. rmw
  • rmw_implementation - CMake infrastructure and dependencies for rmw implementations. rmw

Operating systems

  • NuttX - NuttX fork of the official one for use with micro-ROS.
  • RIOT - RIOT is a real-time multi-threading operating system (...,) real-time capabilities, small memory footprint, (...) API offers partial POSIX compliance.
  • eMCOS - POSIX-compliant real-time OS for many-core processors expected to support AUTOSAR in the future.
  • PYNQ - Python-based rapid prototyping of high performance ML applications running on XILINX FPGAs.
  • ReconROS - Framework for ROS2 FPGA-based hardware acceleration. Based on ReconOS. ReconROS
  • Ubuntu Core - Build secure IoT devices with Ubuntu Core.
  • Ubuntu Server
  • VxWorks - The Secure, Safe, Reliable, and Certifiable real-time OS for Critical Infrastructure
  • Zephyr - Linux Foundation Projects RTOS aiming at beeing secure and safe.

Packaging

  • ros2-snap - Create a snap for your ROS 2 application.

Forks

  • Apex.OS - Apex.OS is a fork of ROS 2 that has been made so robust and reliable that it can be used in safety-critical applications.

Documentation

Community

Books

Courses

Presentations

ROSCon 2022

Program announcement(slides + videos)

  • Panel: The ROS 2 Developer Experience video
  • Wearable ROS: Development of wearable robot system using ROS 2 video slides
  • Building ROS 2 enabled Android apps with C++ video slides
  • Distributed Robotics Simulator with Unreal Engine video slides
  • Tools and processes for improving the certifiability of ROS 2 video slides
  • Failover ROS Framework : Consensus-based node redundancy video slides
  • ROS 2 and Gazebo Integration Best Practices video slides
  • Chain-Aware ROS Evaluation Tool (CARET) video slides
  • ROS 2 network monitoring video slides
  • How custom tasks are defined, assigned, and executed in Open-RMF video slides
  • A practitioner's guide to ros2_control video slides
  • Zenoh: How to Make ROS 2 Work at any Scale and Integrate with Anything video slides
  • A case study in optics manufacturing with MoveIt2 and ros2_control video slides
  • 20/20 Robot Vision - How to setup cameras in ROS 1 & ROS 2 using camera_aravis video slides
  • Filter your ROS 2 content video slides
  • Evolving Message Types, and Other Interfaces, Over Time video slides
  • Migrating from ROS1 to ROS 2 - choosing the right bridge video slides
  • On Use of Nav2 Smac Planners video slides
  • Bazel and ROS 2 – building large scale safety applications video slides
  • Native Rust components for ROS 2 video slides
  • The ROS build farm and you: How ROS packages you release become binary packages. video slides
  • mROS 2: yet another runtime environment onto embedded devices video slides
  • ROS 2 & Edge Impulse: Embedded AI in robotics applications video slides
  • micro-ROS goes Automotive: supporting AUTOSAR-based microcontrollers video slides
  • An open architecture for Hardware Acceleration in ROS 2 video slides
  • ROS 2 and the Crazyflie: Aerial swarms and Autonomy with a tiny flying robot video slides
  • A Raspberry Pi image with ROS 2 + RT and a customizable image builder video slides

ROSCon 2021

Program announcement(slides + videos)

ROSCon Jp 2021

Program announcement(slides + videos)

ROSCon 2020

Program announcement(slides + videos)

ROSCon 2019

Program announcement(slides + videos)

ROSCon Fr 2019

Program announcement(slides + videos)

ROS-I EU Spring 2019 Workshop

  • Current Status of ROS 2 Hands-on Feature Overview Slides

2019

  • Robot Modularity with Xilinx and H-ROS (Xilinx Inc.) Video

ROSCon JP 2018 (english slide presentations only)

  • What's next for ROS? (from slide 24 onwards) Slides Video

ROSCon 2018

program announcement

  • Hands-on ROS 2: A Walkthrough
  • ROS 2 on Autonomous Driving Vehicles
  • RViz – The tale of a migration to ROS 2.0
  • Launch for ROS 2
  • Getting involved in ROS 2 development
  • Planning to Plan: Plugins All The Way Down
  • Leveraging DDS Security in ROS2
  • Arm DDS Security library: Adding secure security to ROS2
  • ROS2: Supercharging the Jaguar4x4
  • Performance Test - A Tool for Communication Middleware Performance Measuring
  • ROS2 for Android, iOS and Universal Windows Platform: a demonstration of ROS2’s portability, and cross-platform and cross-language capabilities
  • Integrating ROS and ROS2 on mixed-critical robotic systems based on embedded heterogeneous platforms
  • Towards ROS 2 microcontroller meta cross-compilation
  • Node.js Client & Web Bridge Ready for ROS 2.0
  • RCLAda: the Ada client library for ROS2

Embedded World Conference 2018

2018

  • ROS2 - The Robot Operating System Version 2 (TNG Technology Consulting GmbH) Slides Video

ROS Industrial Conference 2017

  • micro Robot Operating System: ROS for highly resource-constrained devices Slides
  • ROS2 - it's coming Slides

ROSCon 2017

  • The ROS 2 vision for advancing the future of robotics development Slides Video
  • ROS2 Fine Tuning Slides Video
  • SLAM on Turtlebot2 using ROS2 Slides Video
  • Using ROS2 for Vision-Based Manipulation with Industrial Robots Slides Video

2017

  • HyphaROS ROS 2.0 Introduction slides

ROS Industrial Conference 2016

  • ROS 2.0 AND OPC UA: A STATUS UPDATE Slides

ROSCon 2016

ROSCon 2015

Papers

Podcasts

Services

Cloud robotics

Robotics Capture the Flag (RCTF)

  • rctf-list - A list of Robotics CTF (RCTF) scenarios.

Companies

Organizations

Working Groups

License

License: CC BY-NC-SA 4.0