StevenMHernandez / ESP32-CSI-Tool

Extract Channel State Information from WiFi-enabled ESP32 Microcontroller. Active and Passive modes available. (https://stevenmhernandez.github.io/ESP32-CSI-Tool/)
https://stevenmhernandez.github.io/ESP32-CSI-Tool/
MIT License
262 stars 72 forks source link

General Questions about the CSI data #79

Closed olliec28 closed 1 year ago

olliec28 commented 1 year ago

Can anyone tell me what one row of the CSI data represents is it 1 row = 1 packet of data or does one row = 1 second for example. I am just trying to understand the data in order to feed it into a relevant ML algorithm. If anyone could tell me what algorithms they used as Im struggling to identify suitable ML algorithms at the moment. Thanks

StevenMHernandez commented 1 year ago

Each row indicates 1 packet of data. So if you are receiving packets at 100Hz, you should receive 100 rows per second. Each packet contains a certain number of subcarriers which are explained in (https://github.com/StevenMHernandez/ESP32-CSI-Tool/issues/12). I hope this helps.

olliec28 commented 1 year ago

Each row indicates 1 packet of data. So if you are receiving packets at 100Hz, you should receive 100 rows per second. Each packet contains a certain number of subcarriers which are explained in (#12). I hope this helps.

Thanks. I'm assuming in order to find the rate at which im receiving packets, that's the Tick rate In your tutorial?

StevenMHernandez commented 1 year ago

That is a common question. I should probably update the documentation to mention this.

It is actually in ESP32 CSI Tool Config > *** for the active_sta (the transmitter).

olliec28 commented 1 year ago

That is a common question. I should probably update the documentation to mention this.

It is actually in ESP32 CSI Tool Config > *** for the active_sta (the transmitter).

Perfect thanks for your reply. You have any ideas on suitable mL algorithms. By reading around it looks like Recurrent Neural networks are worth attempting? Thanks

StevenMHernandez commented 1 year ago

There are many different algorithms to try, it really depends on the task.

In our survey (Figure 4 and Figure 1: https://www.people.vcu.edu/~ebulut/COMST22_WiFi_Sensing_Survey.pdf), we showed that signal preprocessing steps can be very important for achieving good accuracy. Then, after signal processing, you can input the model into something like an RNN or CNN.

olliec28 commented 1 year ago

Could I also ask you, how this imaginary part is calculated and if it is an estimation should the imaginary part be removed during data pre-processing so that only the real CSI data is used?

StevenMHernandez commented 1 year ago

This script shows how I convert the real/imaginary data to amplitude/phase (https://github.com/StevenMHernandez/ESP32-CSI-Tool/blob/master/python_utils/parse_csi.py). My work so far focuses on amplitude specifically. I would recommend that you also focus on amplitude initially. Good luck!

StevenMHernandez commented 1 year ago

Because this is not a specific bug for the codebase, I am going to "close" this issue. However, if you still have questions, feel free to leave additional comments here.