This repository demonstrates how to apply Channel Charting to WiFi Channel State Information datasets captured with ESPARGOS.
The Jupyter Notebook TripletNeuralNetwork.ipynb
is also the source code for the results presented in the paper
In that paper, we present ESPARGOS datasets, which is a collection of publicly available WiFi Channel State Information datasets with large numbers of phase-synchronous MIMO antennas. We consider Channel Charting as one potential application of these datasets. The advantage of ESPARGOS over our previous DICHASUS datasets is that ESPARGOS works with standard WiFi devices and is realtime-capable, making it very easy to transfer research results into practical applications.
Objective of Channel Charting: Perform absolute or at least relative localization of the transmitter.
Siamese Neural Network-based "Augmented" Channel Charting applied to espargos-0001
: SiameseNeuralNetwork.ipynb
- Four distributed 4 × 2 ESPARGOS antenna arrays, dominant LoS path
- "AoA-Augmented Channel Charting": Siamese Neural Network-based Channel Charting (with fused CSI-based / timestamp-based dissimilarity metric) is augmented by classical triangulation
Training Animation | Top View Map | Typ. Performance | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
CT = Continuity, TW = Trustworthiness, KS = Kruskal Stress, MAE = Mean Absolute Error, CEP = Circular Error Probable
Triplet Neural Network-based Channel Charting applied to espargos-0002
: TripletNeuralNetwork.ipynb
- One large 8 × 4 ESPARGOS antenna array
- Metal wall to ensure NLoS propagation in large parts of measurement area (whenever robot is behind wall from point of view of antenna array)
- Triplet Neural Network learns channel chart based on CSI data and timestamps
- No augmentation with model-based approach: The channel chart coordinates can be arbitrarily translated / rotated / scaled / flipped (affine transformation) compared to the true physical coordinates.
Training Animation | Top View Map | Typ. Performance | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
CT = Continuity, TW = Trustworthiness, KS = Kruskal Stress, MAE = Mean Absolute Error, CEP = Circular Error Probable
* = after optimal affine transformation from Channel Chart coordinates to physical coordinates is applied
Our code is based on Python, TensorFlow, NumPy, SciPy and Matplotlib. Source files are provided as Jupyter Notebooks, which can be opened directly here on GitHub or using e.g. https://jupyter.org/.
We run our Channel Charting experiments on a JupyterHub server with NVMe storage, AMD EPYC 7262 8-Core Processor, 64GB RAM, and a NVIDIA GeForce RTX 4080 GPU for accelerating TensorFlow. All indications of computation times are measured on this system. It should also be possible to run our notebooks on less performant systems.
@inproceedings{euchner2024espargos,
author = {Euchner, Florian and ten Brink, Stephan},
title = {{ESPARGOS: Phase-Coherent WiFi CSI Datasets for Wireless Sensing Research}},
booktitle = {Kleinheubacher Tagung},
year = {2024}
}
- Christoph Studer's Channel Charting Website
- Original ESPARGOS Introduction Paper
- ESPARGOS Website
- Our tutorial on dissimilarity metric-based Channel Charting
- Our tutorial on Triplet Neural Network-based Channel Charting
- Good recent paper on joint ToA / AoA-based localization
- Other paper doing something similar to WiFi-based Channel Charting, but calling it "WiCluster"