Skip to content

Latest commit

 

History

History

README.md

2D wall array (v1)

see it in action!

Instead of simulations we can collect real world data by moving a emitter around in 2D space while keeping our receiver in a fixed location.

v1 hardware setup

Measured wall phase difference The measured phase difference by a fixed emitter at the base of the middle of the stairs. This was generated from real data using this notebook link

Overlayed

Youtube explanation

Overview

Wall array v1

Construction

Building a 2D apparatus like this can be difficult because each axis would require some kind of long lead screw. These can get diffcult to manage and costly if we exceed 1m. Instead of constructing the apparatus orthogonal to gravity we can leverage gravity to keep a suspended system taut.

We construct an appartus with our emitter attach by two arms (ArmA, ArmB) to motors on the wall (MotorA, MotorB). By operating MotorA/B we can change the length of the arms that exactly define the position of the emmitter on the wall (see code).

3D printed files

Thanks to great work by @dammitcoetzee , we have 3D printable motor mounts designed on OnShape and STL files available.

3D printable parts

Apparatus setup

Bill of materials

  • 2 x 27:1 Planetary Gearbox Nema 17 Stepper Motor link
  • 1 x ARM 32-bit 4 Axis GRBL 1.1f link
  • ? x Timing Belt 2GT 10mm Widthlink
  • 2 x GT2 Pulley 20 Teeth 5mm Bore Fit 10mm Belt Widthlink
  • 1 x GT2 Idler Pulley 20 Teeth 5mm Bore 10mm Widthlink
  • 3 x 2.5lb weight link
  • M3 screws
  • 2 x 3D printed motor mounts
  • Pulley holder
  • 2 x PlutoPlus SDR
  • ? x 18/4 Awg cabling (for steppers) link
  • 4 x bingfu 2.4ghz antenna link
  • ? x SMA terminals link
  • ? x 12inch SMA Female -> Male link

Results

Ontop of this data several models were trained using TrajectoryNet. Sample command lines can be found towards the end of the file here.

127486 minibatch updates were perfomed to simultaneously train 4 versions of TrajectoryNet with varying number of layers (1,2,4,8).

Loss objectives

There were two loss objectives being optimized for

  • Single snapshot prediction: Using a single radio measurement in time , predict the position of the emitter
  • Trajectory prediction: Using multiple radio measurements over time , predict the full (including future) trajectory of the emitter

Training

Training loss Left: Single snapshot loss. Center: Trajectory prediciton loss.

Training example: it76799 Left: Ground truth, receiver is stationary, emitter is moving. Center: Single snapshot predictions. Right: Trajectory prediction

Testing

Test loss Left: Single snapshot loss. Center: Trajectory prediciton loss.

Test example: it76799 Left: Ground truth, receiver is stationary, emitter is moving. Center: Single snapshot predictions. Right: Trajectory prediction

Equivalent simulated data

To see how well simulations perform relative to the above real data , equivalent experiments were performed.

Training

Training loss Left: Single snapshot loss. Center: Trajectory prediciton loss.

Training example: it76799 Left: Ground truth, receiver is stationary, emitter is moving. Center: Single snapshot predictions. Right: Trajectory prediction

Testing

Test loss Left: Single snapshot loss. Center: Trajectory prediciton loss.

Test example: it76799 Left: Ground truth, receiver is stationary, emitter is moving. Center: Single snapshot predictions. Right: Trajectory prediction

Data

The data was collected using this code. The fulldata set has a couple hundred hours of recordings.

Example usage

An example for how to use this data is shown here.

Format

The format is a flat file shaped as (N,5+65) float32 values. It is formatted this way to allow for quick loading via memmap.

The values in each row are as follows,

  1. time_stamp
  2. x position
  3. y position
  4. average phase difference
  5. average phase difference with trimmed mean
  6. index 5~69 contains the signal strengths for each of 65 directions [-pi,+pi] computed using the beamformer

Dataloader

An example data loader can be found here

Download

The complete dataset can be downloaded here

A small subset of the data above can be downloaded here