SDK

Download Now

If you are looking for a full hardware solution, take a look at our preconfigured Hardware Development Kits (HDKs), which include access to this SDK as well as all the hardware necessary to run Hammerhead out of the box.

If you want to use your own compute device and/or cameras, then you'll need an SDK license. This gives you access to our Ubuntu .deb packages containing our software binaries:

  • hammerhead
  • nodar_viewer

You'll also get access to our extensive library of C++ and Python examples that you can use as a starting point for your own integration:

ZMQ Code ZMQ Docs

ROS2 Code ROS2 Docs

Ready to go?

Download Offline PDF

Supported Systems

Our binaries rely on Cuda and currently target Ubuntu 20.04 and Ubuntu 22.04 for ARM and AMD64 (Intel and AMD Cpus). Here is a list of configurations we currently provide .deb packages for:

  • Cuda 11.4 / Ubuntu 20.04 / Amd 64
  • Cuda 11.4 / Ubuntu 20.04 / Arm 64
  • Cuda 12.0 / Ubuntu 20.04 / Amd 64
  • Cuda 12.1 / Ubuntu 22.04 / Amd 64
  • Cuda 12.2 / Ubuntu 22.04 / Amd 64
  • Cuda 12.2 / Ubuntu 22.04 / Arm 64
  • Cuda 12.3 / Ubuntu 22.04 / Amd 64
  • Cuda 12.6 / Ubuntu 22.04 / Amd 64
  • Cuda 12.6 / Ubuntu 22.04 / Arm 64

If there is something that you would like us to support, please let us know at sales@nodarsensor.com

Installation

