Thomas Status Report for 4/29

I think I figured out the error in the localization that we were seeing –  the ToF is getting multiplied by 2 somewhere in the new pipeline, so dividing it back out now solves the issue. Temporary fix, but it makes our system work overall.

This past week, I’ve been working on the poster design and preparing it for our testing to get final accuracies tomorrow. The overall style looks goo,d now we just need to add graphs that show accurate the system is and how closely we’ve achieved our goals.

This keeps me on track with the schedule.

Ethan’s status report for 04/29

This week I prepared for and did the final presentation. Other than that, I’ve been trying to work with one of the devices that we bought for which the pinging seemed to be not working with. Before the final demo, I will be working on getting the devices to work with our system, test the integrated system, and work on writing the paper and preparing for the demo.

Anish’s Status Report for 04/29

This week we did our final presentation – we all helped Ethan prepare the slide presentation for that. Other than that, I have been working on refinements to the user-interface so that we can easily show people how our system works during the final demo (by visualizing the internals of the sensing and algorithm). The other thing I have been working on is implementing a few of the remaining unit-tests that we still need to run to validate our system against our design requirements.

I feel like we are on schedule; in the next week we will work on the poster, final report, and finish up running the unit-tests (device detection, as well as the integration-test for accuracy).

Team status report for 04/29

We’re all caught up to our requirements. We spent last week polishing our system and getting it ready for presentation. We will be recording our final data to use tomorrow now that we are all in Pittsburgh.

We will reuse the theming from our final presentation slides for our poster, which is under construction.

The worst-case scenario is our demo breaking the day it gets shown. We will make sure the video can be used as a substitute in case of failure.

Our tests involved unit tests for individual components, i.e. device detection, device pinging, device localization, and self/AR localization, and integration tests. For device detection, we put several devices in a network and tested if it detected all the devices; for pinging, we pinged a known device and observed the ACK packets; for device localization, we localized a known device at known location, and measured the error from the expected to the actual location; and for self and AR localization, we put an AR object in a known location and checked visually. For integration testing, we moved through different traces with devices in different locations and networks.

Team Status Report 04/22

We had a very productive couple of weeks, including finalizing the hardware stack and making it into a small package that can be mounted to the back of a user’s phone so that the user doesn’t need to carry their laptop around the room. We also integrated the components of the system together – the main entry point is a Python program which interfaces with the WebXR platform (streaming data to/from the phone over the network), the device-detection pipeline, the ToF pinging hardware, and the localization algorithm implemented in MATLAB. We got the system integration working where we can walk around a room, and as it collects data points, it runs them through the localization stack to determine and visualize the detected Wi-Fi devices (no manual intervention needed between the steps). The monetary cost of the system still remains within our $150 metric (ESP32, ESP8266, wireless radio, small battery, and USB Wi-Fi card) and it still runs quite well within our expected 5 minute detection time.

We don’t expect any substantial risks going forward as the important parts of our system are all working and integrating successfully. One thing that will be interesting to see is how different devices respond to the same Polite Wifi attack (we’ve already noted that different devices send response packets at different reliability rates, and some Wi-Fi cards go to sleep faster than orders). We’re not expecting this to break anything, but it may require some tuning to force the system to generate more traffic against certain devices to compensate for less accuracy in detecting them.

Ethan’s status report 4/22

This week we worked on preparing for integration and the final presentation. For integration we worked on testing individual parts and putting the pinging and localization script together. We are not fully finished with integration in that we still need to connect having multiple device detection with localizing a device, but other than that we’ve seen steady progress. For my part, I’ve tested that device detection works on multiple devices with the devices we bought. Next week, we will do the presentation and work on finishing integration and making it presentable for the final demo, as well as start working on the report.

Anish Status Report 04/22

