Online Database of Driving Maneuvers of two Automobiles


Remark We will not answer any question about the recorded data. All information is included in the following lists.

Dataset Description

Presented are the target lists of a total of 8718 measurement frames produced by three (3) radar
sensors, matched together with the IMU+GNSS-RTK solution for position and motion of two (2) automobiles.

The sensors are synced in respect to their measurement times, but operate independently. Their
modulation is offset by a certain frequency, to ensure mono-static evaluation. This allows for a
cooperative evaluation of measurements.

The sensor positions are static. The two automobiles are driving maneuvers in from of the three
radar sensors, including following, overtaking, driving alongside, and driving towards each other.

The data set is available in three different CFAR threshold variants.

Included is a description of the setup and radar modulation parameters, the data structure, as well
as a minimum working example of how to work with the data.

Licensing and Citing

This document, the data provided here, as well as the accompanying images and source code files are distributed under the CC BY 4.0 license.

Citation Authors:

  • Johannes Schlichenmaier (Ulm University, Ulm, Germany, ORCID: 0000-0002-9275-6635)
  • Maximilian Steiner (Ulm University, Ulm, Germany, ORCID: 0000-0002-7000-7465)
  • Timo Grebner (Ulm University, Ulm, Germany, ORCID: 0000-0001-6605-5811)
  • Christian Waldschmidt (Ulm University, Ulm, Germany, ORCID: 0000-0003-2090-6136)

If you use this information or data in a publication, please cite us accordingly, e.g. by using one of the following citation styles (or any other style your publication requires):



Johannes Schlichenmaier, Maximilian Steiner, Timo Grebner, Christian Waldschmidt, August 8, 2022, "Radar Measurements of Two Vehicles with Three Cooperative Imaging Sensors", IEEE Dataport, doi:




doi = {10.21227/wwt7-w739},
url = {},
author = {Schlichenmaier, Johannes and Steiner, Maximilian and Grebner, Timo and Waldschmidt, Christian},
publisher = {IEEE Dataport},
title = {Radar Measurements of Two Vehicles with Three Cooperative Imaging Sensors},
year = {2022} }


Measurement Setup

The three radar sensors are assigned the IDs = {5,7,8}, which will be referred through the rest of
the data set, although no other radar sensors were in use during the measurements. In the associated
publications, the sensor IDs are mapped as: 1 -> 5, 2 -> 7, 3 -> 8.

The layout of the three sensors is as follows:

(5) |-- 0.65m --| (7) |-- 0.69m --| (8)

The sensors are working in a SIMO configuration with one tx and four rx channels each, running a
chirp sequence FMCW modulation [1] with the following modulation parameters:

Parameter Value
Center frequency f_c 76.77 GHz
Bandwidth B 2 GHz
Number of chirps L 128
Chirp duration T_c 192 µs
Chirp repetition time T_r 256 µs
Frame rate f_meas 8 Hz
Max range r_max 47.925 m
Range resolution ∆r 7.5 cm
Max velocity v_max ±3.81 m/s
Velocity resolution ∆v 5.96 cm/s
Network frequency offset ∆f_net 40 MHz

The three sensors are triggered by an AWG delivering a trigger signal to each sensor of f_meas=8Hz
for a set number of consecutive measurement frames. The sensors then sends the raw beat signal s(t)
data for each frame to to a measurement PC, that stores the data. To avoid inter-sensor
interference, each sensor center frequency is offset by n*∆f_net, n={0,1,2}.

The two automobiles used for target objects are equipped with RTK-GNSS systems and have the
following dimensions:

Dimension Car1 Car2
Length rear axle to back 1.153m 1.029m
Length rear axle to front 3.780m 3.670m
Width (w/o mirrors) 1.852m 1.826m

Measurements Processing Variants

Three variants of raw data to target list processing are available (separated into their respective
folders). Those differ by the CFAR threshold (CFAR-TH) in dB used for target extraction. However,
as sensor 5 suffered from especially noisy data, its CFAR threshold was always set 2dB above the
threshold of the two other sensors, which is why, in each folder name, two CFAR values are given:
the lower one for sensor ID 7 and 8, the higher one for sensor ID 5.

