dichasus-000x Dataset: Indoor Line of Sight, Institute Hallway

Indoor line-of-sight dataset captured in a hallway, with co-located receivers and 10MHz bandwidth

10.000 MHz

Signal Bandwidth


OFDM Subcarriers


Data Points

3608.9 s

Total Duration

16.2 GB

Total Download Size


Number of Antennas


Type of Environment

1.270000 GHz

Carrier Frequency


Antenna Setup



Experiment Setup

Data Analysis

Antenna Configuration

Antenna 1: Main Array

This array has a vertical spacing of 0.118m and a horizontal spacing of 0.118m. In the dataset's cartesian coordinate system, its center is located at [0 0 1.2] and the antenna points in direction [-1 0 0].
Antenna Channel Assignments
28 5 10 14 6 2 16 18
19 4 23 17 20 11 9 27
31 29 0 13 1 12 3 7
30 26 21 25 22 15 24 8

Python: Import with TensorFlow

#!/usr/bin/env python3
import tensorflow as tf

raw_dataset = tf.data.TFRecordDataset(["tfrecords/dichasus-0001.tfrecords", "tfrecords/dichasus-0002.tfrecords"])

feature_description = {
	"csi": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"pos-lidar": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"rot": tf.io.FixedLenFeature([], tf.float32, default_value = 0),
	"snr": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"time": tf.io.FixedLenFeature([], tf.float32, default_value = 0),
def record_parse_function(proto):
	record = tf.io.parse_single_example(proto, feature_description)

	# Channel coefficients for all antennas, over all subcarriers, real and imaginary parts
	csi = tf.ensure_shape(tf.io.parse_tensor(record["csi"], out_type = tf.float32), (32, 1024, 2))

	# Position of transmitter determined by vacuum robot LIDAR, in meters (X / Y coordinates)
	pos_lidar = tf.ensure_shape(tf.io.parse_tensor(record["pos-lidar"], out_type = tf.float64), (2))

	# Rotation of robot relative to its initial parking position, in radians
	rot = tf.ensure_shape(record["rot"], ())

	# Signal-to-Noise ratio estimates for all antennas
	snr = tf.ensure_shape(tf.io.parse_tensor(record["snr"], out_type = tf.float32), (32))

	# Timestamp since start of measurement campaign, in seconds
	time = tf.ensure_shape(record["time"], ())

	return csi, pos_lidar, rot, snr, time
dataset = raw_dataset.map(record_parse_function, num_parallel_calls = tf.data.experimental.AUTOTUNE)

# Optional: Cache dataset in RAM for faster training
dataset = dataset.cache()

Reference Channel Compensation

For this dataset, we are able to provide estimated antenna-specific carrier phase and sampling time offsets. These offsets occur due to the fact that the reference transmitter channel is not perfectly frequency-flat. To learn more about why these offsets occur and about their compensation, visit our offset calibration tutorial on this topic. Note that the estimates provided here are "best-effort" calculations. The phase and time offsets between antennas in the same array are usually very accurate, but for antennas that are spaced far apart, the results may be less precise. The offset are constant over the complete dataset.

How to Cite

Please refer to the home page for information on how to cite any of our datasets in your research. For this dataset in particular, you may use the following BibTeX:

	author    = {Florian Euchner and Marc Gauger},
	publisher = {DaRUS},
	title     = {{CSI Dataset dichasus-000x: Indoor Line of Sight, Institute Hallway}},
	doi       = {doi:10.18419/darus-2203},
	url       = {https://doi.org/doi:10.18419/darus-2203},
	year      = {2021}


This dataset consists of 2 files. Descriptions of these files as well as download links are provided below.

Textual Description

First complete run of vacuum robot

7.1 GB

File Size



1762.1 s


Textual Description

Second complete run of vacuum robot

9.2 GB

File Size



1846.8 s