dichasus-cf0x Dataset: Distributed Antenna Setup in Industrial Environment, Day 1

Distributed antenna setup with line-of-sight (LoS) and non-line-of-sight (NLoS) channels, measured in the Arena2036 research factory campus environment.

Four antenna arrays with 8 antennas each distributed at the corners of an L-shaped area with a scatterer in between.

50.000 MHz

Signal Bandwidth

1024

OFDM Subcarriers

178314

Data Points

9347.6 s

Total Duration

46.8 GB

Total Download Size

32

Number of Antennas

Indoor

Type of Environment

1.272000 GHz

Carrier Frequency

Distributed

Antenna Setup

3D Tachymeter

Position-Tagged

Experiment Setup

Data Analysis

Antenna Configuration

Antenna 1: Antenna Array A

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 [2.6747 -13.8973 1.560075] and the antenna points in direction [-0.4499506 0.89246853 0.03231686].
Antenna Channel Assignments
6 2 16 18
28 5 10 14

Antenna 2: Antenna Array B

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 [-11.250275 -9.689025 1.5336] and the antenna points in direction [0.79575318 0.60534027 0.01843999].
Antenna Channel Assignments
24 8 22 15
30 26 21 25

Antenna 3: Antenna Array C

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 [-1.531375 -15.0595 1.5772] and the antenna points in direction [0.21108544 0.97732106 0.0169259].
Antenna Channel Assignments
3 7 1 12
0 13 31 29

Antenna 4: Antenna Array D

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 [-12.684425 -4.483325 1.78985] and the antenna points in direction [0.99369031 -0.08476847 0.073443].
Antenna Channel Assignments
20 11 9 27
19 4 23 17

Python: Import with TensorFlow

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

raw_dataset = tf.data.TFRecordDataset(["tfrecords/dichasus-cf02.tfrecords", "tfrecords/dichasus-cf03.tfrecords", "tfrecords/dichasus-cf04.tfrecords", "tfrecords/dichasus-cf05.tfrecords", "tfrecords/dichasus-cf06.tfrecords", "tfrecords/dichasus-cf07.tfrecords"])

feature_description = {
	"cfo": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"csi": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"gt-interp-age-tachy": tf.io.FixedLenFeature([], tf.float32, default_value = 0),
	"pos-tachy": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"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)

	# Measured carrier frequency offset between MOBTX and each receive antenna.
	cfo = tf.ensure_shape(tf.io.parse_tensor(record["cfo"], out_type = tf.float32), (32))

	# 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))

	# Time in seconds to closest known tachymeter position. Indicates quality of linear interpolation.
	gt_interp_age_tachy = tf.ensure_shape(record["gt-interp-age-tachy"], ())

	# Position of transmitter determined by a tachymeter pointed at a prism mounted on top of the antenna, in meters (X / Y / Z coordinates)
	pos_tachy = tf.ensure_shape(tf.io.parse_tensor(record["pos-tachy"], out_type = tf.float64), (3))

	# 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 cfo, csi, gt_interp_age_tachy, pos_tachy, 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. For this dataset, the reference transmitter channel seems to be somewhat unstable, i.e., phase and time offsets fluctuate over time. Therefore, we provide a file containing our phase and time offset estimates for each individual file in the dataset. You can download these estimates from the list of files below.

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-cf0x,
	author    = {Euchner, Florian and Gauger, Marc},
	publisher = {DaRUS},
	title     = {{CSI Dataset dichasus-cf0x: Distributed Antenna Setup in Industrial Environment, Day 1}},
	doi       = {doi:10.18419/darus-2854},
	url       = {https://doi.org/doi:10.18419/darus-2854},
	year      = {2022}
}

Download

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

dichasus-cf02
Textual Description

Robot drives along a trajectory with north-south meanders.

4.9 GB

File Size

18516

Points

941.1 s

Duration

dichasus-cf03
Textual Description

Robot drives along a trajectory with south west-north east meanders.

6.2 GB

File Size

23478

Points

1186.4 s

Duration

dichasus-cf04
Textual Description

Robot drives along a trajectory with east-west meanders.

11.0 GB

File Size

41991

Points

2562.6 s

Duration

dichasus-cf05
Textual Description

Robot drives along a trajectory with south east-north west meanders (first part).

5.7 GB

File Size

21635

Points

1072.2 s

Duration

dichasus-cf06
Textual Description

Robot drives along a trajectory with south east-north west meanders (second part).

3.6 GB

File Size

13557

Points

673.8 s

Duration

dichasus-cf07
Textual Description

Robot follows a pseudorandom (hand-drawn) trajectory.

15.5 GB

File Size

59137

Points

2911.5 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: