Code Monkey home page Code Monkey logo

egaebel / lgtm Goto Github PK

View Code? Open in Web Editor NEW
57.0 10.0 58.0 102.76 MB

The code for my thesis project, Looks Good to Me (LGTM), Authentication for Augmented Reality. This is a full implementation of LGTM that localizes a wireless transmitter, and searches for a specific face at that location to authenticate two users trying to establish secure point to point communication.

C++ 28.02% Shell 15.69% MATLAB 25.56% CMake 0.51% Makefile 0.36% Python 9.56% C 20.30%

lgtm's Introduction

Looks Good To Me (LGTM): Authentication for Augmented Reality

I would greatly appreciate it if any researchers using this work for a publication cite my thesis, found here:
https://vtechworks.lib.vt.edu/handle/10919/71638

IEEE Format:
E. G. Gaebel, "Looks Good to Me (LGTM): Authentication for Augmented Reality", M.S. thesis, Dept. Computer Science, Virginia Tech, Falls Church, VA, 2016

BibTeX:

@MASTERSTHESIS {LgtmGaebel2016,
    author  = "Ethan Daniel Gaebel",  
    title   = "Looks Good to Me (LGTM): Authentication for Augmented Reality",  
    school  = "Virginia Tech",  
    year    = "2016",  
    address = "Falls Church, VA",  
}

The MIT License (MIT) Copyright (c) 2016 Ethan Gaebel [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

lgtm's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lgtm's Issues

Questions about the parameters corresponding to the experimental datasets and the shape of Pmusic

@egaebel Thank you so much for your code! It helps me understand and implement SpotFi very much. But I have optimized your code to run more efficiently.

I am trying to use your experimental data to verify the correctness of my code. In your code, the antenna distance is set to be 0.1. To my understanding, if the antenna distance is larger than half length of the magnetic wave, it will course ambiguities of AoA detection in a linear antenna array. Thus when I run your original code, a time period of the Pmusic is:
pmusic
This figure shows three paths in terms of ToFs. Each path appears multiple peaks. This confuses me a lot. Is it due to the 0.1 antenna distance coursing an ambiguity? Or am I missing the correct parameter setting?

Moreover, from your outputs, "True number of computed paths: 6". But the figure only shows three paths. Could you please help me explain it? (I had tuned the tau value to be 0-2000ns. It shows the shape of the figure above periodically. )

Question on SpotFi MUSIC specturm

In lines between 646-652 of a file csi-code/spotfi.m:

for jj = 1:size(Pmusic, 2)
    % AoA loop
    for ii = 1:size(Pmusic, 1)
        Pmusic(ii, jj) = 10 * log10(Pmusic(ii, jj));% / max(Pmusic(:, jj))); 
        Pmusic(ii, jj) = abs(Pmusic(ii, jj));
    end
end

I think abs should be removed. Because MUSIC spectrum will have negative value at non-candidate in decibels , and taking abs to the negative value will make a non-candidate to a candidate.

If I get wrong, please let me know about it.

Regards.

eigenvectors

hi, your code have some issue. when you constuct the noise space , the eigenvectors not be sorted.

The problem about likelihood

@egaebel I found the likelihood is negative by using your code. i don't know the reason. Besides, Why you use SVM to train the likelihood weights. Can you explain the two problem in detail? Thank you!

Some question about linear fit

@egaebel
Hi,
I have read your code about lgtm project, thank you for your efforts ! It helped me a lot.
A lot of experiments have been carried out, unfortunately,when I use my data from Intel 5300 NIC, the precision of AOA estimtion is far from satisfactory.
I noticed the process of phase sanitization algorithm which use spotfi_algorithm_1 algorithm.
I have some ideas about that. I construct a model to quantify the time delay.
τ = T_error + T_tof + T_antenna
τ represent the total time delay.
T_error represent the time delay induced by PDD、STO and other phase error.
T_tof represent thre time consumed by signal propagation from transmitter to receiver.
T_antenna represent the time consumed by signal propagation between two antennas, which can be expressed as T_antenna = (n-1)d*sinθ / c. d is the distance between two adjacent antennas and c is the speed of light.
τ_fit represent the linear fit result.
The aim of linear fit is to remove the effect of random time delay induced by PDD and STO.
when τ_fit <= T_error + T_tof, the angle information is retained.
when τ_fit fall in between T_error + T_tof and T_error + T_tof + T_antenna, I guess that the angle information will be destroy.
and, when τ_fit fall >= T_error + T_tof + T_antenna, the angle information will alse be destroy.
I want to know that whether my guess is right or not ?
Will the process of liear fit will comeout such a situation ? I call it "over" liear fit.
This question has pusseled me for a long time. I will be appreciated of you if you could give me a hand.
thank you.

packet_one_phase_matrix does not change in loops

Hi @egaebel. Thank you so much for sharing your code!

I have got a question in spotfi.m.

In line 61 you write
packet_one_phase_matrix = unwrap(angle(csi), pi, 2);
thus the packet_one_phase_matrix is assigned to be the unwrapped csi values of the first package.

In line 84 you write
sanitized_csi = spotfi_algorithm_1(csi, sub_freq_delta, packet_one_phase_matrix);
in the parfor loop. Thus the packet_one_phase_matrix is passed into spotfi_algorithm_1, which means the same packet_one_phase_matrix (that generated from the first package) is used for all packages.

Maybe I miss something, but I don't think this should be the case. Could you please explain a little bit?

how to assign values for tau?

Hey guys, I just found out that if I choose different sets of values for tau in the function"aoa_of_music",I get different results. Should tau be determined with regard to the physical distance between transmitter and receiver?

May i read your thesis?

@egaebel Thank you for your share of this very useful code. If it's convenient for you, i'll be much appreciated if you can send me your thesis, thank you very much.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.