Awesome Robot Operating System 2 (ROS 2) 

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.
Contents
Packages
Demonstrations
- adlink_ddsbot - The ROS 2.0/1.0 based robots swarm architecture (opensplice DDS).

- adlink_neuronbot - ROS2/DDS robot pkg for human following and swarm.

- turtlebot3 - ROS2 based TurtleBot3 demo including Bringup, Teleop and Cartographer.

Examples
Benchmarking
- ros2_benchmarking - Framework for ROS2 benchmarking. ROS2 communication characteristics can be evaluated on several axes, quickly and in an automated way.

- performance_test - Test performance and latency of various communication means like ROS 2, FastRTPS and Connext DDS Micro.

Containerization
- docker-ros2-ospl-ce - A dockerfile to build a ROS2 + OpenSplice CE container.

- ros2_java_docker - Dockerfiles for building ros2_java with OpenJDK and Android.

- micro-ROS/docker - Docker-related material to setup, configure and develop with micro-ROS hardware.
Ecosystem
- rosbag2 - ROS2 native rosbag.

- rviz - 3D Robot Visualizer.

- urdfdom - URDF (U-Robot Description Format) library which provides core data structures and a simple XML parser

- urdfdom_headers - Headers for URDF parsers.

- ros2cli - ROS 2 command line tools.

- orocos_kinematics_dynamics - Orocos Kinematics and Dynamics C++ library.

- pydds - Simple DDS Python API for Vortex Lite and for OpenSplice.

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_controllers - Description of ros_controllers.

- geometry2 - A set of ROS packages for keeping track of coordinate transforms.

- cartographer - Real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.

- vision_opencv - Packages for interfacing ROS2 with OpenCV.

- teleop_twist_keyboard - Generic Keyboard Teleop for ROS2.

- teleop_twist_joy - Simple joystick teleop for twist robots.

- navigation - ROS2 Navigation stack.

- diagnostics - Forked version of the original ROS1 Diagnostics for ROS 2 (currently diagnostics_updater only).

- robot_state_publisher - Forked version of the original ROS Robot State Publisher with all modifications to compile within a ROS2 Ecosystem.

- common_interfaces - A set of packages which contain common interface files (.msg and .srv).

- ros2_object_map - “Mark tag of objects on map when SLAM”.

- ros2_object_analytics - Object Analytics (OA) is ROS2 wrapper for realtime object detection, localization and tracking.

- ros2_intel_movidius_ncs - ROS2 wrapper for Movidius™ Neural Compute Stick (NCS) Neuronal Compute API.

- ros2_moving_object - Addressing moving objects based on messages generated by Object Analytics
ros2_object_analytics
. 
- ros2_openvino_toolkit - ROS2 wrapper for CV API of OpenVINO™ (human vision emulation).

- ros2_grasp_library - Probably a grasp library :).

- apriltag_ros - ROS2 node for AprilTag detection.

- ros2-web-bridge - Bridging your browser to the ROS 2.0.

- 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-tensorflow - ROS2 nodes for computer vision tasks in Tensorflow.

- ros2_pytorch - ROS2 nodes for computer vision tasks in PyTorch
.
- pid - A PID controller for ROS2.

- system-modes - System modes for ROS 2 and micro-ROS.
Middleware
“System” bindings
- rclandroid - Android API for ROS2.

- rclnodejs - Node.js version of ROS2.0 client.

- riot-ros2 - This project enables ROS2 to run on microcontrollers using the RIOT Operating System.

Driver layer
Client libraries
- rclada - ROS Client Library for Ada.

- rclcpp - ROS Client Library for C++.

- rclgo - ROS Client Library for Go.

- rclpy - ROS Client Library for Python.

- rcljava - ROS Client Library for Java.

- rclnodejs - ROS Client Library for Node.js.

- rclobjc - ROS Client Library for Objective C (for iOS).

- rclc - ROS Client Library for C.

- ros2_rust - Rust bindings for ROS2.

- ros2_dotnet - .NET bindings for ROS2.

Client libraries common
- rcl - Library to support implementation of language specific ROS Client Libraries.

- system_tests - Tests for rclcpp and rclpy.

- rcl_interfaces - A repository for messages and services used by the ROS client libraries.

IDL generators
RMW (ROS middleware)
- rmw - Contains the ROS middleware API.

- rmw_connext_cpp - Implement the ROS middleware interface using RTI Connext static code generation in C++.

- rmw_fastrtps_cpp - Implement the ROS middleware interface using eProsima FastRTPS static code generation in C++.

- rmw_dps - Implementation of the ROS Middleware (rmw) Interface using Intel’s Distributed Publish & Subscribe.

- rmw_opensplice_cpp - Implement the ROS middleware interface using PrismTech OpenSplice static code generation in C++.

- rmw_coredx - CoreDX DDS integration layer for ROS2.

- rmw_freertps - RMW implementation using freertps.

- rcutils - Common C functions and data structures used in ROS 2.

- freertps - a free, portable, minimalist, work-in-progress RTPS implementation.

- rmw_zhe - An ROS2 RMW implementation on top of Zhe.

- rmw_cyclonedds - ROS2 RMW layer for Eclipse Cyclone DDS.

DDS communication mechanism implementations
- Connext DDS - Connectivity Software for Developing and Integrating IIoT Systems. :heavy_dollar_sign:
- Fast-RTPS - Implementation of RTPS Standard (RTPS is the wire interoperability protocol for DDS).

- OpenSplice - Implementation of the OMG DDS Standard.
:heavy_dollar_sign:
- CoreDX DDS - Implementation of Twin Oaks Computing, Inc.. :heavy_dollar_sign:
- freertps - A free, portable, minimalist, work-in-progress RTPS implementation.

- cdds - Cyclone DDS is developed completely in the open and is undergoing the acceptance process to become part of Eclipse IoT.

- Micro-XRCE-DDS) - An XRCE DDS implementation (supported by microROS).

Build system (Linux)
- meta-ros2 - ROS 2 Layer for OpenEmbedded Linux.

Build system (ROS2)
- ci - ROS 2 CI Infrastructure.

- ament_cmake_export_jars - The ability to export Java archives to downstream packages in the ament buildsystem in CMake.

- rmw_implementation_cmake - CMake functions which can discover and enumerate available implementations.

- rmw_implementation - CMake infrastructure and dependencies for rmw implementations.

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 suppport AUTOSAR in the future.
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
Books
No books published yet
Courses
Presentations
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
Robotics Capture the Flag (RCTF)
Companies
Working Groups
- Embedded Working Group
- Navigation Working Group
- Safety Working Group
- Security Working Group
- Technical Steering Committee
- Tooling Working Group
License
