What are 'bond' topics for?
.. and why are there so many connections involving them. e.g.:
bouffard@lipschitz:~/ros$ rosnode info /pelican2/camera1394_nodelet
--------------------------------------------------------------------------------
Node [/pelican2/camera1394_nodelet]
...
contacting node http://pelican2:59141/ ...
Pid: 7324
Connections:
...
* topic: /pelican2/camera_nodelet_manager/bond
* to: /pelican2/camera1394_nodelet
* direction: outbound
* transport: INTRAPROCESS
* topic: /pelican2/camera_nodelet_manager/bond
* to: /pelican2/camera_nodelet_manager
* direction: outbound
* transport: TCPROS
* topic: /pelican2/camera_nodelet_manager/bond
* to: /pelican2/jplvision_node
* direction: outbound
* transport: TCPROS
* topic: /pelican2/camera_nodelet_manager/bond
* to: http://pelican2:59141/
* direction: inbound
* transport: INTRAPROCESS
* topic: /pelican2/camera_nodelet_manager/bond
* to: http://pelican2:35545/
* direction: inbound
* transport: TCPROS
* topic: /pelican2/camera_nodelet_manager/bond
* to: http://pelican2:52260/
* direction: inbound
* transport: TCPROS
and
bouffard@lipschitz:~/ros$ rosnode info /pelican2/camera_nodelet_manager
--------------------------------------------------------------------------------
Node [/pelican2/camera_nodelet_manager]
...
contacting node http://pelican2:35545/ ...
Pid: 7317
Connections:
...
* topic: /pelican2/camera_nodelet_manager/bond
* to: /pelican2/camera_nodelet_manager
* direction: outbound
* transport: INTRAPROCESS
* topic: /pelican2/camera_nodelet_manager/bond
* to: /pelican2/camera1394_nodelet
* direction: outbound
* transport: TCPROS
* topic: /pelican2/camera_nodelet_manager/bond
* to: /pelican2/jplvision_node
* direction: outbound
* transport: TCPROS
...
* topic: /pelican2/camera_nodelet_manager/bond
* to: http://pelican2:35545/
* direction: inbound
* transport: INTRAPROCESS
* topic: /pelican2/camera_nodelet_manager/bond
* to: http://pelican2:59141/
* direction: inbound
* transport: TCPROS
* topic: /pelican2/camera_nodelet_manager/bond
* to: http://pelican2:52260/
* direction: inbound
* transport: TCPROS
...
In particular I'm interested why there are multiple connections on the same bond topic, some of which are using transport TCPROS despite the use of nodelets?
Edit with a followup question:
Doesn't having a 'spawner' process that hangs around for the lifetime of my nodelet, and moreover, is constantly communicating over TCPROS, defeat some of the main purposes of having nodelets, namely to reduce the number of processes and unnecessary network-level communication? In all my use cases at least, nodelets are a nice way to couple together what would otherwise be nodes but I don't need any of the respawning behaviour that you describe--either the entire manager plus its loaded nodelets are up, or they are all down. Could the 'spawner' nodes optionally exit after their nodelet has been loaded successfully?