Skip to main content

Module 1 — The Robotic Nervous System (ROS 2)

Focus: Middleware for robot control.

A humanoid robot is a distributed system: dozens of sensors and motors, each producing or consuming data at different rates, often on different computers. Something has to carry messages between the camera and the planner, between the planner and the leg controllers, reliably and in real time. That "something" is the Robot Operating System 2 (ROS 2) — the nervous system of the robot.

ROS 2 is not an operating system in the Linux sense. It is middleware: a set of libraries and conventions for writing modular programs (nodes) that discover each other and exchange data over a network, built on top of the industrial DDS (Data Distribution Service) standard.

What you will learn​

  • Nodes, Topics, and Services — the three core communication patterns, plus Actions for long-running goals.
  • Bridging Python agents to ROS controllers using rclpy, so an LLM-driven planner can command real motors.
  • URDF (Unified Robot Description Format) — how to describe a humanoid's links, joints, and kinematics so simulators and controllers understand its body.

Why ROS 2 (and not ROS 1)?​

ConcernROS 1ROS 2
TransportCustom TCPROS, central masterDDS, fully decentralized (no single point of failure)
Real-timeNot designed for itReal-time friendly (QoS policies)
Multi-robotPainfulFirst-class
SecurityNoneDDS-Security (auth + encryption)
PlatformsLinux onlyLinux, Windows, macOS, microcontrollers (micro-ROS)

For Physical AI we use ROS 2 (the Humble or Iron LTS distributions) because humanoids are multi-process, safety-critical, and real-time.

The mental model​

Picture every capability of the robot as an independent program:

[camera_node] --/image_raw--> [perception_node] --/detections--> [planner_node]
|
/cmd_vel v
[imu_node] --/imu/data--> [balance_node] <--/joint_states-- [leg_controller_node]

Nodes don't know about each other directly — they publish and subscribe to named channels (topics) and call named services. This decoupling is what lets you swap a real camera for a simulated one, or a scripted planner for an LLM-driven one, without changing any other node.

How this module connects to the rest of the book​

Everything downstream rides on ROS 2. In Module 2 your Gazebo simulation publishes the very same topics a real robot would. In Module 3, Isaac ROS provides hardware-accelerated nodes for VSLAM and navigation. In Module 4, your VLA agent ultimately produces a stream of ROS 2 action goals. Master the nervous system here, and the brain in later modules has something to command.

Begin with Nodes, Topics, and Services →.