ROS 2 Documentation: Rolling Logo
  • Installation
    • Ubuntu (deb packages)
    • Windows (binary)
    • RHEL (RPM packages)
    • Alternatives
      • Ubuntu (source)
      • Ubuntu (binary)
      • Windows (source)
      • RHEL (source)
      • RHEL (binary)
      • macOS (source)
      • Latest development (source)
    • Maintain source checkout
    • Testing with pre-release binaries
    • DDS implementations
      • Eclipse Cyclone DDS
      • GurumNetworks GurumDDS
      • RTI Connext DDS
      • eProsima Fast DDS
  • Distributions
    • Jazzy Jalisco (jazzy)
      • Jazzy Jalisco changelog
    • Humble Hawksbill (humble)
      • Humble Hawksbill changelog
    • Rolling Ridley (rolling)
    • Development Distribution
      • Kilted Kaiju (codename ‘kilted’; May, 2025)
    • End-of-Life Distributions
      • Iron Irwini (iron)
        • Iron Irwini Changelog
      • Galactic Geochelone (galactic)
        • Galactic Geochelone changelog
      • Foxy Fitzroy (foxy)
      • Eloquent Elusor (eloquent)
      • Dashing Diademata (dashing)
      • Crystal Clemmys (crystal)
      • Bouncy Bolson (bouncy)
      • Ardent Apalone (ardent)
      • Beta 3 (r2b3)
      • Beta 2 (r2b2)
      • Beta 1 (Asphalt)
      • Alphas
    • Development process for a release
  • Tutorials
    • Beginner: CLI tools
      • Configuring environment
      • Using turtlesim, ros2, and rqt
      • Understanding nodes
      • Understanding topics
      • Understanding services
      • Understanding parameters
      • Understanding actions
      • Using rqt_console to view logs
      • Launching nodes
      • Recording and playing back data
    • Beginner: Client libraries
      • Using colcon to build packages
      • Creating a workspace
      • Creating a package
      • Writing a simple publisher and subscriber (C++)
      • Writing a simple publisher and subscriber (Python)
      • Writing a simple service and client (C++)
      • Writing a simple service and client (Python)
      • Creating custom msg and srv files
      • Implementing custom interfaces
      • Using parameters in a class (C++)
      • Using parameters in a class (Python)
      • Using ros2doctor to identify issues
      • Creating and using plugins (C++)
    • Intermediate
      • Managing Dependencies with rosdep
      • Creating an action
      • Writing an action server and client (C++)
      • Writing an action server and client (Python)
      • Writing a Composable Node (C++)
      • Composing multiple nodes in a single process
      • Using the Node Interfaces Template Class (C++)
      • Publishing messages using YAML files
      • Monitoring for parameter changes (C++)
      • Monitoring for parameter changes (Python)
      • Launch
        • Creating a launch file
        • Integrating launch files into ROS 2 packages
        • Using substitutions
        • Using event handlers
        • Managing large projects
      • tf2
        • Introducing tf2
        • Writing a static broadcaster (Python)
        • Writing a static broadcaster (C++)
        • Writing a broadcaster (Python)
        • Writing a broadcaster (C++)
        • Writing a listener (Python)
        • Writing a listener (C++)
        • Adding a frame (Python)
        • Adding a frame (C++)
        • Using time (C++)
        • Traveling in time (C++)
        • Debugging
        • Quaternion fundamentals
        • Using stamped datatypes with tf2_ros::MessageFilter
      • 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
      • URDF
        • Building a visual robot model from scratch
        • Building a movable robot model
        • Adding physical and collision properties
        • Using Xacro to clean up your code
        • Using URDF with robot_state_publisher (C++)
        • Using URDF with robot_state_publisher (Python)
        • Generating an URDF File
      • RViz
        • RViz User Guide
        • Building a Custom RViz Display
        • Building a Custom RViz Panel
        • Marker: Display types
    • Advanced
      • Enabling topic statistics (C++)
      • Using Fast DDS Discovery Server as discovery protocol [community-contributed]
      • Implementing a custom memory allocator
      • Ament Lint CLI Utilities
      • Unlocking the potential of Fast DDS middleware [community-contributed]
      • Improved Dynamic Discovery
      • Recording a bag from a node (C++)
      • Recording a bag from a node (Python)
      • Reading from a bag file (C++)
      • Reading from a bag file (Python)
      • How to use ros2_tracing to trace and analyze an application
      • Simulators
        • 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
        • Gazebo
          • Setting up a robot simulation (Gazebo)
      • Security
        • Setting up security
        • Understanding the security keystore
        • Ensuring security across machines
        • Examining network traffic
        • Setting access controls
        • Deployment Guidelines
    • Demos
      • Using quality-of-service settings for lossy networks
      • Managing nodes with managed lifecycles
      • Setting up efficient intra-process communication
      • Recording and playing back data with rosbag using the ROS 1 bridge
      • Understanding real-time programming
      • Experimenting with a dummy robot
      • Logging
      • Creating a content filtering subscription
      • Configure service introspection
      • Configure action introspection
      • Wait for acknowledgment
    • Miscellaneous
      • Deploying on IBM Cloud Kubernetes [community-contributed]
      • Using Eclipse Oxygen with rviz2 [community-contributed]
      • Building a real-time Linux kernel [community-contributed]
      • Building a package with Eclipse 2021-06
  • How-to Guides
    • Installation troubleshooting
    • Developing a ROS 2 package
    • Documenting a ROS 2 package
    • ament_cmake user documentation
    • ament_cmake_python user documentation
    • Migrating from ROS 1 to ROS 2
      • Migrating Packages
      • Migrating your package.xml to format 2
      • Migrating Interfaces
      • Migrating a C++ Package Example
      • Migrating C++ Packages Reference
      • Migrating a Python Package Example
      • Migrating Python Packages Reference
      • Migrating Launch Files
      • Migrating Parameters
      • Migrating Scripts
    • Using XML, YAML, and Python for ROS 2 Launch Files
    • Using ROS 2 launch to launch composable nodes
    • Passing ROS arguments to nodes via the command-line
    • Synchronous vs. asynchronous service clients
    • DDS tuning information
    • rosbag2: Overriding QoS Policies
    • Working with multiple ROS 2 middleware implementations
    • Cross-compilation
    • Releasing a Package
      • Index Your Packages
      • First Time Release
      • Subsequent Releases
      • Release Team / Repository
      • Release Track
    • Using Python Packages with ROS 2
    • Running ROS 2 nodes in Docker [community-contributed]
    • ROS 2 Core Maintainer Guide
    • Building a custom deb package
    • Building ROS 2 with tracing
    • Topics vs Services vs Actions
    • Using variants
    • Using the ros2 param command-line tool
    • Using ros1_bridge with upstream ROS on Ubuntu 22.04
    • Configure Zero Copy Loaned Messages
    • ROS 2 on Raspberry Pi
    • Using Callback Groups
    • Getting Backtraces in ROS 2
    • IDEs and Debugging [community-contributed]
    • Setup ROS 2 with VSCode and Docker [community-contributed]
    • Using Custom Rosdistro Version
  • Concepts
    • Basic Concepts
      • Nodes
      • Discovery
      • Interfaces
      • Topics
      • Services
      • Actions
      • Parameters
      • Introspection with command line tools
      • Launch
      • Client libraries
    • Intermediate Concepts
      • The ROS_DOMAIN_ID
      • Different ROS 2 middleware vendors
      • Logging and logger configuration
      • Quality of Service settings
      • Executors
      • Topic statistics
      • Overview and usage of RQt
      • Composition
      • Cross-compilation
      • ROS 2 Security
      • Tf2
    • Advanced Concepts
      • The build system
      • Internal ROS 2 interfaces
      • ROS 2 middleware implementations
  • Contact
  • The ROS 2 Project
    • 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
    • Features Status
    • Feature Ideas
    • Roadmap
    • ROSCon Talks
    • Project Governance
    • Marketing
    • Metrics
  • Package Docs
  • Related Projects
    • Intel ROS 2 Projects
    • NVIDIA ROS 2 Projects
    • Visualizing ROS 2 data with Foxglove
  • Glossary
  • Citations
ROS 2 Documentation: Rolling
  • Concepts
  • Intermediate Concepts
  • Edit on GitHub

Intermediate Concepts

These are the concepts that further your understanding of a basic ROS 2 system.

  • The ROS_DOMAIN_ID
  • Different ROS 2 middleware vendors
  • Logging and logger configuration
  • Quality of Service settings
  • Executors
  • Topic statistics
  • Overview and usage of RQt
  • Composition
  • Cross-compilation
  • ROS 2 Security
  • Tf2
Previous Next

© Copyright 2025, Open Robotics.

Built with Sphinx using a theme provided by Read the Docs.
Other Versions v: rolling
Releases
Humble
In Development
Rolling