# [WARN] [parameter_handler]: Parameter 'my_param' not found in node, override ignored

- **ID:** `ros2/parameter-override-not-applied`
- **Domain:** ros2
- **Category:** config_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

A parameter override (via YAML file, command line, or launch file) specifies a parameter name that the node has not declared using declare_parameter(), so the override is silently dropped.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| ROS2 Humble | active | — | — |
| ROS2 Iron | active | — | — |
| ROS2 Jazzy | active | — | — |

## Workarounds

1. **Add a declare_parameter() call in the node's constructor for the missing parameter: 'this->declare_parameter<std::string>('my_param', 'default_value');'. Then rebuild and rerun.** (95% success)
   ```
   Add a declare_parameter() call in the node's constructor for the missing parameter: 'this->declare_parameter<std::string>('my_param', 'default_value');'. Then rebuild and rerun.
   ```
2. **Check the exact parameter name by running 'ros2 param list /node_name' after starting the node to see which parameters are declared, and adjust the override file accordingly.** (90% success)
   ```
   Check the exact parameter name by running 'ros2 param list /node_name' after starting the node to see which parameters are declared, and adjust the override file accordingly.
   ```
3. **If using a launch file, ensure the parameter is passed with the correct namespace: e.g., for node 'my_node', use '/my_node/my_param' in the YAML file.** (85% success)
   ```
   If using a launch file, ensure the parameter is passed with the correct namespace: e.g., for node 'my_node', use '/my_node/my_param' in the YAML file.
   ```

## Dead Ends

- **Adding the parameter to the YAML file with a different name hoping it will be automatically matched** — The parameter name must exactly match the declared parameter; typos or case mismatches cause the override to be ignored. (90% fail)
- **Removing all parameter declarations from the node code to avoid the warning** — Without declarations, the node cannot use parameters at all; overrides will still be ignored because there is no declared parameter to accept them. (95% fail)
