Indoor Positioning System with iBeacons

Post on 13-Apr-2017

90 views 2 download

Transcript of Indoor Positioning System with iBeacons

Encontremos otro uso práctico a los Beac…. digo..., Terminales de

proximidad

Pero que??

A ya se!!

Indoor localization!

Creo que todo hemos tenido el problema del supermercado!

Pero como lo solucionamos con

Beacons?, si Beacons lo dije!

Necesitamos encontrar una manera de utilizarlos para mapear y crear rutas

Para crear rutas las terminales deben de poder estar conectados en un orden específico

Estas rutas deben de ser facil de navegar y rápidas de encontrar

Deben de representar “Important Landmarks”

La solución debe de ser lo suficientemente general para poder ser usada en el chino de la esquina o en un mall gigante

Pero primero que todo.!

Que se un ?

Es simplemente un dispositivo que da una señal de radio !

De esta señal podemos obtener esta información:Broadcasting PowerRSSI Measured Power

Broadcasting PowerEl poder con el que el transmite su senal.

Se puede modificar, y entre mas alto el poder mas larga la distancia que la senal recorre

RSSIEs la fuerza de la senal del visto por el dispositivo.

Entre mas distancia aya entre el dispositivo y el mas grande el RSSI

RSSISe utiliza para estimar la distancia que hay entre el dispositivo y la terminal…

Measured PowerViene calibrado de fábrica e indica cual es el RSSI esperado a 1 Metro de distancia.

Convinado con el RSSI esto nos deja estimar la distancia entre el dispositivo y el

Ahora que ya sabemos que contiene nuestros

Continuemos!

Lo primero es estudiar un super!

Mi version de super! El Christophmark!

Como lo mapeariamos con Terminales?

Con este mapeo podemos crear rutas, rutas de movimiento.

Pero que podemos usar para representar esta relaciones?

Grafos

GrafosConsiste en una serie de nodos(Nodes)Unidos por conexiones llamadas arcos (archs)

Actualmente son muy utilizados para muchos tipos de problemas

La internet, redes computacionales!Redes SocialesMapeo de carreterasDating sitesSitios de compra(Amazon)Etc, todo utiliza grafos

Son especialmente buenos para encontrar cosas como el camino más corto (Shortest Path) entre N puntos.

DijkstraEdsger W. DijkstraCientifico Holandes En 1972 recibió el premio Turing por sus contribuciones

DijkstraDesarrolló un algoritmo para encontrar el Shortest Path en grafos con peso

Quien lo quiere explicar??

Encontremos el shortest path de A a Z

Lo primero es poner el costo de todos los vértices que no son el de Origen a infinito y el costo de A a 0

Despues buscamos cual es el siguiente vertice que tiene un costo menor y lo guardamos en nuestro Path.

Despues de que seleccionamos el menor , actualizamos todos los demás vértices.

Y repetimos!

GraphsPodemos representar grafos de muchas maneras

-Arboles binarios-Hash Tables-Diccionarios, etc

Que es Neo4jNeo4j is an open-source NoSQL graph database implemented in Java and Scala

The source code and issue tracking are available on GitHub

Lots of support

Editor

Conceptos básicos del editorCreemos un grafo de amigos en NEO4j

1.Agreguemos un nodo2.Pongamos Emil en nombre3.Y es de Suecia

Podemos agrupar nodos por medio de “Labels”En nuetro ejemplo todos los nodos Persona seran anaranjados

Podemos agregar N nodos

Y relacionarlos entre si

RelacionesLas relaciones tienen una direccionLas relaciones tienen un tipoLas relaciones forman patrones de datos

Propiedades entre relaciones

Cypher

CypherCypher es el lenguaje que se utiliza para hacer queries a una base de datos de Neo4j (Como el SQL para Oracle)

Similar a SQL en varias cosasEs simple pero bien poderosoDeclarativo, describe que encontrar no como encontrarlo

CreateCREATE (ee:Person { name: "Emil", from: "Sweden", klout: 99 })

CREATE clause to create data() parenthesis to indicate a nodeee:Person a variable 'ee' and label 'Person' for the

new node{} brackets to add properties to the node

MatchMATCH (ee:Person) WHERE ee.name = "Emil" RETURN ee;

MATCH clause to specify a pattern of nodes and relationships(ee:Person) a single node pattern with label 'Person' which will

assign matches to the variable 'ee'WHERE clause to constrain the resultsee.name = "Emil" compares name property to the value "Emil"RETURN clause used to request particular results

MATCH (ee:Person) WHERE ee.name = "Emil"CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),(ir:Person { name: "Ian", from: "England", title: "author" }),(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),(rvb)-[:KNOWS]->(ally)

Encontremos los amigos de Emile

MATCH (ee:Person)-[:KNOWS]-(friends)WHERE ee.name = "Emil" RETURN ee, friends

DEMO

Ahora que tenemos esto, como conectamos todo?

Demo de WS en node

http://witt.herokuapp.com/shortestpath/from/22-1/to/22-16

RecapitulemosPodemos crear relaciones entre terminales fácilmente

Podemos obtener rutas entre estas terminales

Debemos asociar terminales a puntos de interés por ejemplo:

Demo Parse

En conclusionPodemos saber donde se encuentra la persona por medio de el beacon más cercano

Podemos saber donde la persona quiere ir por medio de el beacon de destino

Podemos saber cual es la ruta que la persona debe de tomar para llegar de la manera mas rapida a su destino

Lo que falta! (No me dio tiempo)

El último paso es mostrar esta información

ProsAtaca un problema real de miles de personas

Para cualquier comercio esto seria un perk bastante grande

Se puede mapear cualquier estructura con esto, malles, supers, estadios, etc

La cantidad de beacons necesarios es relativamente menor comparado a otras soluciones

ProsLa relación entre los beacons y los puntos de interés puede estar en cualquier lugar(Parse, Mongo, Oracle, Access, etc)

Las relaciones y los paths de beacons se encuentran centralizados en otra base de datos

El mapeo de los beacons y sus mapas puede estar en otro sistema independiente.

ProsEs algo que esta por explotar!

ConsLa tecnología es muy nueva y poco probada

Con beacons todo es una estimación, la señal puede fallar, pueden haber paredes, techos, personas que causen interferencia etc

Ocupa bluetooth e internet Hay competencias en el mercado

Otras tecnologias

Principal diferenciaEstas tecnologías usan triangulación para saber donde se encuentra el dispositivo

Para esto debe de tener conexión a mínimo 3 beacons durante todo momento para funcionar

La idea propuesta solo necesita conexión a 1 Beacon para ser mostrado en el mapa.

Se mostrará la ruta en el mapa y la persona debe de saber donde esta arriba, abajo derecha izquierda basándose en su propia lógica(duh!) y navegar la ruta mostrada en el mapa.

Con lo propuesto no sabemos facilmente donde exactamente esta el dispositivo y que direccion lleva

Comentarios??

Nombre WHERE IS IT?

=

WITT

Cuando le entramos?