Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Logo

Installation Manual

  • 1. Linux binary installation
  • 2. Linux installation from sources
  • 3. Docker installation

Overview

  • 1. Vulcanexus Overview
  • 2. Vulcanexus Middleware
  • 3. Developer Tools
    • 3.1. ROS 2 QoS Profiles Manager
    • 3.2. ROS 2 Monitor
    • 3.3. Fast DDS Statistics Backend
    • 3.4. ROS 2 Shapes Demo
    • 3.5. ROS 2 Router
    • 3.6. ROS 2 Record & Replay
    • 3.7. Fast DDS Spy
    • 3.8. Webots
  • 4. Vulcanexus Metapackages
  • 5. ROS 2 Documentation
    • 5.1. Installation
      • 5.1.1. Ubuntu (deb packages)
      • 5.1.2. Windows (binary)
      • 5.1.3. RHEL (RPM packages)
      • 5.1.4. Alternatives
        • 5.1.4.1. Ubuntu (source)
        • 5.1.4.2. Ubuntu (binary)
        • 5.1.4.3. Windows (source)
        • 5.1.4.4. RHEL (source)
        • 5.1.4.5. RHEL (binary)
        • 5.1.4.6. macOS (source)
        • 5.1.4.7. Latest development (source)
      • 5.1.5. Maintain source checkout
      • 5.1.6. Testing with pre-release binaries
      • 5.1.7. RMW implementations
        • 5.1.7.1. DDS implementations
          • 5.1.7.1.1. Eclipse Cyclone DDS
          • 5.1.7.1.2. GurumNetworks GurumDDS
          • 5.1.7.1.3. RTI Connext DDS
          • 5.1.7.1.4. eProsima Fast DDS
        • 5.1.7.2. Non-DDS-Implementations
          • 5.1.7.2.1. Zenoh
    • 5.2. Distributions
      • 5.2.2.1. Jazzy Jalisco (jazzy)
        • 5.2.2.1.1. Jazzy Jalisco changelog
      • 5.2.2.2. Humble Hawksbill (humble)
        • 5.2.2.2.1. Humble Hawksbill changelog
      • 5.2.2.3. Rolling Ridley (rolling)
      • 5.2.2.4. Development Distribution
        • 5.2.2.4.1. Kilted Kaiju (codename ‘kilted’; May, 2025)
          • ROS 2 Kilted Kaiju Complete Changelog
      • 5.2.2.5. End-of-Life Distributions
        • 5.2.2.5.1. Iron Irwini (iron)
          • Iron Irwini Changelog
        • 5.2.2.5.2. Galactic Geochelone (galactic)
          • Galactic Geochelone changelog
        • 5.2.2.5.3. Foxy Fitzroy (foxy)
        • 5.2.2.5.4. Eloquent Elusor (eloquent)
        • 5.2.2.5.5. Dashing Diademata (dashing)
        • 5.2.2.5.6. Crystal Clemmys (crystal)
        • 5.2.2.5.7. Bouncy Bolson (bouncy)
        • 5.2.2.5.8. Ardent Apalone (ardent)
        • 5.2.2.5.9. Beta 3 (r2b3)
        • 5.2.2.5.10. Beta 2 (r2b2)
        • 5.2.2.5.11. Beta 1 (Asphalt)
        • 5.2.2.5.12. Alphas
      • 5.2.2.6. Development process for a release
    • 5.3. Tutorials
      • 5.3.1. Beginner: CLI tools
        • 5.3.1.1. Configuring environment
        • 5.3.1.2. Using turtlesim, ros2, and rqt
        • 5.3.1.3. Understanding nodes
        • 5.3.1.4. Understanding topics
        • 5.3.1.5. Understanding services
        • 5.3.1.6. Understanding parameters
        • 5.3.1.7. Understanding actions
        • 5.3.1.8. Using rqt_console to view logs
        • 5.3.1.9. Launching nodes
        • 5.3.1.10. Recording and playing back data
      • 5.3.2. Beginner: Client libraries
        • 5.3.2.1. Using colcon to build packages
        • 5.3.2.2. Creating a workspace
        • 5.3.2.3. Creating a package
        • 5.3.2.4. Writing a simple publisher and subscriber (C++)
        • 5.3.2.5. Writing a simple publisher and subscriber (Python)
        • 5.3.2.6. Writing a simple service and client (C++)
        • 5.3.2.7. Writing a simple service and client (Python)
        • 5.3.2.8. Creating custom msg and srv files
        • 5.3.2.9. Implementing custom interfaces
        • 5.3.2.10. Using parameters in a class (C++)
        • 5.3.2.11. Using parameters in a class (Python)
        • 5.3.2.12. Using ros2doctor to identify issues
        • 5.3.2.13. Creating and using plugins (C++)
      • 5.3.3. Intermediate
        • 5.3.3.1. Managing Dependencies with rosdep
        • 5.3.3.2. Creating an action
        • 5.3.3.3. Writing an action server and client (C++)
        • 5.3.3.4. Writing an action server and client (Python)
        • 5.3.3.5. Writing a Composable Node (C++)
        • 5.3.3.6. Composing multiple nodes in a single process
        • 5.3.3.7. Using the Node Interfaces Template Class (C++)
        • 5.3.3.8. Monitoring for parameter changes (C++)
        • 5.3.3.9. Monitoring for parameter changes (Python)
        • 5.3.3.10. Launch
          • 5.3.3.10.1. Creating a launch file
          • 5.3.3.10.2. Integrating launch files into ROS 2 packages
          • 5.3.3.10.3. Using substitutions
          • 5.3.3.10.4. Using event handlers
          • 5.3.3.10.5. Managing large projects
        • 5.3.3.11. tf2
          • 5.3.3.11.1. Introducing tf2
          • 5.3.3.11.2. Writing a static broadcaster (Python)
          • 5.3.3.11.3. Writing a static broadcaster (C++)
          • 5.3.3.11.4. Writing a broadcaster (Python)
          • 5.3.3.11.5. Writing a broadcaster (C++)
          • 5.3.3.11.6. Writing a listener (Python)
          • 5.3.3.11.7. Writing a listener (C++)
          • 5.3.3.11.8. Adding a frame (Python)
          • 5.3.3.11.9. Adding a frame (C++)
          • 5.3.3.11.10. Using time (C++)
          • 5.3.3.11.11. Traveling in time (C++)
          • 5.3.3.11.12. Debugging
          • 5.3.3.11.13. Quaternion fundamentals
          • 5.3.3.11.14. Using stamped datatypes with tf2_ros::MessageFilter
        • 5.3.3.12. Testing
          • Running Tests in ROS 2 from the Command Line
          • Writing Basic Tests with C++ with GTest
          • Writing Basic Tests with Python
          • Writing Basic Integration Tests with launch_testing
          • Testing Your Code with the ROS Build Farm
        • 5.3.3.13. URDF
          • 5.3.3.13.1. Building a visual robot model from scratch
          • 5.3.3.13.2. Building a movable robot model
          • 5.3.3.13.3. Adding physical and collision properties
          • 5.3.3.13.4. Using Xacro to clean up your code
          • 5.3.3.13.5. Using URDF with robot_state_publisher (C++)
          • 5.3.3.13.6. Using URDF with robot_state_publisher (Python)
          • 5.3.3.13.7. Generating an URDF File
        • 5.3.3.14. RViz
          • 5.3.3.14.1. RViz User Guide
          • 5.3.3.14.2. Building a Custom RViz Display
          • 5.3.3.14.3. Building a Custom RViz Panel
          • 5.3.3.14.4. Marker: Display types
      • 5.3.4. Advanced
        • 5.3.4.1. Enabling topic statistics (C++)
        • 5.3.4.2. Using Fast DDS Discovery Server as discovery protocol [community-contributed]
        • 5.3.4.3. Implementing a custom memory allocator
        • 5.3.4.4. Ament Lint CLI Utilities
        • 5.3.4.5. Unlocking the potential of Fast DDS middleware [community-contributed]
        • 5.3.4.6. Improved Dynamic Discovery
        • 5.3.4.7. Recording a bag from a node (C++)
        • 5.3.4.8. Recording a bag from a node (Python)
        • 5.3.4.9. Reading from a bag file (C++)
        • 5.3.4.10. How to use ros2_tracing to trace and analyze an application
        • 5.3.4.11. Simulators
          • 5.3.4.11.1. Webots
            • Installation (Ubuntu)
            • Installation (Windows)
            • Installation (macOS)
            • Setting up a robot simulation (Basic)
            • Setting up a robot simulation (Advanced)
            • Setting up a Reset Handler
            • The Ros2Supervisor Node
          • 5.3.4.11.2. Gazebo
            • Setting up a robot simulation (Gazebo)
        • 5.3.4.12. Security
          • 5.3.4.12.1. Setting up security
          • 5.3.4.12.2. Understanding the security keystore
          • 5.3.4.12.3. Ensuring security across machines
          • 5.3.4.12.4. Examining network traffic
          • 5.3.4.12.5. Setting access controls
          • 5.3.4.12.6. Deployment Guidelines
      • 5.3.5. Demos
        • 5.3.5.1. Using quality-of-service settings for lossy networks
        • 5.3.5.2. Managing nodes with managed lifecycles
        • 5.3.5.3. Setting up efficient intra-process communication
        • 5.3.5.4. Recording and playing back data with rosbag using the ROS 1 bridge
        • 5.3.5.5. Understanding real-time programming
        • 5.3.5.6. Experimenting with a dummy robot
        • 5.3.5.7. Logging
        • 5.3.5.8. Creating a content filtering subscription
        • 5.3.5.9. Configure service introspection
        • 5.3.5.10. Wait for acknowledgment
      • 5.3.6. Miscellaneous
        • 5.3.6.1. Deploying on IBM Cloud Kubernetes [community-contributed]
        • 5.3.6.2. Using Eclipse Oxygen with rviz2 [community-contributed]
        • 5.3.6.3. Building a real-time Linux kernel [community-contributed]
        • 5.3.6.4. Building a package with Eclipse 2021-06
    • 5.4. How-to Guides
      • 5.4.1. Installation troubleshooting
      • 5.4.2. Developing a ROS 2 package
      • 5.4.3. Documenting a ROS 2 package
      • 5.4.4. ament_cmake user documentation
      • 5.4.5. ament_cmake_python user documentation
      • 5.4.6. Migrating from ROS 1 to ROS 2
        • 5.4.6.1. Migrating Packages
        • 5.4.6.2. Migrating your package.xml to format 2
        • 5.4.6.3. Migrating Interfaces
        • 5.4.6.4. Migrating a C++ Package Example
        • 5.4.6.5. Migrating C++ Packages Reference
        • 5.4.6.6. Migrating a Python Package Example
        • 5.4.6.7. Migrating Python Packages Reference
        • 5.4.6.8. Migrating Launch Files
        • 5.4.6.9. Migrating Parameters
        • 5.4.6.10. Migrating Scripts
      • 5.4.7. Using XML, YAML, and Python for ROS 2 Launch Files
      • 5.4.8. Using ROS 2 launch to launch composable nodes
      • 5.4.9. Passing ROS arguments to nodes via the command-line
      • 5.4.10. Synchronous vs. asynchronous service clients
      • 5.4.11. DDS tuning information
      • 5.4.12. rosbag2: Overriding QoS Policies
      • 5.4.13. Working with multiple ROS 2 middleware implementations
      • 5.4.14. Cross-compilation
      • 5.4.15. Releasing a Package
        • 5.4.15.1. Index Your Packages
        • 5.4.15.2. First Time Release
        • 5.4.15.3. Subsequent Releases
        • 5.4.15.4. Release Team / Repository
        • 5.4.15.5. Release Track
      • 5.4.16. Using Python Packages with ROS 2
      • 5.4.17. Running ROS 2 nodes in Docker [community-contributed]
      • 5.4.18. Visualizing ROS 2 data with Foxglove Studio
      • 5.4.19. ROS 2 Core Maintainer Guide
      • 5.4.20. Building a custom deb package
      • 5.4.21. Building ROS 2 with tracing
      • 5.4.22. Topics vs Services vs Actions
      • 5.4.23. Using variants
      • 5.4.24. Using the ros2 param command-line tool
      • 5.4.25. Using ros1_bridge with upstream ROS on Ubuntu 22.04
      • 5.4.26. Configure Zero Copy Loaned Messages
      • 5.4.27. ROS 2 on Raspberry Pi
      • 5.4.28. Using Callback Groups
      • 5.4.29. Getting Backtraces in ROS 2
      • 5.4.30. IDEs and Debugging [community-contributed]
      • 5.4.31. Setup ROS 2 with VSCode and Docker [community-contributed]
      • 5.4.32. Using Custom Rosdistro Version
    • 5.5. Concepts
      • 5.5.1. Basic Concepts
        • 5.5.1.1. Nodes
        • 5.5.1.2. Discovery
        • 5.5.1.3. Interfaces
        • 5.5.1.4. Topics
        • 5.5.1.5. Services
        • 5.5.1.6. Actions
        • 5.5.1.7. Parameters
        • 5.5.1.8. Introspection with command line tools
        • 5.5.1.9. Launch
        • 5.5.1.10. Client libraries
      • 5.5.2. Intermediate Concepts
        • 5.5.2.1. The ROS_DOMAIN_ID
        • 5.5.2.2. Different ROS 2 DDS/RTPS vendors
        • 5.5.2.3. Logging and logger configuration
        • 5.5.2.4. Quality of Service settings
        • 5.5.2.5. Executors
        • 5.5.2.6. Topic statistics
        • 5.5.2.7. Overview and usage of RQt
        • 5.5.2.8. Composition
        • 5.5.2.9. Cross-compilation
        • 5.5.2.10. ROS 2 Security
        • 5.5.2.11. Tf2
      • 5.5.3. Advanced Concepts
        • 5.5.3.1. The build system
        • 5.5.3.2. Internal ROS 2 interfaces
        • 5.5.3.3. ROS 2 middleware implementations
    • 5.6. Contact
    • 5.7. The ROS 2 Project
      • 5.7.1. Contributing
        • ROS 2 developer guide
        • Code style and language versions
        • Quality guide: ensuring code quality
        • ROS Build Farms
        • Windows Tips and Tricks
        • Contributing to ROS 2 Documentation
      • 5.7.2. Features Status
      • 5.7.3. Feature Ideas
      • 5.7.4. Roadmap
      • 5.7.5. ROSCon Talks
      • 5.7.6. Project Governance
      • 5.7.7. Marketing
      • 5.7.8. Metrics
    • 5.8. Package Docs
    • 5.9. Related Projects
      • 5.9.4.1. Intel ROS 2 Projects
      • 5.9.4.2. NVIDIA ROS 2 Projects
    • 5.10. Glossary
    • 5.11. Citations
  • 6. micro-ROS Documentation
    • 6.1. Getting started micro-ROS
    • 6.2. Build System Components
    • 6.3. micro-ROS User API
      • 6.3.1. Nodes
      • 6.3.2. Publishers and subscribers
      • 6.3.3. Services
      • 6.3.4. Executor and timers
      • 6.3.5. Actions
      • 6.3.6. Parameter Server
      • 6.3.7. Middleware API
      • 6.3.8. micro-ROS Utilities
      • 6.3.9. QoS configuration
      • 6.3.10. Multithreading
    • 6.4. Benchmarking
  • 7. Vulcanexus Enhancements
    • 7.1. Support for Fast DDS v3
    • 7.2. Topic Keys
    • 7.3. Easy Mode

