ros2cli
ros2cli copied to clipboard
'ros2 param list' stuck on node 'test'
Bug report
Required Info:
- Operating System:
- Ubuntu 18.04
- Installation type:
- Source
- Version or commit hash:
- 2049b2f
- DDS implementation:
- Fast-RTPS
- Client library (if applicable):
- N/A
Steps to reproduce issue
ros2 param list
Expected behavior
Show the list of parameters.
Actual behavior
Doesn't output anything and stay stuck forever.
Additional information
I checked the file list.py in ro2cli/ros2param/ros2param/verb and added a few print. I can see the command is getting stuck at line 82 (second line here):
for node_name in node_names:
rclpy.spin_until_future_complete(node, futures[node_name])
It loop first on the one and only node that I launched urg_node, and stay stuck on a node I didn't launch : test.
The full node_name variable being NodeName(name='test', namespace='/', full_name='/test')
The only node I launched :
ros2 run urg_node urg_node __params:=src/urg_node/launch/urg_node_ip.yaml
It does stay stuck too if I launch it without params:
ros2 run urg_node urg_node
Which urg_node are you using, this one? https://github.com/bponsler/urg_node
What does ros2 node list report? If it contains "stall" nodes maybe try ros2 daemon stop (if will restart itself transparently on the next usage).
Which
urg_nodeare you using, this one? https://github.com/bponsler/urg_node
I'm using this version of the urg_node : https://github.com/hopetechnik/urg_node/tree/ros2-devel, which I'm currently modifying to add reconfiguration of the parameters using parameter events.
What does
ros2 node listreport? If it contains "stall" nodes maybe tryros2 daemon stop(if will restart itself transparently on the next usage).
ros2 node list report :
/urg_node
/test
/test
All I launched was urg_node, I don't know where this 2 test nodes come from.
I tried ros2 deamon stop, it said The daemon has been stopped but didn't change anything to the problem.
Ok, I found where the test node where launched from. It comes from the diagnostic_updater package which is a dependency of urg_node.
When the urg_node create a diagnostic_updater::Updater, it will create 2 nodes named test, can see it here : https://github.com/bponsler/diagnostics/blob/ros2-devel/diagnostic_updater/include/diagnostic_updater/diagnostic_updater.h#L374.
I don't know how good is the port or if it really follows "ROS 2 good practices", which probably changed while the package was ported, but I know someone else is looking into porting the package to ROS 2 : https://discourse.ros.org/t/diagnostic-aggregator-and-diagnostic-updater-porting-to-ros2/6382.
So I don't know if it really is a bug or if it just comes from some outdated ROS 1 practices in the package (like creating 2 nodes inside a class that's already in a node ?).