After purchasing a free trial or an extended license through buy.nodarsensor.net, you will get an email with:

  • Activation key (like ABCDE-ABCDE-ABCDE-ABCDE)
  • Activation link (like https://buy.nodarsensor.net/activate.html?token=random_token)

After clicking the activation link, you will get another email with a custom download link like:

  • https://downloads.nodarsensor.net/abcdefgh-1234-abcd-1234-abcdefghijkl
    (This link is a dummy link that will not work)

This link is your custom portal for downloading .deb packages.

The portion of the link after downloads.nodarsensor.net is your customer UUID.
In this example, abcdefgh-1234-abcd-1234-abcdefghijkl

With this download URL in hand, you can either download the .deb packages directly, or let our nodar-quickstart.sh script do the hard part, and find the best debs for your system. Just enter your customer UUID and whichever options you want:

Download nodar-quickstart.sh

Note: After downloading, you should make nodar-quickstart.sh executable:
chmod +x nodar-quickstart.sh

./nodar-quickstart abcdefgh-1234-abcd-1234-abcdefghijkl
./nodar-quickstart abcdefgh-1234-abcd-1234-abcdefghijkl --download
./nodar-quickstart abcdefgh-1234-abcd-1234-abcdefghijkl --install

By default, our downloads will save to ${HOME}/.config/nodar/. For example, depending on your system, the --download or --install option in nodar-quickstart.sh might download the following files:

~$ ls ~/.config/nodar/downloads/debs/
hammerhead-2.12.1-evalkit-gd-cuda12.3-ubuntu22.04-amd64.deb
nodar_viewer-2.12.1-evalkit-gd-cuda12.3-ubuntu22.04-amd64.deb

The --install option will install these packages automatically. If you want to do that manually instead, then you can

cd ~/.config/nodar/downloads/debs/
sudo apt install \\
    ./hammerhead-2.12.1-evalkit-gd-cuda12.3-ubuntu22.04-amd64.deb \\
    ./nodar_viewer-2.12.1-evalkit-gd-cuda12.3-ubuntu22.04-amd64.deb

After installation, hammerhead and nodar_viewer will be available on your system. We also install unique desktop icons on Ubuntu to make it easier to launch:

hammerhead-example.svg nodar_viewer-example.svg

Multiple Versions

To make upgrading and downgrading as easy as possible, we support parallel installations. For example, the following is valid:

sudo apt install ./hammerhead-2.8.0-evalkit-cuda12.3-ubuntu22.04-amd64.deb
sudo apt install ./hammerhead-2.9.0-evalkit-cuda12.3-ubuntu22.04-amd64.deb

When you install one or more versions, they are automatically added to your update-alternatives. This means that you can change which version hammerhead and nodar_viewer point to by configuring the update-alternative:

~$ sudo update-alternatives --config hammerhead
There are 2 choices for the alternative hammerhead (providing /usr/bin/hammerhead).

  Selection    Path                                                                                 Priority   Status
------------------------------------------------------------
  0            /usr/lib/nodar/2.8.0-evalkit-cuda12.3-ubuntu22.04-amd64/hammerhead/nodar/hammerhead   22812302  auto mode
* 1            /usr/lib/nodar/2.9.0-evalkit-cuda12.3-ubuntu22.04-amd64/hammerhead/nodar/hammerhead   22912302  manual mode
  2            /usr/lib/nodar/2.8.0-evalkit-cuda12.3-ubuntu22.04-amd64/hammerhead/nodar/hammerhead   22812302  manual mode

Press <enter> to keep the current choice[*], or type selection number: 

matt@desk:~/Desktop/hammerhead$ sudo update-alternatives --config nodar_viewer 
There are 2 choices for the alternative nodar_viewer (providing /usr/bin/nodar_viewer).

  Selection    Path                                                                                     Priority   Status
------------------------------------------------------------
  0            /usr/lib/nodar/2.8.0-evalkit-cuda12.3-ubuntu22.04-amd64/nodar_viewer/nodar/nodar_viewer   22812302  auto mode
* 1            /usr/lib/nodar/2.9.0-evalkit-cuda12.3-ubuntu22.04-amd64/nodar_viewer/nodar/nodar_viewer   22912302  manual mode
  2            /usr/lib/nodar/2.8.0-evalkit-cuda12.3-ubuntu22.04-amd64/nodar_viewer/nodar/nodar_viewer   22812302  manual mode

Press <enter> to keep the current choice[*], or type selection number: 

If you are unsure of which version you have installed, you can always pass the --version flag to hammerhead and nodar_viewer:

matt@desk:~$ hammerhead --version
Hammerhead 2.12.1 Evalkit_gd
Commit d1ddd8c2-R
Compiled on:
    2025-12-04 at 17:29:35 UTC
    Ubuntu 22.04.3 LTS
    Cuda 12.3.103 for compute architecture(s): 86-real, 87-real, 89-real

matt@desk:~$ nodar_viewer --version
Hammerhead 2.12.1 Evalkit_gd
Commit d1ddd8c2-R
Compiled on:
    2025-12-04 at 17:29:35 UTC
    Ubuntu 22.04.3 LTS
    Cuda 12.3.103 for compute architecture(s): 86-real, 87-real, 89-real

Licenses and Activation Keys

Licenses are node-locked, meaning they are tied to a machine's hardware and cannot be transferred to another machine.

When you start a trial or purchase a license, you receive one activation key that is valid for a specific number of machines. For example, a 3-machine license includes a single activation key that can be used simultaneously on all three machines.

Since the licenses are bound to hardware, not the operating system, you can use the same license in different Docker containers on the same machine. These only count as one machine against your quota unless the Docker image is intentionally hiding hardware details.

Still in doubt?

Get a Free Trial

Getting Started

Quick Start

The quickest way to get up and running is with nodar-quickstart.sh.

Download nodar-quickstart.sh

*Note: After downloading, you should make nodar-quickstart.sh executable:
chmod +x nodar-quickstart.sh

./nodar-quickstart.sh <uuid or download link> --run

This will

  • Install the .deb packages
  • Install a very minimal dataset to ${HOME}/.config/nodar/downloads/datasets
  • Launch nodar_viewer
  • Launch hammerhead to run on the dataset

If you want to manually get the dataset, you can download it here: nodar_data_day_highway_01_minimal.zip

After that, all you need to do is to click Connect in nodar_viewer :

On your first run, you will be asked to enter your activation key that you received by email (something like ABCDE-ABCDE-ABCDE-ABCDE).

  • -c: sets the path for the configuration files
  • -s: sets the path for the images used for playback
  • -l: tells Hammerhead to loop over the playback data

You can visualize the output by opening nodar_viewer in another terminal and clicking Connect:


Playback from Other Sources

nodar-quickstart.sh plays back data from file. Specifically, it invokes hammerhead with a command like:

hammerhead -c "config/" -s "topbot/"

which sets the path to the configuration files and to a folder containing topbot images.

To playback directly from cameras, you will omit the -s option and instead modify the master_config.ini file. At the moment we support 2 options:

  1. Direct readout of Lucid cameras
  2. Reading through a network interface

Lucid Cameras

If you have Lucid cameras that you want to use, then you should modify the master_config.ini with your camera IDs:

camera_source = lucid

# [string] Camera serial numbers specifying left and right camera
# Camera serial numbers can be found on the label attached to camera body
camera_left_id = 231001324
camera_right_id = 231001327

and call hammerhead without the -s option:

hammerhead -c "config/"

Topbot Publisher

If you want to use other types of cameras, then you will be in charge of synchronizing them. You should then modify the master_config.ini with the IP address and port of your topbot publisher, and specify the dimensions of the images you will be providing:

# [string] Specify camera source
# This can be either 'lucid' or 'zmq://<ipv4>:<port>'
# If empty we assume that you are using 'lucid'
# An example of a valid zmq camera source is 'zmq://127.0.0.1:5000'
camera_source = zmq://127.0.0.1:5000

# [string] Specify width and height for zmq camera source
# This is only used if camera_source is set to zmq://<ipv4>:<port>
# This is not used if camera_source is set to lucid
zmq_camera_source_width = 2880
zmq_camera_source_height = 1860

As with the Lucid cameras, you would then call hammerhead without the -s option:

hammerhead -c "config/"

These 2 examples describe how to use the Topbot Publisher in much more detail:

C++ ZMQ Topbot Publisher

Python ZMQ Topbot Publisher

Configuration Files

Both hammerhead and nodar_viewer can be used on the command line. Almost everything you need to run those programs is packaged in the .deb files, with 3 notable exceptions:

  • extrinsics.ini
  • intrinsics.ini
  • master_config.ini

These files will be unique to your camera system, so you must create them yourself. As the names imply, they need to contain the extrinsics, intrinsics, and high-level configuration settings for how you want to run Hammerhead. You can find extensive documentation for these files here:

https://nodarsensor.notion.site/documentation

There are 2 primary ways to pass these files to Hammerhead:

  1. Pass the directory with these configuration files as a command-line option:
hammerhead -c config/

where the config/ looks like:

config/
├── extrinsics.ini
├── intrinsics.ini
└── master_config.ini
  1. Save the config files in your home directory, specifically, ${HOME}/.config/nodar/config/:
${HOME}/.config/nodar/config/
├── extrinsics.ini
├── intrinsics.ini
└── master_config.ini

and run hammerhead without the -c option.

Typically, you will use Option 1. if you are experimenting with different configurations, and Option 2. once you have finalized your configuration.

nodar_viewer doesn't use these config files. You can (and should) run it with no options.

Images

There are 3 primary ways to pass images to Hammerhead:

  1. Use the -s option to point to a directory containing sequentially-numbered topbot images.

topbot == image where a synchronized left and right image are stacked vertically (left on top, right on bottom)

  1. Use Lucid cameras and provide their IDs in the master_config.ini (camera_left_id and camera_right_id).
  2. Publish topbot images using one of our communication interfaces (we recommend ZMQ). See our C++ and Python examples for more details.