A ROS Parameter is a key-value pair used for runtime configuration, stored on a centralized parameter server. Unlike messages sent over topics, parameters provide a static, globally accessible store for settings like sensor IDs, control gains, or operational modes. Nodes can get, set, and subscribe to changes in these values, enabling dynamic system reconfiguration without restarting processes. This decouples configuration logic from core application code, a fundamental design pattern in modular robotics software.
Glossary
ROS Parameter

What is ROS Parameter?
A ROS Parameter is a configuration value, stored on a parameter server, that nodes can dynamically retrieve, set, and monitor at runtime.
Parameters are defined in launch files or set programmatically via a node's API. In ROS 2, parameters are managed locally by each node but can be accessed remotely through the parameter service, with QoS policies ensuring reliable updates. The system supports standard data types (integers, floats, strings, lists) and complex, nested structures. Parameter events allow nodes to react immediately to configuration changes, facilitating behaviors like live calibration or mode switching, which is critical for embodied intelligence systems operating in dynamic physical environments.
Key Features of ROS Parameters
ROS Parameters are a core mechanism for runtime configuration, enabling dynamic tuning and centralized management of a robotic system's behavior without code recompilation.
Centralized Parameter Server
A ROS Parameter is stored on a centralized parameter server, a network-accessible key-value store. This server acts as a single source of truth for configuration data, decoupling configuration from node logic. Nodes can retrieve, set, and monitor parameters from this server at runtime.
- Decouples configuration: Node behavior can be altered without restarting the node or recompiling code.
- Hierarchical namespaces: Parameters are organized in a tree structure (e.g.,
/camera/driver/exposure) for logical grouping and to prevent naming collisions.
Dynamic Reconfiguration
Parameters are designed for runtime mutability. A node can change a parameter's value on the server, and other nodes can be notified of this change via parameter events. This enables:
- Online tuning: Adjust control gains, perception thresholds, or operational modes while the system is running.
- Adaptive behavior: Nodes can subscribe to parameter changes and reconfigure internal algorithms (e.g., updating a filter's cutoff frequency) without service interruptions.
- Tool integration: GUI tools like
rqt_reconfiguredynamically generate interfaces for live parameter adjustment.
Strictly Typed Values
ROS Parameters support a defined set of primitive and compound data types, ensuring data integrity across the distributed system. Supported types include:
- Primitives: Integers, floating-point numbers, strings, booleans.
- Compound: Lists (arrays) and dictionaries (maps) of the primitive types.
- Type enforcement: The parameter server and client libraries enforce type checking, preventing a node from setting a string value for an integer parameter.
Example: A parameter max_velocity would be declared as a double, while joint_names would be a string[] list.
Declaration & Defaults
Nodes declare the parameters they use, optionally providing default values and descriptors. This declaration serves as a contract and enables automatic tooling.
- Default Values: Provide a fallback if a parameter is not set on the server, ensuring the node has a valid configuration at startup.
- Descriptors: Include a human-readable description, type constraints (e.g., integer range
{from: 0, to: 100, step: 1}), and read-only flags. These are used by dynamic reconfigure tools. - Initialization: At node startup, declared parameters are automatically fetched from the server, merging with defaults.
Namespace Scoping & Overrides
Parameters exist within a node's namespace, which is part of its fully qualified name. This scoping allows for parameter overrides at multiple levels, providing flexible configuration strategies.
- Node-level: Parameters are typically accessed relative to the node's namespace (e.g.,
~/gain). - Global-level: Parameters can be set in the global namespace (
/global_setting). - Launch File Overrides: The most powerful feature. Launch files can set, remap, or load parameters from YAML files, allowing environment-specific configurations (e.g.,
simulation.yamlvsphysical_robot.yaml).
Integration with Launch System & YAML
ROS Parameters are deeply integrated with the launch system, enabling complex, reproducible system configurations defined in static files.
- YAML Files: The standard format for bulk parameter definition. A YAML file maps parameter namespaces to their values.
- Launch File Loading: A launch file can load a YAML file onto the parameter server for a specific node or a group of nodes.
- Example YAML:
yamlcamera_driver: ros__parameters: exposure_time: 0.1 resolution: [1920, 1080] auto_white_balance: true
This allows version-controlled, environment-specific configurations to be applied at startup.
How ROS Parameters Work
A detailed look at the ROS Parameter Server, the central configuration system that allows nodes to dynamically retrieve and modify settings at runtime.
A ROS Parameter is a configuration value, stored on a centralized parameter server, that nodes can dynamically retrieve, set, and monitor at runtime. Unlike messages on topics, parameters are not designed for high-frequency data streams but for storing relatively static configuration like sensor IDs, control gains, or operational modes. This provides a declarative interface for system configuration, separating tunable settings from the core application logic.
Nodes interact with the parameter server using synchronous get and set operations through their client library. In ROS 2, parameters are managed locally within each node but can be accessed remotely via services, and changes are broadcast using parameter events. This architecture supports dynamic reconfiguration, where a node can update its behavior immediately in response to a parameter change, a feature essential for tuning and adapting robotic systems without restarting processes.
ROS Parameter vs. Other ROS Communication Methods
A feature comparison of the ROS Parameter server against the primary peer-to-peer communication methods in ROS/ROS 2, highlighting their distinct use cases and operational characteristics.
| Feature / Characteristic | Parameters | Topics (Pub/Sub) | Services (Req/Rep) | Actions (Async Goals) |
|---|---|---|---|---|
Primary Communication Model | Centralized server (client-server) | Decentralized, many-to-many publish-subscribe | Synchronous, one-to-one request-response | Asynchronous, one-to-one with feedback |
Data Flow Direction | Bidirectional (get/set) | Unidirectional (publisher → subscriber) | Bidirectional, synchronous (client request → server response) | Bidirectional, asynchronous (client goal → server feedback/result) |
Best Use Case | Runtime configuration and settings | Continuous stream of sensor data or state | On-demand computation or quick state queries | Long-running, interruptible tasks (e.g., navigation) |
Blocking Behavior | Non-blocking (get) / Can block (set if callback) | Non-blocking | Client blocks until response | Client non-blocking after goal sent; can cancel |
Data Persistence | Stored on server until deleted | Transient; only latest message cached by QoS | Transient; exists only for request lifetime | Transient; associated with goal lifetime |
Dynamic Reconfiguration | ||||
Built-in Feedback Mechanism | ||||
Typical Latency Profile | < 1 ms (local get) | 1-10 ms (depends on QoS & network) | 5-50 ms (blocking call overhead) | Variable (seconds to minutes, with periodic feedback) |
Primary ROS 2 QoS Policy | Not applicable (server-managed) | RELIABILITY, DURABILITY, DEADLINE | RELIABLE (typically) | RELIABLE (for feedback/result streams) |
Frequently Asked Questions
A ROS Parameter is a configuration value, stored on a parameter server, that nodes can dynamically retrieve, set, and monitor at runtime. These FAQs address its core mechanics, usage, and role within the ROS 2 architecture.
A ROS Parameter is a configuration variable stored on a centralized parameter server that nodes can dynamically access, modify, and monitor at runtime. It works by decoupling configuration data from node logic. When a node starts, it can declare parameters it uses, specifying default values and descriptors. The node's ROS client library (e.g., rclcpp or rclpy) handles communication with the parameter server, allowing the node to get, set, and list parameters. Changes to parameters can trigger parameter events, enabling nodes to reconfigure their behavior without restarting. This mechanism is essential for tuning system behavior, such as adjusting control gains, sensor thresholds, or operational modes, from a single interface like the command line or a launch file.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
A ROS Parameter exists within a broader ecosystem of communication patterns and system management tools. Understanding these related concepts is essential for designing robust, configurable robotic software.
ROS Node
A ROS Node is the fundamental executable process within a ROS graph that performs computation. Nodes are the entities that retrieve, set, and monitor parameters. They communicate with the centralized parameter server to access configuration values that dictate their runtime behavior, such as control gains, sensor thresholds, or operational modes.
ROS Launch System
The ROS Launch System is a tool for configuring and starting multiple ROS nodes from XML or Python launch files. It is the primary mechanism for setting initial parameter values at system startup. Launch files can:
- Load parameter files (YAML)
- Set parameters directly on nodes
- Use arguments to conditionally assign values This ensures a reproducible and declarative system configuration.
ROS 2 Parameter Event
A ROS 2 Parameter Event is a notification published by the parameter service whenever a parameter's value is changed on the server. This allows nodes to dynamically reconfigure their behavior at runtime without restarting. Nodes can subscribe to these events to receive callbacks for changes to specific parameters or entire parameter namespaces, enabling live tuning and adaptive control.
ROS 2 QoS (Quality of Service)
ROS 2 Quality of Service (QoS) is a set of configurable policies that govern communication reliability and timing between nodes. While parameters are typically retrieved via services (which have their own QoS), the underlying parameter server interactions are influenced by system-wide QoS settings. For critical parameters, engineers must ensure the QoS profile for the parameter client/server interaction meets latency and reliability requirements.
YAML Parameter Files
YAML files are the standard format for declaratively defining parameter names and values outside of code. These files are loaded by launch systems or via command-line tools (ros2 param load). They support:
- Scalar values (integers, floats, strings, booleans)
- Lists and dictionaries
- Nested namespaces using the
/separator This separates configuration from logic, adhering to the Twelve-Factor App methodology for configurable services.
Dynamic Reconfiguration (ROS 1 Legacy)
In ROS 1, dynamic_reconfigure was a separate but related pattern for providing a runtime graphical interface to adjust a subset of a node's parameters. It allowed for real-time tuning via a GUI. In ROS 2, this functionality is largely superseded by the native parameter event system and tools like rqt_reconfigure, which provide a unified interface for interacting with the core parameter server.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us