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:
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.
- CAMERA NODEpublishes image datasends
- TELEOP NODEpublishes driver commandscommands
- MOTOR NODEreceives movement intentreports
- LOGGER NODErecords selected evidencesupports
- 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.
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.
ros2 node listros2 topic listros2 node info /teleop_twist_keyboardros2 topic info /cmd_velros2 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 zUse 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.