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 Python, 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 four modes: “
Colossus FFT data
...
(sometimes referred to as
...
“raw” radar data. Communication with Navtech Radar sensors is over a TCP/IP connection 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 documentation will provide all the information you need to achieve this. Code downloads are accessible here.
Navigation output - a simple point output format from the radar using it’s Colossus Network Protocol. In this mode, the radar applies a threshold to the data representing its' field of view, and a range value in units of metres is returned, corresponding to the “centre” of each peak in the radar’s measurements. The SDK provides support for this mode, allowing developers to receive either type of data from the sensor and also send control messages back.
ASTERIX Cat240 (Radar Video) - An industry standard for the “transmission of rotating radar video” over a UDP network connection.
CFAR Point Cloud output - a UDP stream of bearing and range (measured in integer “bins”) point-pairs corresponding to any “bins” of data that pass a Cell-Averaging CFAR extraction process. When a radar is configured to operate in this mode via its' web interface, the configuration parameters for this mode are sent to the radar via the Colossus Network Protocol over a TCP/IP connection.
Info |
---|
Note that when consuming radar output in the CFAR Point Cloud mode or as “Raw” data, conversion from integer bin “number” to range in metres can be done by using the multiplication factor named “Bin Size / Resolution” within the radar’s configuration message. |
Contents
...
Table of Contents | ||||||
---|---|---|---|---|---|---|
|
...
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.
Anchor | ||||
---|---|---|---|---|
|
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.
...
The seconds and split seconds are using the UNIX epoch of the 1st Jan 1970 00:00:00, ; split seconds is the number of elapsed nano seconds :
Example Code (C#)
Code Block | ||
---|---|---|
| ||
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 since the last second
The mode of the radar’s operation provides data at a much lower rate than the raw FFT data output and is ideally suited to support collision avoidance navigation and positioning 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:
View file | ||
---|---|---|
|
...
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.
Note |
---|
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.
Info |
---|
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
Info |
---|
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.
Note |
---|
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". |
Useful Links:
Colossus Record and Playback Tool
Source Repositorybe set.