The SDK C++ API provides an object-based interface for controlling/configuring the radar and for processing incoming data. See information describing the core features here, in the earlier C++11 implementation.
As described below, this C++17 implementation additionally includes the source code of a peak finding function to operate on a single azimuth of raw radar data: the same functionality that is implemented within the radar firmware to enable Navigation Mode .
This version of the SDK was developed on Ubuntu 20.04
sudo apt install build-essential clang g++ protobuf-compiler libprotobuf-dev cmake
Building using CMAKE
This assumes that the SDK has been cloned into ~/iasdk
mkdir ~/build_iasdk cd build_iasdk cmake -DCMAKE_BUILD_TYPE=Release ~/iasdk/cpp_17 make -j
Notes
Preferred compiler for building is Clang V10 but GCC 9.3.x should work
The code uses using statements to make pointer ownership more obvious:
Owner_of is a std::unique_ptr;
Shared_owner is a std::shared_ptr;
Please see utility/Pointer_types.h for a full explanation.
Peak Finding
The class Peak_finder can be used to process FFT data and search for peaks. The algorithm will sub-resolve within radar bins and return a power at a distance in metres on the azmith being checked.
The algorithm implemented here will slide a window over the FFT data moving forwards by the size of the window, when the FFT has risen and then fallen, the peak resolving algorithm is run to sub-resolve the distance.
See Peak_finder.h for the data structure that is generated per azimuth
The navigation_main.cpp is a sample application that will peak search and report back up to ten targets per azimuth.
threshold - Threshold in dB
bins_to_operate_on - Radar bins window size to search for peaks in
start_bin - Start Bin
buffer_mode - Buffer mode should only be used with a staring radar
buffer_length - Buffer Length
max_peaks_per_azimuth - Maximum number of peaks to find in a single azimuth