Bug report
Required Info:
- Operating System:
- Installation type:
- Version or commit hash:
- Client library (if applicable):
Steps to reproduce issue
-
Write a parameter YAML file, explicit_params.yaml, setting use_sim_time explicitly referring to a node:
talker:
ros__parameters:
use_sim_time: false
-
Write a parameter YAML file, wildcard_params.yaml, setting use_sim_time implicitly using wildcards:
/**:
ros__parameters:
use_sim_time: true
-
Run a talker node:
Expected behavior
I'm not sure if we've ever fully specified behavior when using wildcards.
-
If wildcards have lower precedence than fully qualified names, command line order should not matter i.e. use_sim_time always false.
-
If command line order is respected, use_sim_time should be false in the first case, true in the second case.
Actual behavior
First given override wins.
Additional information
This is inconsistent with how it works for rclpy nodes, where command line order is respected. Looking at both rclpy and rclcpp implementations, it looks behavior emerged by pure chance. We should probably be matching wildcards where we can enforce a consistent precedence, down in rcl.