A ROS parameter is a named configuration value a node exposes — a gain, a frame name, a topic — that can be set at launch and changed at runtime, so the same code adapts to different robots without recompiling.
A ROS parameter is a setting for a program — like a PID gain or a camera frame rate — that you can change without editing and rebuilding the code. Set it when the node starts, or tweak it while the robot runs.
The same node — a motor controller, a camera driver — often has to run on different robots with different settings: a different PID gain, a different frame name, a different speed limit. ROS parameters are how it adapts without touching the code.
What it is
A parameter is a named, typed configuration value a node exposes — a number, string, boolean, or list. Instead of hard-coding "max speed = 1.2 m/s," the node reads it from a parameter named max_speed. You can set parameters:
At launch, from a YAML config file (the common way to configure a whole robot).
At runtime, via the command line or another node, and a well-written node can react to the change immediately.
Configure without recompiling
One codebase, many robots: parameters carry the per-robot settings, so the same node behaves correctly everywhere without a rebuild.
Why it matters for real robots
Reusability. A generic lidar driver works on any robot; parameters supply the specific port, frame, and rate.
Tuning without rebuilds. Adjust a control gain live while the robot runs, watch the effect, and settle on a value — no compile cycle.
Reproducibility. A YAML file captures a robot's entire configuration, versioned alongside the code, so a setup is repeatable.
Deployment. The same software ships to a fleet; each unit's parameters localize it.
In practice
ros2 param list shows a node's parameters, ros2 param get /node name reads one, and ros2 param set /node name value changes it live. Launch files load parameter YAMLs so an entire multi-node system comes up correctly configured. ROS 2 also supports parameter callbacks (to validate or react to changes) and declaring parameters with descriptions and bounds.
Why it matters
Parameters are how ROS separates code from configuration — the reason one well-written node serves many robots and many situations. They're fundamental to building reusable, tunable, deployable robot software.