espargos-0001 Dataset: Four antenna arrays in indoor lab room

Four antenna arrays are pointed at a small measurement area in a lab room. Only line-of-sight channels.

36.562 MHz

Signal Bandwidth

117

OFDM Subcarriers

791383

Data Points

6610.3 s

Total Duration

23.9 GB

Total Download Size

32

Number of Antennas

Indoor

Type of Environment

2.462000 GHz

Carrier Frequency

Array-Wise

Synchronization

3D Tachymeter

Position-Tagged

802.11n

WiFi Standard

Experiment Setup

Data Analysis

Antenna Configuration

ESPARGOS 1: North (next to wall / door)

This ESPARGOS array has a vertical spacing of 0.06m and a horizontal spacing of 0.06m. In the dataset's cartesian coordinate system, its center is located at [9.3525 -24.0696 2.6093] and the plane in which all the array's antennas are located is spanned by two vectors: The vector [-0.9991 -0.0378 -0.0169], which points to the right when looking at the array from the front, and the vector [-0.0328 0.7042 0.7092], which points upwards.

ESPARGOS 2: South (next to window)

This ESPARGOS array has a vertical spacing of 0.06m and a horizontal spacing of 0.06m. In the dataset's cartesian coordinate system, its center is located at [9.2331 -20.7883 2.5842] and the plane in which all the array's antennas are located is spanned by two vectors: The vector [0.9971 0.0669 0.0353], which points to the right when looking at the array from the front, and the vector [0.0205 -0.6801 0.7329], which points upwards.

ESPARGOS 3: West (next to chalkboard)

This ESPARGOS array has a vertical spacing of 0.06m and a horizontal spacing of 0.06m. In the dataset's cartesian coordinate system, its center is located at [11.2143 -22.4548 2.6041] and the plane in which all the array's antennas are located is spanned by two vectors: The vector [0.0945 -0.9941 0.0532], which points to the right when looking at the array from the front, and the vector [-0.8007 -0.0427 0.5975], which points upwards.

ESPARGOS 4: East (next to wall)

This ESPARGOS array has a vertical spacing of 0.06m and a horizontal spacing of 0.06m. In the dataset's cartesian coordinate system, its center is located at [7.2405 -22.7075 2.6025] and the plane in which all the array's antennas are located is spanned by two vectors: The vector [-0.1099 0.9939 -0.0017], which points to the right when looking at the array from the front, and the vector [0.6823 0.0786 0.7268], which points upwards.

Python: Import with TensorFlow

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

raw_dataset = tf.data.TFRecordDataset(["tfrecords/espargos-0001-diagonal1.tfrecords", "tfrecords/espargos-0001-diagonal2.tfrecords", "tfrecords/espargos-0001-meanders_ns1.tfrecords", "tfrecords/espargos-0001-meanders_ns1_continued.tfrecords", "tfrecords/espargos-0001-meanders_we1.tfrecords", "tfrecords/espargos-0001-randomwalk1.tfrecords", "tfrecords/espargos-0001-randomwalk2.tfrecords", "tfrecords/espargos-0001-spiral1.tfrecords", "tfrecords/espargos-0001-static_middle.tfrecords", "tfrecords/espargos-0001-static_middle_with_person_walking_nearby.tfrecords", "tfrecords/espargos-0001-circle.tfrecords", "tfrecords/espargos-0001-wobble_middle.tfrecords"])

feature_description = {
	"csi": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"pos": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"rssi": tf.io.FixedLenFeature([], tf.string, default_value = ''),
	"time": tf.io.FixedLenFeature([], tf.string, default_value = ''),
}
			
def record_parse_function(proto):
	record = tf.io.parse_single_example(proto, feature_description)

	# Channel coefficients for all antennas, over all subcarriers, complex-valued
	csi = tf.ensure_shape(tf.io.parse_tensor(record["csi"], out_type = tf.complex64), (4, 2, 4, 117))

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

	# Received signal strength indicator (in dB) for all antennas
	rssi = tf.ensure_shape(tf.io.parse_tensor(record["rssi"], out_type = tf.float32), (4, 2, 4))

	# Timestamp of measurement, seconds since UNIX epoch
	time = tf.ensure_shape(tf.io.parse_tensor(record["time"], out_type = tf.float64), ())

	return csi, pos, rssi, 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()

Configuration Variants and Pointcloud

:

Hint: Move with W-A-S-D, up with spacebar, down with shift, pan with mouse
No pointcloud available for this configuration variant!

