SDK
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:
hammerheadnodar_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:
Ready to go?
- buy.nodarsensor.net for Free Trials and Purchases
- sales@nodarsensor.com for Questions
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 64Cuda 11.4 / Ubuntu 20.04 / Arm 64Cuda 12.0 / Ubuntu 20.04 / Amd 64Cuda 12.1 / Ubuntu 22.04 / Amd 64Cuda 12.2 / Ubuntu 22.04 / Amd 64Cuda 12.2 / Ubuntu 22.04 / Arm 64Cuda 12.3 / Ubuntu 22.04 / Amd 64Cuda 12.6 / Ubuntu 22.04 / Amd 64Cuda 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.netis 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:
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:
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?
Getting Started
Quick Start
The quickest way to get up and running is with 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
.debpackages - Install a very minimal dataset to
${HOME}/.config/nodar/downloads/datasets - Launch
nodar_viewer - Launch
hammerheadto 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:
- Direct readout of Lucid cameras
- 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:
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.iniintrinsics.inimaster_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:
- 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
- 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_viewerdoesn'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:
- Use the
-soption 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)