These past two weeks were extremely productive – I finalized our hardware stack into a small, battery-powered unit (see the pictures in our “Team Status Report 04/22”) that attaches to the back of the user’s phone. The processing stack runs on a laptop, which can be anywhere in the vicinity (the user doesn’t have to carry it around the room when doing the scan); and the laptop connects wirelessly to the rest of the electronics using a 900MHz (ISM band) radio. I refined the firmware for the ESP32 to use this wireless link to talk to a driver (implemented in Python) on the laptop, as well as programming the ESP8266 to send out the pinging packets (hence completing the time-of-flight loop).

I feel like we are very much on schedule as our integration-testing all works – we can walk around a room with the sensor for ~4 minutes, and see in the AR view that the Wi-Fi devices are located to within the 1m accuracy. There are a few points left to be refined during the next week, including nicer visualization (both on the laptop and in the AR space) and making the device detection run fully asynchronously and feed into the rest of the stack, and after that it’s just working on our report and unit-tests.

Thomas Status Report 4/8/2023

I figured out how to make the localization gradient descent converge better: we either need to fix the SIFS measure or optimize it some other way. All of our traces, even ones we thought were failures before, work with a value for the SIFS that doesn’t cause avalanching in the localization. I still need to figure an alternative to optimize for this SIFS initially, or if it needs to be fixed to a constant.

I also got the Matlab program running in the python engine – so our entire program stack can be run together now, just need to add in the data collection.

Next week, I’ll be working on polishing the AR interface for users (adding text, instructions, and consistent updates)!

Anish’s Status Update 04/08

This week I made substantial progress on the system integration. I ported the pinging-initiator code to run on an ESP8266, and added an interface to configure and pull data from the ESP32+ESP8266 combo, over the UART, in real-time (the need for two microcontrollers comes from the inability to precisely timestamp outgoing packets, so we must send packets from one microcontroller and timestamp both the request and the response on the other). I’ve tested this against the rest of the system (by generating CSV files and piping them into the MATLAB pipeline) and it works quite well in terms of efficiency and reliability.

My next step is to finish integrating it with the rest of the stack by completing the wireless interface (which means the computer running the system doesn’t need to be carried around with the user while they are doing their scan) and writing the Python interface to allow integrating it with the device-detection and localization code. I’m a little worried about wireless reliability with the XBee radio I’m currently using, but there should be a way to make it work with a proper handshaking interface. As such, I feel like we are pretty on-schedule although will need to do substantial testing and debugging-integration in the next two weeks to get everything working.

The testing we need to do once everything is working is to walk around in a room and collect data; and then take various subsets of this data (to test for different timescales and movement patterns) and determine the accuracy of locating the different devices. This, combined with some unit-testing of the self-localization and visualization accuracy, should allow us to quantifiably verify our use-case requirements and metrics.

 

 

Ethan’s status report 4/8

This week, we worked on getting a demo working and started working on integration. The demo was integrating the ESP, pinging, and localization to get a sense of how accurate the localization algorithm is. We decided to not use PicoScenes as we were able to get data we need from the ESPs, so some of what I’ve been doing is no longer useful, but it is good that we can get all necessary data from the ESPs since I wasn’t able to figure out a way to make PicoScenes detect the ACK packets from our pinging. Meanwhile, I worked on testing and cleaning up the device detection script, which it does work. I’ve changed from manually sniffing beacon frames to using iw for the access points, since manually sniffing can sniff access points from adjacent channels which show up as two same access points on different channels. I’ve also tested how long it takes for the devices to respond to my beacon packets, and it seems like about 7 seconds is enough. This can’t get too long, as there may be arbitrary number of access points and our aim is to have everything (from device detection to localization to visualization) be within 5 minutes.

I am testing my part on my local network, and have verified that it detects my phone and ipad consistently. More tests would be possible when our device arrives, with multiple access points that we have control of. Next week, we will continuously work on integration, and I will personally look at device identification to show the users, such as manufacturer, the transmission rate, etc. I am a little bit behind on the device identification, but it should be possible to catch up by next week.