All projects

Wireless · DSP · Machine learning

Wi-Fi CSI Indoor Localization

GPS stops at the door. The version of this that went around last summer used one ESP32 and a router, so one link, and I wanted to know what a small network would do instead. Three nodes give nine directed links, and locate a person from nothing but the way their body disturbs the Wi-Fi packets crossing between them. No tag, no camera, nothing carried by the person being tracked.

Tools
ESP-IDF · Python · scikit-learn
Hardware
3 x ESP32, 9 links at 50 Hz
Median error
0.79 m
Hand-drawn floor plan on graph paper with wall dimensions, node positions and lettered survey waypoints marked

Why three nodes

Interactive: click any waypoint to isolate its routes
router 0.21 0.20 0.24 a b c d e f g h i j k x
ESP32 node Router Survey waypoint Route leaving the selected point Route arriving at it

1 - 10

  1. 1a → b
  2. 2a → h
  3. 3b → a
  4. 4b → g
  5. 5b → e
  6. 6e → b
  7. 7e → f
  8. 8h → a
  9. 9h → g
  10. 10g → h

11 - 20

  1. 11g → b
  2. 12g → f
  3. 13g → c
  4. 14f → e
  5. 15f → g
  6. 16c → i
  7. 17c → j
  8. 18c → k
  9. 19c → d
  10. 20c → g

21 - 30

  1. 21i → j
  2. 22i → c
  3. 23j → i
  4. 24j → c
  5. 25j → k
  6. 26j → d
  7. 27k → c
  8. 28k → j
  9. 29k → d
  10. 30d → c

31 - 40

  1. 31d → k
  2. 32d → j
  3. 33i → x
  4. 34c → x
  5. 35d → x
  6. 36j → x
  7. 37x → d
  8. 38x → f
  9. 39x → c
  10. 40x → j
Surveyed positions (metres, origin at the lower-left corner)
ESP32 node .21(2.2, 0.5) · lower room, left
ESP32 node .20(4.9, 1.7) · lower room, right
ESP32 node .24(5.6, 5.5) · upper room, doubles as waypoint x
Router(2.7, 7.1) · upper room, far corner
Doorway between halves1.4 m opening, waypoint c at (3.4, 4.6)
Previous: FM Band-Stop Filter Next: 2.4 GHz Patch Antenna