The three variants are:

  • cfar_9_11_pe: CFAR-TH sensor 5: 11dB, CFAR-TH sensor 7/8: 9dB
  • cfar_10_12_pe: CFAR-TH sensor 5: 12dB, CFAR-TH sensor 7/8: 10dB
  • cfar_11_13_pe: CFAR-TH sensor 5: 13dB, CFAR-TH sensor 7/8: 11dB

In the associated publication, only the processing variant cfar_10_12_pe was used. The other two are
only included for posterities sake.

Measurement Files

In each folder, one finds 18 measurement files, each containing a consecutive set of a maximum of
500 measurement frames in the form of a MATLAB MAT file.

Each measurement file contains the following variables:

  • data: the measurement data of all sensors matched with the ground truth of both target objects
  • raw_data_conversion_cfg: the raw data conversion parameters for each sensors (usually not needed
    for evaluation)
  • sensor_ids: the used sensor IDs (in this data set always 5,7, and 8)
  • sensor_meta: meta information used for the sensor raw data conversion (see below)

Post Processing

The presented data is the result of a post processing chain [2]. The relevant parameters for the
FFT, CFAR, and angle estimator can be found in the respective cell of the sensor in the
raw_data_conversion_cfg variable, but are usually not needed for further evaluation of the data

The subsequent peak search for values over the CFAR-TH was done separate, as to preserve the full
amount of over-CFAR-values (unfiltered data), but still allowing the option to only select peak
values later on.

Afterwards the radar and ground truth data was matched using the GPS timestamps. Then, the
skew of each sensor was determined using calibration targets in the scene. The result of this
calibration is found in sensor_meta.doa_offset_deg. As the sensors were all installed upside
down for installation purposes, the angular information is mirrored, which results in the -1 entries
in sensor_meta.doa_sign.

The angular information in the data variable is therefore:


doa-value = doa-sign * raw-doa-value + doa-offset


This doa_value combined with the Cartesian offsets in sensor_meta.cart_offset results in the
following x/y coordinates:


x = r*cos(doa-value) + x-offset
y = r*sin(doa-value) + y-offset



  • The DoA values are always in sensor coordinates, although already de-skewed.
  • The Cartesian values are already in a common coordinate system.
  • Contrary to many other automotive reference systems, the y-axis is the “forward” axis away from
    the sensors.
  • The DoA values point along the x axis for a 0 value.

Data Table

The data variable contains the actual measurement data together with the ground truth in form of a
MATLAB table. Let’s go over the table fields:

  1. frame_id: a running ID number of the frame. Due to the nature of the measurements, it starts
    with 2.
  2. evaluated: can be set to 1, if this row was already evaluated.
  3. target_list: a table of target points for each sensor (in separate cells), contains unfiltered
  4. te_peak_ids: a set of target point IDs, that are the peak values for set of target points.
    Again separated by sensor.
  5. timestamp: an Unix time stamp of the measurement.
  6. date_time_utc: an UTC time stamp of the measurement.
  7. ground_truth: a table of ground truth information of the two automobiles at the same time as
    the measurement frame.

Target List Table