Tutorials

  • 1. Vulcanexus Core Tutorials
    • 1.1. Vulcanexus WiFi & Large Data Tutorials
      • 1.1.1. Easy Mode Tutorial
      • 1.1.2. Easy Mode CLI Tutorial
      • 1.1.3. How to solve wireless network issues in ROS 2
      • 1.1.4. How to handle large data video streaming in ROS 2
      • 1.1.5. How to compress images for video streaming in ROS 2
    • 1.2. Scalability and Large Scale Networks Tutorials
      • 1.2.1. How to Use a Discovery Server to Optimize ROS 2 Node Discovery
      • 1.2.2. How to Use DDS Router for Scalable ROS 2 Network Communication
    • 1.3. Discovery Server Tutorials
      • 1.3.1. Discovery Server Minimal Example
    • 1.4. Vulcanexus Security Tutorials
      • 1.4.1. Storing private keys in Hardware Secure Modules (HSM)
    • 1.5. Vulcanexus QoS Tutorials
      • 1.5.1. Configuring Fast-DDS QoS via XML profiles
      • 1.5.2. Modifying Ownership and Ownership Strength QoS Policy
      • 1.5.3. Modifying Partition QoS Policy
      • 1.5.4. Persistent Data using Durability QoS
      • 1.5.5. Static discovery between ROS 2 nodes with Initial Peers
      • 1.5.6. Change mutable QoS through get native API
    • 1.6. Vulcanexus Deployment Tutorials
      • 1.6.1. Communication between Vulcanexus and Fast DDS using ROS 2 generated IDLs
      • 1.6.2. Customizing Network Transports
      • 1.6.3. Connecting Nodes over an External Network
      • 1.6.4. Fast DDS - Vulcanexus Topic Intercommunication
      • 1.6.5. Static Discovery
      • 1.6.6. Modify Discovery Server locators on run-time
      • 1.6.7. TCP over WAN with Discovery Server
      • 1.6.8. Enabling multicast communication
      • 1.6.9. Topic Keys Tutorial
      • 1.6.10. Topic Instances Subscription Filtering Tutorial
  • 2. Vulcanexus Tools Tutorials
    • 2.1. ROS 2 network statistics inspection with ROS 2 Monitor
    • 2.2. ROS 2 recording with DDS Record & Replay
    • 2.3. Monitoring ROS 2 with Fast DDS Statistics Backend
    • 2.4. Fast DDS Statistics Backend Monitoring to SQL
    • 2.5. Hand-on ROS 2 Shapes Demo
    • 2.6. ROS 2 network statistics inspection with Prometheus
  • 3. Vulcanexus Cloud Tutorials
    • 3.1. Change ROS 2 Domain Id
    • 3.2. Change ROS 2 Domain to Discovery Server
    • 3.3. Debugging ROS 2 Router
    • 3.4. Configuring ROS 2 Router’s Topic QoS
    • 3.5. Vulcanexus Cloud and Kubernetes
    • 3.6. Edge-Cloud communication on WAN
    • 3.7. Edge-Cloud TLS communication on WAN
    • 3.8. Edge-Edge communication via Repeater
    • 3.9. Cloud ROS 2 MicroServices
    • 3.10. ROS 2 Router configuration via XML profiles
    • 3.11. ROS 2 Router configuration with Forwarding Routes
    • 3.12. Secure communications with ROS 2 Router
  • 4. Vulcanexus Micro Tutorials
    • 4.1. Custom Transports
    • 4.2. Creating custom types
    • 4.3. Reconnections and liveliness
    • 4.4. Integrating micro-ROS
    • 4.5. Memory management
    • 4.6. micro-ROS and Discovery Server

