-
Notifications
You must be signed in to change notification settings - Fork 522
Description
Bug report
Our system has all nodes namespaced, e.g. /robot_1/param_server.
Now we switched from eloquent to foxy, and all parameter events failed to fire.
After a bit of testing and asking a question, I found out that adding a namespace breaks parameter events.
Output from demo parameter blackboard started with namespace test_ns:
ros2 node info /test_ns/parameter_blackboard
/test_ns/parameter_blackboard
Subscribers:
/test_ns/parameter_events: rcl_interfaces/msg/ParameterEvent
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
Service Servers:
/test_ns/parameter_blackboard/describe_parameters: rcl_interfaces/srv/DescribeParameters
/test_ns/parameter_blackboard/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/test_ns/parameter_blackboard/get_parameters: rcl_interfaces/srv/GetParameters
/test_ns/parameter_blackboard/list_parameters: rcl_interfaces/srv/ListParameters
/test_ns/parameter_blackboard/set_parameters: rcl_interfaces/srv/SetParameters
/test_ns/parameter_blackboard/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
parameter_events node:
ros2 node info /test_ns/parameter_events
/test_ns/parameter_events
Subscribers:
/test_ns/parameter_events: rcl_interfaces/msg/ParameterEvent
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
As you see the parameter_events topic subscriber has a namespace, whereas the publisher has not.
This doesn't look right to me..
I can get it to work by remapping the node local event topic to a global one: --ros-args -r parameter_events:=/parameter_events
Required Info:
- Operating System:
- Ubuntu 20.04
- Installation type:
- binaries, foxy
- DDS implementation:
- Fast-RTPS
- Client library (if applicable):
- rclcpp
Steps to reproduce issue
Start parameter blackboard node and parameter events node from demo_cpp project with a namespace, e.g. add --ros-args -r __ns:=/test_ns
Expected behavior
Parameter events are handled the same as without a namespace
Actual behavior
No parameter events are called