Code Monkey home page Code Monkey logo

nulocale's Introduction

Hello every one. I am a big fan of numenta team and numenta HTM technology. This project is based on nupic-opensource HTM framework. 

Idea:

Imagine if we could somehow localize a person with in a room, observe his moves and make a prediction about his intention then we can develop wide variety of applications. For instance if user turns-on the light as a daily routine after entering a room and if we could capture the capture the anomaly context of not turning on the light we could develop an app to notify and ask if it should be switched on. Notifying when leaving the room without turning off the light should equally work well. Idea is simple but technically there are many approaches to solve this. This part explains 'why nupic ?'. Other ways include popular image processing for such tasks (with privacy, energy consumption and computation requirements as definite concerns). Basic IR range detection works too, but with increasing context complexity basic thresholding logic is bad. Implememting fuzzy, ANN turns complex with complexity again. Moreover hand those approaches do not consider memory(history) sequences in such tasks. Nupic does that well. Nupic is good at observing coincidences too(From HTM micro circuits / Maths behind HTM paper by Hawkins and George). The current framework of NUPIC is enough for such application development if we could tap well its capabilities. But all this works given the assumption that we could somehow localize the person in a room and observe his cordinates.


Bluetooth LE technology is low cost and energy efficienct connectivity range of 30-60 meters radius (could be Visibility rather connectivity not sure) and lasts for one year on a 1.5 V button cell in beacon mode. Meaning that its best suited for Indoor localiztion. Indoor localization using wireless networks is a big challenge. Use signal strength alone we predict the location of person wearing an electronic device which supports some wireless protocol. But signal signal strength alone is proved to be inconsistent. Additional information is needed. The signal strength values are quite erratic in nature. Its not just random it depends on environments. If environment is dynamic too then the rssi values we get are not trust worthy. Predicting the rssi values helps us to filter outlier values. Since nupic is good at detecting the coincidences, the coincidence of this rssi values from multiple sensors could develop constraints and invariant factors and predict accurately. 

Hardware:

I chose light blue bean as the the ble-device. I detect four of these devices with in a room (while only three is enough, i prefer four for reliability and precision. I also believe in the fact more information better results).

I used my surface pro 3 accelerometer and magnetometer sensors for additional context (accelerometer - to judge if i am walking, magn3d - for magnetic north compass direction context. As i said more conincidences might lead to additional information and coincidences help prediction but could be over kill. May be few of those is enough. Intensive research on these will help us understand best factors to consider.)
My coordinates change only when i walk. My walk is judge based on accelerometer. The anomaly for the walk/No-wald is detected using negation logic i.e. 'when i dont walk' context is used instead (since thats equally a good negation context). The magnetic compass plays two roles. The direction of walk which helps but more than that the our own physical body could affect rssi values (that could be great factor as far as i know)

Light blue beans will be in beacon mode (not sure if it can be called peripheral device from bluetooth context) and surface pro 3 will be a central device (surface comes with a bluetooth-LE module and could detect light blue bean devices)

Approach:

Video:

Algorithms:

- Convert the rssi values to distances based on power law.
- 


What works:

- The context of light turning on and off is working proper.
- The localization is pretty random. The initial tests on the x and y should be smoothed out. But i didn't see much improvement. May it needs more tweaking with different encoders. Should check if swarming is useful for that. 


Notes for users:

I started this as a hobby project. I do not guarantee that this works for you. I only guarantee that i will help you if you have questions. Its in a inital stage and everthing is patch work than disciplined approach. I was unware of Numenta contest and it was too late when i came to know about it. Everything i did was in hurry. I tried to submit it as NUPIC hackathon project but unfortunately i missed it. That would have been major driving force to finish this if i had known before. I will still try to finish this in case it could help me get a job. I cannot guarantee on the working though. Because everything is experimental. Theoretically it should work. 


Since i prefer Network API all the code will be moved to opf folder for reference. 

nulocale's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nulocale's Issues

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.