Use cases

  • 1. Vulcanexus Use Cases
    • 1.1. Mapping Webots environment with ROSbot 2R teleoperation
    • 1.2. Large data communication with ROS 2 (a practical example)
    • 1.3. Keyed Topics in ROS 2 Turtlesim Demo

Support

  • 1. Supported platforms
  • 2. Vulcanexus Releases
    • 2.1. Jazzy Jolo (v4.3.0)
    • 2.2. Jazzy Jolo previous versions
    • 2.3. Iron Imagination (v3.4.0)
    • 2.4. Iron Imagination previous versions
    • 2.5. Humble Hierro (v2.7.0)
    • 2.6. Humble Hierro previous versions
    • 2.7. Galactic Gamble

Appendixes

  • Glossary
Back to top

5.9. Related Projects¶

5.9.1. Gazebo¶

Gazebo (gazebosim.org) and its predecessor Gazebo Classic are the first open source choice for 3D physics simulation of ROS-based robots.

5.9.2. Large Community Projects¶

Large community projects involve multiple developers from all over the globe and are typically backed by a dedicated working group (cf. Project Governance).

  • ros2_control (control.ros.org): Flexible framework for real-time control of robots implemented with ROS 2.

  • Navigation2 (nav2.org): Comprehensive and flexible navigation stack for mobile robots using ROS 2.

  • MoveIt (moveit.ai): A rich platform for building manipulation applications featuring advanced kinematics, motion planning, control, collision checking, and much more.

  • micro-ROS (micro.ros.org): A platform for putting ROS 2 onto microcontrollers, starting at less than 100 kB of RAM.

5.9.3. Further Community Projects¶

The global ROS community develops and maintains hundreds of further packages on top of the core ROS 2 stack. Some of them come with their own websites for documentation. Your best entry point to discover these works is the ROS Index (index.ros.org).

Hint for developers: If you maintain a README.md file in the root of your package folder (which is not necessarily the root of your repository), this file is rendered into the overview page of your package at index.ros.org. The file may be used for documenting your package and supersedes the package documentation pages in the ROS Wiki from ROS 1. See the fmi_adapter package as an example.

5.9.4. Company-driven Projects¶

  • 5.9.4.1. Intel ROS 2 Projects
  • 5.9.4.2. NVIDIA ROS 2 Projects
Next
5.9.4.1. Intel ROS 2 Projects
Previous
5.8. Package Docs
Copyright © 2022, eProsima
Made with Furo
On this page
  • 5.9. Related Projects
    • 5.9.1. Gazebo
    • 5.9.2. Large Community Projects
    • 5.9.3. Further Community Projects
    • 5.9.4. Company-driven Projects