In our experience, ZMQ is much faster than ROS2 messaging, and this is important for transmitting large amounts of data: multiple images and point clouds.

Hammerhead broadcasts via ZMQ raw images, rectified images, disparity maps, confidence maps, and extrinsic camera parameters. It does not broadcast point clouds because those are too large. Instead, they can be quickly recreated at the subscriber computer. The conversion process is explained here.

GridDetect broadcasts via ZMQ occupancy maps, but the data is small.

In our NODAR Hub repository, we have code that converts ZMQ messages to ROS 2 messages. This allows seamless operation with ROS 2.

The ROS2 workflow is as follows:

graph LR
	Hammerhead --> ZMQ -- Ethernet --> A[ZMQ to ROS2 Bridge]
	GridDetect --> ZMQ
	A -- ROS2 --> B[User ROS 2 Code]

The ZMQ to ROS2 bridge code can be found here:

https://github.com/nodarhub/hammerhead_zmq_to_ros2_bridge