The target_list variable for each sensor and measurement frame is a table and is built as follows:

  1. amplitude: the linear amplitude value of the target point
  2. rcs_dB: a point target RCS calculation based on the amplitude and the range (-Inf for range=0)
  3. range: range of the target point in m
  4. velocity: radial velocity of the target point in m/s
  5. doa_deg: angle of the target point in degree
  6. doa_rad: angle of the target point in radian
  7. x: Cartesian x coordinate of the target point (common coordinate system)
  8. y: Cartesian y coordinate of the target point (common coordinate system)
  9. snr_db: signal to noise ratio in dB (based on the calculated noise value of the CFAR algorithm

Ground Truth Table

The ground_truth variable for each measurement frame is a table with one row per object (in this
case always two rows) and is built as follows:

  1. match: Indicates, that the ground truth is matched to the frame (should be 1)
  2. ref_point: an (x,y,z) reference point of the ground truth (where the IMU of the RTK-GNSS is
    referencing to, here the middle of the rear axle)
  3. polyshape: a polygon describing the object (as a rectangle)
  4. width: width of the object (constant)
  5. area: area of the object (constant)
  6. yaw_angle_deg: yaw angle of the object in degree
  7. yaw_angle_rad: yaw angle of the object in radian
  8. vel: (v_x, v_y, v_z) values, describing the instantaneous velocity of the object in m/s
  9. accel: (a_x, a_y, a_z) values, describing the instantaneous acceleration of the object2
  10. yaw_rate_deg: the yaw rate of the object in degree
  11. yaw_rate_rad: the yaw rate of the object in radian
  12. status: unused


  • The acceleration values for object #1 are in m/s^2 and an output of the IMU+RTK EKF algorithm
  • The acceleration values for object #2 are in multiples of g and a raw reading of the IMU chip

Working with the Data

The data is provided in the form of MAT files containing simple data types and tables (supported by
MATLAB versions >= 2013b).

The following code example loads the data from a single MAT file and plots a full set of measurement
frames at around 10 Hz.

It is important to remember, that the target lists include all target points, whether or not they
are a peak point. Only in combination of the sensor and frame specific peak IDs, the peak values can
be extracted.


% load measurement file
tl_content = load(['cfar_10_12_pe' filesep '20200624_Car2_Kreise_1.mat']);

% prepare figure
hfig = figure();
haxes = axes(hfig);

plot_tl_s5 = scatter(nan,nan, 'r', 'filled');
hold(haxes, 'on');
plot_tl_s7 = scatter(nan,nan, 'b', 'filled');
plot_tl_s8 = scatter(nan,nan, 'g', 'filled');

plot_gt_1 = plot(nan, nan, 'k', 'LineWidth', 1.5);
plot_gt_2 = plot(nan, nan, 'k', 'LineWidth', 1.5);
hold(haxes, 'off');

haxes.DataAspectRatio = [1,1,1];
xlim(haxes, [-50,50]);
ylim(haxes, [0,50]);

% plot measurement
num_frames = size(,1);

for i_frame = 1:num_frames
    % plot peak target points of sensor 5
    peak_ids_s5 ={i_frame,5};
    plot_tl_s5.XData ={i_frame,5}.x(peak_ids_s5);
    plot_tl_s5.YData ={i_frame,5}.y(peak_ids_s5);
    % plot peak target points of sensor 7
    peak_ids_s7 ={i_frame,7};
    plot_tl_s7.XData ={i_frame,7}.x(peak_ids_s7);
    plot_tl_s7.YData ={i_frame,7}.y(peak_ids_s7);
    % plot peak target points of sensor 8
    peak_ids_s8 ={i_frame,8};
    plot_tl_s8.XData ={i_frame,8}.x(peak_ids_s8);
    plot_tl_s8.YData ={i_frame,8}.y(peak_ids_s8);
    % plot ground truth OBB of object 1
    gt_1_points = [{i_frame}.polyshape(1).Vertices;{i_frame}.polyshape(1).Vertices(1,:)];
    plot_gt_1.XData = gt_1_points(:,1);
    plot_gt_1.YData = gt_1_points(:,2);
    % plot ground truth OBB of object 2
    gt_2_points = [{i_frame}.polyshape(2).Vertices;{i_frame}.polyshape(2).Vertices(1,:)];
    plot_gt_2.XData = gt_2_points(:,1);
    plot_gt_2.YData = gt_2_points(:,2);



  1. V. Winkler, Range Doppler Detection for Automotive FMCW Radars, in European Radar Conference, Oct. 2007, pp. 166–169., DOI: 10.1109/EURAD.2007.4404963

  2. C. Vasanelli, F. Roos, A. Dürr, J. Schlichenmaier, P. Hügler, B. Meinecke, M. Steiner, and C. Waldschmidt, Calibration and Direction-of-Arrival Estimation of Millimeter-Wave Radars: A Practical Introduction, IEEE Antennas and Propagation Magazine, pp. 34–45, 2020, DOI: 10.1109/MAP.2020.2988528