Skip to main content

Chapter 1: ROS 2 Middleware

Introduction​

The Robot Operating System 2 (ROS 2) is not an operating system in the traditional sense. Instead, it's a sophisticated middleware framework that provides the communication backbone for robotic systems. Think of it as the nervous system that connects all parts of a robot, allowing them to communicate and coordinate.

ℹ️What You'll Learn
  • What ROS 2 is and why it exists
  • The architecture of ROS 2 middleware
  • How DDS (Data Distribution Service) powers ROS 2
  • Key differences between ROS 1 and ROS 2
  • When to use ROS 2 in your projects

What is ROS 2?​

ROS 2 is a flexible framework for writing robot software. It provides:

  • Communication Infrastructure: Libraries and tools for inter-process communication
  • Hardware Abstraction: Standard interfaces for sensors and actuators
  • Development Tools: Debugging, visualization, and simulation tools
  • Package Management: A ecosystem of reusable robotics packages

The Evolution from ROS 1​

ROS 2 was created to address limitations in the original ROS:

FeatureROS 1ROS 2
Real-time SupportLimitedFull support
Multi-robot SystemsDifficultNative support
SecurityBasicEnterprise-grade
Platform SupportPrimarily LinuxCross-platform
CommunicationCustom protocolDDS standard

The Middleware Architecture​

At the heart of ROS 2 lies the Data Distribution Service (DDS) – a proven industry standard for real-time, distributed systems.

DDS: The Communication Backbone​

DDS provides:

  • Publish-Subscribe Pattern: Decoupled communication between nodes
  • Quality of Service (QoS): Fine-grained control over message delivery
  • Discovery: Automatic detection of publishers and subscribers
  • Reliability: Guaranteed message delivery when needed
graph TB
A[Robot Sensors] -->|Publish| B[DDS Middleware]
B -->|Subscribe| C[Processing Nodes]
C -->|Publish| B
B -->|Subscribe| D[Actuators]
B -->|Subscribe| E[Visualization]

Key Components​

1. ROS Client Library (RCL)​

The RCL provides the core ROS 2 functionality in C. It handles:

  • Node lifecycle management
  • Publisher and subscriber creation
  • Service and action interfaces
  • Parameter management

2. Language Bindings​

ROS 2 supports multiple programming languages through client libraries:

  • rclcpp: C++ client library
  • rclpy: Python client library
  • rclj: Java client library
  • rclnodejs: Node.js client library
✅Python Developers

We'll be using rclpy extensively in Chapter 3 to build practical robotics applications in Python!

Quality of Service (QoS)​

One of ROS 2's most powerful features is its QoS system, inherited from DDS. QoS policies allow you to configure how messages are delivered:

Common QoS Profiles​

# Sensor data - fast, lossy
sensor_qos = QoSProfile(
reliability=ReliabilityPolicy.BEST_EFFORT,
durability=DurabilityPolicy.VOLATILE,
history=HistoryPolicy.KEEP_LAST,
depth=10
)

# Command data - reliable, important
command_qos = QoSProfile(
reliability=ReliabilityPolicy.RELIABLE,
durability=DurabilityPolicy.TRANSIENT_LOCAL,
history=HistoryPolicy.KEEP_ALL
)

QoS Parameters Explained​

  • Reliability: BEST_EFFORT (fast) vs RELIABLE (guaranteed)
  • Durability: VOLATILE (temporary) vs TRANSIENT_LOCAL (persistent)
  • History: KEEP_LAST (n messages) vs KEEP_ALL (everything)
  • Depth: Number of messages to keep in history
⚠️QoS Compatibility

Publishers and subscribers must have compatible QoS settings to communicate. Mismatched QoS profiles are a common source of communication issues!

ROS 2 Distributions​

ROS 2 releases follow a predictable schedule with codenames based on turtles:

  • Humble Hawksbill (2022) - Long Term Support (LTS)
  • Iron Irwini (2023)
  • Jazzy Jalisco (2024)
  • Rolling - Continuous development branch
ℹ️Which Version?

For production systems, use an LTS release like Humble. For learning and development, the latest stable release is recommended.

Real-World Applications​

ROS 2 powers robots across diverse industries:

Autonomous Vehicles​

  • Self-driving cars (Tier IV Autoware)
  • Delivery robots (Amazon Scout, Starship Technologies)
  • Agricultural robots (John Deere, Blue River Technology)

Industrial Robotics​

  • Manufacturing automation (ABB, KUKA)
  • Warehouse logistics (Fetch Robotics, Otto Motors)
  • Quality inspection systems

Service Robots​

  • Humanoid robots (Boston Dynamics, Agility Robotics)
  • Healthcare assistants
  • Hospitality and customer service robots

Installation Quick Start​

# Ubuntu 22.04 - Install ROS 2 Humble
sudo apt update
sudo apt install ros-humble-desktop

# Source the setup script
source /opt/ros/humble/setup.bash

# Verify installation
ros2 --help
✅Installation Complete

If you see the ROS 2 help output, you're ready to start building!

Key Takeaways​

  • ROS 2 is a middleware framework, not an operating system
  • DDS provides the robust communication infrastructure
  • QoS policies give fine-grained control over message delivery
  • ROS 2 is production-ready and used across industries
  • Multiple language bindings make ROS 2 accessible to all developers

What's Next?​

Now that you understand the middleware architecture, in Chapter 2 we'll dive into the fundamental communication patterns: Nodes, Topics, and Services. You'll learn how to create your first ROS 2 nodes and make them communicate!


Additional Resources​

Exercises​

  1. Install ROS 2 on your system following the official guide
  2. Explore the available ROS 2 commands: ros2 --help
  3. Run the talker-listener demo: ros2 run demo_nodes_cpp talker
  4. Research which DDS vendor implementations are available (e.g., Fast DDS, CycloneDDS)