Pointcloud Download and Usage Instructions

For this dataset, we provide a pointcloud of the environment, which was generated using a 3D scanning device. You may find the pointcloud useful for visualization purposes or to reconstruct and verify 3D models. Pointclouds can be viewed and edited with applications like CloudCompare.

The tachymeter was used to create a pointcloud scan. While it is stationed in the middle of the measurement area for the pointcloud scan, it was stationed elsewhere while the robot was moving. The coordinate system of the pointlcoud is the same coordinate system that was also used for the rest of the dataset (datapoint positions, antenna array positions).

The pointcloud is available for download as a .pts file.

PTS files are simple text files with the following format:

  • The first line contains the number of datapoints in the scan
  • The other lines contain (x, y, z) coordinates, reflection intensity and (r, g, b) color, e.g.:
x      y        z       i    r   g   b
6.9912 -19.5173 14.7111 -546 183 190 174
6.9930 -19.5178 14.7112 -505 162 171 154
6.9888 -19.5181 14.7098 -570 193 200 184
6.9902 -19.5111 14.7109 -578 184 191 173

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-espargos-0001,
	author    = {Euchner, Florian and ten Brink, Stephan},
	publisher = {DaRUS},
	title     = {{CSI Dataset espargos-0001: Four antenna arrays in indoor lab room}},
	doi       = {doi:10.18419/darus-4352},
	url       = {https://doi.org/doi:10.18419/darus-4352},
	year      = {2024}
}

A Note on WiFi Subcarriers, Bandwidth and Interpolation

WiFi has a concept of "guard" subcarriers, which act as guard bands that protect against interference with systems on neighboring WiFi channels. This means that not all subcarriers get driven (i.e., not all subcarriers contain useful QAM symbols), some subcarriers simply carry zeroes. If these subcarriers are at the edge of the considered spectrum, CSI from these guard subcarriers is simply not included in the dataset. This explains the odd (non-power of two) number of subcarriers and the strange OFDM signal bandwidth. Otherwise, if the guard subcarriers are not at the edges of the spectrum, linear interpolation is used to assign realistic values to these guard subcarriers. This case occurs when using channel bandwidths greater than 40MHz.

A Note on Synchronization

To make sense of the measured CSI data, please take into account:

Download

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

espargos-0001-diagonal1
Textual Description

Robot follows a trajectory of diagonal (southeast-northwest in antenna array nomenclature) meanders.

2.7 GB

File Size

89083

Data Points

741.8 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-diagonal2
Textual Description

Robot follows a trajectory of diagonal (southwest-northeast in antenna array nomenclature) meanders.

2.9 GB

File Size

95744

Data Points

791.9 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-meanders_ns1
Textual Description

Robot follows a trajectory of meanders (north-south in antenna array nomenclature), with interruption in the end.

1.5 GB

File Size

50870

Data Points

422.5 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-meanders_ns1_continued
Textual Description

Robot follows a trajectory of meanders (north-south in antenna array nomenclature), continuation of previous trajectory.

0.2 GB

File Size

5639

Data Points

46.8 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-meanders_we1
Textual Description

Robot follows a trajectory of meanders (west-east in antenna array nomenclature).

2.5 GB

File Size

84186

Data Points

694.5 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-randomwalk1
Textual Description

Robot follows a pseudo-random trajectory in the measurement area.

5.3 GB

File Size

175035

Data Points

1428.4 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-randomwalk2
Textual Description

Robot follows a pseudo-random trajectory in the measurement area.

4.4 GB

File Size

144354

Data Points

1247.8 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-spiral1
Textual Description

Robot follows a spiral-shaped trajectory in the measurement area.

2.3 GB

File Size

77527

Data Points

630.8 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-static_middle
Textual Description

Robot remains static in the middle of the measurement area.

0.1 GB

File Size

2067

Data Points

16.1 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-static_middle_with_person_walking_nearby
Textual Description

Robot remains static in the middle of the measurement area. A person is walking around in the room.

0.1 GB

File Size

2661

Data Points

20.6 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-circle
Textual Description

Robot drives around in a circle (several times).

1.8 GB

File Size

58092

Data Points

519.9 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.

espargos-0001-wobble_middle
Textual Description

Robot remains more or less in the middle of the measurement area, but moves around by a few centimeters.

0.2 GB

File Size

6125

Data Points

49.2 s

Duration

Standard: There is only one configuration variant called the "Standard" configuration.