Isaac ROS Hawk Setup

Leopard Imaging’s Hawk camera is a popular choice of stereo camera for use with the Isaac ROS ecosystem of packages. This document details important setup instructions for configuring the Hawk camera with Isaac ROS.

Note

For best results, you must update the camera’s firmware.

Note

Hawk stereo cameras through Argus are only supported on Jetson platforms

Jetson Platforms

Camera Configuration

The Hawk camera must be connected to your Jetson via a GMSL expansion board. For example, if working with AGX Orin, see the Leopard board. Contact your hardware vendor for assistance.

IMU Configuration

To achieve the target sensor update frequencies for the Hawk’s built-in IMU, you must set certain registers on the Jetson device appropriately:

  1. Identify the GPIO pins used for connecting the accelerometer and gyroscope to your Jetson. The specific correspondence between physical pin and pin number can be found using the pinmux table for your specific Jetson device.

  2. Identify the corresponding register address block for those GPIO pins, based on the corresponding pad controller. The technical reference manual for your specific Jetson device can be found at Jetson download site.

    For example, on a Jetson AGX Orin-series device, GPIO pins 8 and 9 in the Always On Hypervisor (AO_HV) group are located under PADCTL_A15, with memory block starting at 0x0c303000.

  3. Within the technical reference manual, find the detailed explanation of the pad controller to GPIO offset addresses. Identify the specific offset address to index into the relevant pins.

    Continuing the previous example, the two pins referenced above have offsets of 0x00 off of the 0x0c303000 base address. Because the pins in this example are at indices 8 and 9, they have a further offset of 8 * 8 = 64 = 0x40 and 8 * 9 = 72 = 0x48, respectively.

  4. Within the technical reference manual, find the detailed explanation of the GPIO registers. Identify the specific bit indices for setting the pullup/pulldown state to pullup. Write a pair of bytes to the previously-determined address, setting the appropriate bit while preserving the values of the other bits. This can be accomplished using devmem2 or a similar tool.

    Finishing the example, if the current register settings for pin 8 are 0xC058 but the lower 4 bits must be set to 0b0000 to set the pullup state, the correct command would be:

    sudo devmem2 0x0c303040 w 0xC050
    

    Correspondingly, if the current register settings for pin 9 are 0xD054, setting the lower 4 bits to 0b0000 is accomplished with the following command:

    sudo devmem2 0x0c303048 w 0xD050