Launching GPSS cameras

This package launches all the static agents, i.e., the cameras in the simulation.

When the workspace is built, the camera_config.xacro file is updated with camera_ids and their corresponding intrinsic and extrinsic values. This can be seen in the build function in control.sh.

The camera_config.xacro is then sent to the robot_state_publisher node and published to the /static_agent/robot_description topic. The ros_gz_sim package with the "create" executable then spawns the static_agents by subscribing to the /static_agent/robot_description topic and spawning each agent.


gz_bridge for cameras

Different configurations of the gz_bridge node were tested and evaluated against the simulated RTF (real time factor). In the earlier setups, a gz_bridge node was set up for each camera_stream (image, depth, semantic) for each camera_id. Three configurations were tested where different numbers of nodes were set up and their corresponding RTFs were captured and averaged over five tries.

SN=single node for all cameras, 1NPC=1 node per camera_id, 1NPSPC = 1 node per stream per camera_id

node setup number of cameras number of nodes camera streams avg RTF
SN 9 1 image 17,9%
1NPC 9 9 image 16,7%
SN 9 1 image depth semantic 5,14%
1NPC 9 9 image depth semantic 5,2%
1NPS 9 81 image depth semantic 4,7%

It doesn't seem like a big difference, so we will stick with one node, i.e., SN.

In the future it can be decided whether to keep the gz_bridge node as is or to generate a gz_bridge_camera.yaml file like the other generation scripts (config_generation).