The Hammerhead Development Kit (HDK) offers several communication options enabling integration into diverse applications. Here, we outline three primary methods of interaction: ROS2, ZeroMQ, and the ZeroMQ/ROS2 Bridge. The following sections provide detailed instructions on configuring the HDK for these communication protocols and practical examples to facilitate integration. ZeroMQ is more efficient for data transmission, and we suggest using the ZeroMQ/ROS2 Bridge if you wish to connect to ROS2, as it optimizes bandwidth and data transfer.

Note - Please contact [email protected] to gain access to the HDK Communication interface

. Interaction Via ZeroMQ

The ZeroMQ features of the HDK can be enabled by setting communication_lib = zmq in the master configuration file. When enabled, the HDK will publish several message topics over ZeroMQ. For example:

  1. The raw images from the left and right cameras
  2. The rectified images from the left and right cameras
  3. A custom message type from which Point Clouds can be generated
  4. Bounding box coordinates (for Grid Detect)

To control precisely what is published, you need to modify the publishimagetype and publishpointcloud_type fields in the master config.

In addition to publishing messages, ZMQ_REP sockets will be spun up, allowing you to modify the camera parameters in real-time (e.g. the camera exposure and gain).

Several examples demonstrating how to interact with the HDK through ZMQ are provided here for your convenience:

https://github.com/nodarhub/hammerhead_zmq

2. Interaction Via ROS2

The ROS2 features of the HDK can be enabled by settingcommunication_lib = ros2 in the master configuration file. When enabled, the HDK can publish several message topics over ROS2. For example:

  1. Raw images from the left and right cameras
  2. Rectified images from the left and right cameras
  3. A custom message type from which Point Clouds can be generated
  4. Bounding box coordinates (for Grid Detect)

NOTE - You would be able to interact using ROS2 only if hammerhead was compiled with ROS2 support.