Unit 01 · lesson

Robots Need Software Systems

A robot is not one program.

Even a small robot may need software for sensors, motor commands, user input, logging, cameras, state estimation, planning, and safety behavior. Those pieces have different jobs, but they still need a way to find each other and exchange information.

That is the problem space ROS 2 lives in.

Start with the wrong mental model

The name Robot Operating System makes ROS sound like Ubuntu, Windows, or macOS.

That mental model will hurt you later.

In this course, treat ROS 2 as a robot software framework and communication ecosystem that runs on top of an operating system.

Your Ubuntu computer still owns things like:

  • users and permissions;
  • processes;
  • files and directories;
  • networking;
  • package installation through apt; and
  • the shell you type commands into.

ROS 2 adds robot-oriented libraries, command-line tools, packages, node APIs, message definitions, discovery, and communication patterns.

One robot, several responsibilities

Imagine a mobile robot with four software responsibilities:

Concept flow

A ROS 2 robot system separates responsibilities into nodes

A beginner ROS 2 mental model starts with responsibility boundaries: each node owns one job and exchanges information with other nodes through defined communication paths.

  1. CAMERA NODEpublishes image data
    sends
  2. TELEOP NODEpublishes driver commands
    commands
  3. MOTOR NODEreceives movement intent
    reports
  4. LOGGER NODErecords selected evidence
    supports
  5. SYSTEM INSPECTIONvisible graph, topics, and behavior

Do those have to be four separate computers?

No.

Do they have to be one giant program?

Also no.

ROS 2 lets a robot system be built from modular software components that communicate.

Inspect a tiny ROS 2 graph

The terminal below is a bounded Robotnix simulation. It does not connect to DDS, a real robot, a real ROS 2 workspace, or your host shell.

Ghostty terminal simulation

Inspect the ROS 2 graph before guessing

Use bounded ROS 2 CLI evidence to identify nodes, topics, publishers, subscribers, and message types in a simulated robot graph.

Ghostty Web renders the terminal, but this lesson still uses a controlled Robotnix command engine. No unrestricted operating-system shell is connected.

Commands worth trying
  • ros2 node list
  • ros2 topic list
  • ros2 node info /teleop_twist_keyboard
  • ros2 topic info /cmd_vel
  • ros2 interface show geometry_msgs/msg/Twist
Read a deterministic terminal transcript

This fallback runs the same bounded Robotnix simulation against the suggested command sequence. It does not connect to an operating-system shell or network.

Robotnix ROS 2 graph simulation
This is simulated graph evidence. No DDS network, robot, or operating-system shell is connected.
Type 'help' for the supported evidence path.

$ ros2 node list
/teleop_twist_keyboard
/robot_state_publisher
/velocity_smoother

$ ros2 topic list
/cmd_vel
/joint_states
/robot_description
/tf
/tf_static

$ ros2 node info /teleop_twist_keyboard
/teleop_twist_keyboard
  Subscribers:
  Publishers:
    /cmd_vel: geometry_msgs/msg/Twist
  Service Servers:
  Service Clients:
  Action Servers:
  Action Clients:

$ ros2 topic info /cmd_vel
Type: geometry_msgs/msg/Twist
Publisher count: 1
Subscription count: 1
Boundary: this simulated command publishes no real velocity messages.

$ ros2 interface show geometry_msgs/msg/Twist
# This expresses velocity in free space broken into linear and angular parts.
Vector3  linear
        float64 x
        float64 y
        float64 z
Vector3  angular
        float64 x
        float64 y
        float64 z

Use the output as evidence. A good answer names the node, the topic, and the message type instead of saying "ROS is running."

Why modular matters

If the camera code and motor code are separate, you can inspect, replace, restart, or test one without pretending the entire robot is one mystery application.

That does not automatically make the system simple.

It makes the boundaries visible.

And visible boundaries are easier to test.

Student action

Sketch a robot with at least four software responsibilities.

For each responsibility, write one sentence:

This part receives ______ and produces ______.

Do not use ROS vocabulary yet unless you already know it.

The point is to see why a communication framework exists before learning its names.

Checkpoint

Explain why this statement is inaccurate:

ROS 2 is the operating system installed instead of Ubuntu.

Your answer should name what Ubuntu does and what ROS 2 adds.