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.
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
- Forks
- Operating systems
- Packaging
- Documentation
- Community
- Books
- Courses
- Presentations
- Papers
- Podcasts
- Services
- Companies
- Organizations
- Working groups
Packages
Data collection
- ros2_data_collection - Collect, validate and send data reliably from ROS 2 to create APIs and dashboards.
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
- turtlebot2_demo - TurtleBot 2 demos using ROS 2.
- examples/rclcpp - C++ examples.
- examples/rclpy - Python examples.
- rcljava_examples - Package containing examples of how to use the rcljava API.
- ros2_talker_android, ros2_listener_android - Example Android apps for the ROS2 Java bindings.
- zed-ros2-examples - Examples and tutorials use the ZED cameras in the ROS2.
- realsense-ros:ros2-branch - ROS2 Wrapper for Intel® RealSense™ Devices
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.
- ros-tooling/cross_compile - Cross compile ROS and ROS 2 workspaces to non-native architectures and generate corresponding Docker images.
- ros2-docker - Connecting ROS 2 nodes running in Docker containers over the internet.
- osrf/docker_images - Dockerfiles of Official Library on Docker Hub and OSRF Organization on Docker Hub.
- docker-ros2-desktop-vnc - Dockerfiles to provide HTML5 VNC interface to access Ubuntu LXDE + ROS2.
- ros2-lxd - Install ROS 2 Humble in Ubuntu 20.04 or 18.04 using LXD containers.
Networking
- Husarnet VPN - A P2P, secure network layer dedicated for ROS & ROS 2.
Ecosystem
- Link ROS - Cloud Logging for ROS 1 and ROS 2.
- 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.
- Webots - Robot simulator for ROS 2.
- 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.
- ROS2 For Unity - An asset package which enables high-performance communication between Unity3D simulations and ROS2 ecosystem.
Interactivity
- Jupyter ROS2 - Jupyter widget helpers for ROS2.
Penetration testing
- aztarna - A footprinting tool for robots.
- ros2_fuzzer - ROS2 Topic & Service Fuzzer.
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.
- ros2-ORB_SLAM2 - ROS2 node wrapping the ORB_SLAM2 library.
- basalt_ros2 - ROS2 wrapper for Basalt VIO.
- cartographer - Real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.
- slam_gmapping - Slam Gmapping for ROS2.
- slam_toolbox - Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS.
- lidarslam_ros2 - ROS2 package of 3D lidar slam using ndt/gicp registration and pose-optimization.
- li_slam_ros2 - ROS2 package of tightly-coupled lidar inertial ndt/gicp slam referenced from LIO-SAM.
- octomap_server2 - ROS2 stack for mapping with OctoMap. Port of the ROS1 octomap_mapping package.
- 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.