Introduction
The Navtech Radar SDK provides a simple interface to communicate with Radar sensors. As well as ROS and ROS2 examples, the SDK includes source code for C++, a simple .NET DLL that can easily be integrated into applications running on Windows and Linux.
Navtech Radar sensors provide output in one or both of two modes: “FFT data” (sometimes referred to as “raw radar data” and “navigation output”. These are explained below. The SDK provides support for both modes, allowing developers to receive either type of data from the sensor and also send control messages back.
Communication between the sensor and the software is over Ethernet and utilises a proprietary binary communication protocol called Colossus Network Protocol. The SDK abstracts this protocol to avoid having to develop the low level socket and messaging processing code. However you can develop your own interface without the SDK if required and the protocol documentationColossus Network Data Protocolwill provide all the information you need to achieve this.
Contents
IA Sensor Modes
FFT Data
In this mode the radar outputs FFT processed data, which is amplitude and range. Data is sampled 400x per radar rotation and packet is sent across the network for each sample. This packet includes the sample azimuth enabling the receiver to analyse target data based on range, bearing and amplitude. The data output rate for native mode is quite high. The normal data rate is between 11Mbps - 38Mbps.
To use native mode you will need to understand and use the Colossus Network Protocol. The protocol describes the format of the messages sent across the network and also explains how to control functions on the sensor. For example, after you connect to the radar you must ask the device to start sending FFT data. This ensures the receiving client is in full control of when it starts and receives raw data.
When working with native data the developer is responsible for performing all the signal processing to extract targets and establishing logic to discriminate targets from unwanted clutter.
The SDK provides a simple hook to enable your application to receive this data and also provides the appropriate methods to control the radar, such as switching the data stream on and off.
Navigation Data
In this mode the radar will analyse the data in real time and extract targets on each azimuth that are above a specified threshold. Messages describing these plots are then sent across the network as they are extracted.
In addition, this process will sub-resolve the range of the plot using a curve-fitting algorithm on the signal peak. This enables the sensor to achieve a far higher range resolution than the native signal processing normally allows. The algorithm will provide all targets in an azimuth that are above the specified threshold.
The target data are returned with the following information:
Azimuth
Seconds
SplitSeconds
List of targets
Range (m)
Power (dB half steps e.g 152 = 76dB)
The seconds and split seconds are using the UNIX epoch of the 1st Jan 1970 00:00:00, split seconds is the number of nano seconds:
Example Code (C#)
var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); return dateTime.AddSeconds(ntpSeconds).AddSeconds(ntpSplitSeconds / 1000000000.0);
The mode provides you with more useful information than native data and can be used for collision avoidance and navigation applications without much further development.
The SDK provides a simple hook to enable your application to receive this data and also provides the appropriate methods to control the radar. This includes the ability to switch the plot extraction on and off and also allows you to set the threshold.
Sample Data
The sample data that is found below is for a radar mounted at the side of a road at the Navtech Radar Offices. The red dot on the image to the right indicates the location of the radar.
Sample Data Files:
Sample Data Raw File Format
The sample files are recorded as the packets would be received from the radar.
The .colraw files are a sequence of records, they have been compressed to save space.
The type field can be used to check if the Data section is zlib formatted or just a raw frame from the radar, a type value of 255 is means that the Seconds and Split Seconds fields will be 0 and the data block will be a block of compressed data.
Once the data has been inflated the record now matches the format of data sent from the radar, the record structure is identical, but now the Type field will represent the message type from the Colossus Network Protocol.
When playing back data it is up to the software to correctly buffer and then send the data at the expected packet rate of the radar
Record Format
Software Development Kit
Available here: https://bitbucket.org/navtechradar/iasdk-public/src/master/
The SDK is available in two formats:
C++ Source Code
This code is a series of classes developed using C++ 11. We have provided the source code so end users can easily integrate the code into their application, regardless of the platform they are targeting. The code targets the following compilers:
GCC 4.8 and above
Visual Studio 2015 (VC++ 2015 libraries)
The code and documentation is available through an online Git repository. Access will be made available once a customer has purchased an IA sensor.
.NET Library
A .NET library, in the form of a DLL, is also available. This has been developed in C# and targets the current version of the .NET framework, 4.6.1. At the moment the code utilises features outside .NET Core which it is not suitable for Linux, however this will be resolved in a future release.
It offers the same functions as the C++ code, but makes full use of the .NET features to provide a simple interface for any other application written in a .NET language. The binaries and documentation will be made available on request, following he purchase of an IA sensor.
To access the SDK, follow this link https://bitbucket.org/navtechradar/iasdk-public/src/master/
Example ROS Implementation
This SDK is an example of how radar data can be extracted from the radar and some example applications of how you may want to process the data.
Requirments
Visual Studio 2019
ROS 1 SDK
OpenCV (for visualisation)
Example: Mobile-Platform
This application is a tool for processing the raw radar data (ideal for moving platforms).
It works by using dynamic reconfiguration to allow the user flexibility in analysing the data the radar is sending. The topics published by the application are a pointcloud of the filtered data, an image topic with identified targets highlighted and another image topic showing the intermediate filtering stage to show the user what’s happening in the background. It also gives the user the option to publish the filtered data as a laser scan.
BE AWARE: The Laser Scan data format loses the depth information available from the sensor. The laser scan returns the range of the first object the radar sees.This can then be used as the laser scan in combination with a tf topic containing odometry information of your robot to create a map and localize with gmapper. In rviz, view the laser scan topic by typing in the header frame "navtech_laserscan".