dichasus-015x Dataset: Indoor Line of Sight, Lab Room

Indoor line-of-sight dataset in a lab room, with co-located receivers and 50MHz bandwidth

50.000 MHz

Signal Bandwidth

1024

OFDM Subcarriers

86805

Data Points

5431.7 s

Total Duration

22.8 GB

Total Download Size

32

Number of Antennas

Indoor

Type of Environment

1.272000 GHz

Carrier Frequency

Co-Located

Antenna Setup

2D LiDAR

Position-Tagged

3D Tachymeter

Position-Tagged

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-0152.tfrecords", "tfrecords/dichasus-0153.tfrecords", "tfrecords/dichasus-0154.tfrecords", "tfrecords/dichasus-0155.tfrecords", "tfrecords/dichasus-0157.tfrecords", "tfrecords/dichasus-0158.tfrecords"])

feature_description = {
	"csi": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"pos-lidar": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"pos-tachy": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"rot-lidar": 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))

	# Position of transmitter determined by Leica MS60 Tachymeter with 20Hz update rate
	pos_tachy = tf.ensure_shape(tf.io.parse_tensor(record["pos-tachy"], out_type = tf.float64), (3))

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

	# 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, pos_tachy, rot_lidar, 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:

@data{dataset-dichasus-015x,
	author    = {Euchner, Florian and Gauger, Marc},
	publisher = {DaRUS},
	title     = {{CSI Dataset dichasus-015x: Indoor Line of Sight, Lab Room}},
	doi       = {doi:10.18419/darus-2202},
	url       = {https://doi.org/doi:10.18419/darus-2202},
	year      = {2021}
}

Download

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

dichasus-0152
Textual Description

First complete run of vacuum robot

3.5 GB

File Size

13496

Points

871.1 s

Duration

dichasus-0153
Textual Description

Second complete run of vacuum robot

3.8 GB

File Size

14297

Points

893.1 s

Duration

dichasus-0154
Textual Description

Third complete run of vacuum robot

4.0 GB

File Size

15233

Points

933.9 s

Duration

dichasus-0155
Textual Description

Fourth complete run of vacuum robot

4.2 GB

File Size

16137

Points

980.0 s

Duration

dichasus-0157
Textual Description

Fifth complete run of vacuum robot

3.8 GB

File Size

14511

Points

887.4 s

Duration

dichasus-0158
Textual Description

Sixth complete run of vacuum robot. Note that tachymeter positioning is lost after a few minutes, whereas LiDAR positioning is available for the complete measurement duration.

3.4 GB

File Size

13131

Points

866.2 s

Duration

Derived Channel Statistics

Channel statistics such as delay spread, k-Factor and path loss exponent are a good way to characterize a wireless channel measurement and to parametrize a channel model. Using estimation algorithms contributed by Janina Sanzi, we automatically extract the following channel statistics from the measured datasets:

RMS Delay Spread

The delay spread of a wireless channel is inversely proportional to the channel's coherence bandwidth and indicates how "spread out" the lengths of the various multipath propagation paths are. For every datapoint, the delay spread can be characterized by its root mean square value and the resulting delay spreads can be plotted over the measurement area:

Rician K-Factor

The Rician K-factor is defined as the power ratio between dominant and diffuse component, usually expressed in decibels. We estimate the K-factor with a moment-method based on the distribution of of channel coefficient powers. The resulting K-Factors be plotted over the measurement area: