Droidcon India 2011 Talk

Post on 29-Jun-2015

391 views 0 download

Tags:

description

Indoor Location Tagging Engine in Android

Transcript of Droidcon India 2011 Talk

Outline Introduction Diving in Additional Footage

tagin!Indoor Location Tagging Engine

Primal Pappachan

@primalpop

November 18, 2011

Outline Introduction Diving in Additional Footage

IntroductionDefinitionPresent and the FutureUsesStory Time

Diving inBefore jumping inHow it works?Adding it to your LBS application

Additional FootageFeatures of the algorithmChallengesBenchmarking ToolsDemoCredits

Outline Introduction Diving in Additional Footage

TAG YOUR LOCATION!

I Location Tagging

I WiFiI LBSI Open Source

Outline Introduction Diving in Additional Footage

TAG YOUR LOCATION!

I Location TaggingI WiFi

I LBSI Open Source

Outline Introduction Diving in Additional Footage

TAG YOUR LOCATION!

I Location TaggingI WiFiI LBS

I Open Source

Outline Introduction Diving in Additional Footage

TAG YOUR LOCATION!

I Location TaggingI WiFiI LBSI Open Source

Outline Introduction Diving in Additional Footage

TAG YOUR LOCATION!

I Location TaggingI WiFiI LBSI Open Source

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPS

I Cellular TriangulationI RFID

Requisties

I Infrastructure ReuseI UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular Triangulation

I RFID

Requisties

I Infrastructure ReuseI UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular TriangulationI RFID

Requisties

I Infrastructure ReuseI UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular TriangulationI RFID

Requisties

I Infrastructure Reuse

I UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular TriangulationI RFID

Requisties

I Infrastructure ReuseI Ubiquitious

I Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular TriangulationI RFID

Requisties

I Infrastructure ReuseI UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular TriangulationI RFID

Requisties

I Infrastructure ReuseI UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

SCRATCHING WHERE IT ITCHES

PresentI GPSI Cellular TriangulationI RFID

Requisties

I Infrastructure ReuseI UbiquitiousI Common standard

Outline Introduction Diving in Additional Footage

FOR

What

I

I

I

I

I

Whom

I

I

Outline Introduction Diving in Additional Footage

HOW IT ALL STARTED

Outline Introduction Diving in Additional Footage

HOW IT ALL STARTED

Outline Introduction Diving in Additional Footage

HOW IT ALL STARTED

Outline Introduction Diving in Additional Footage

KEYWORDS

I Fingerprint

I URNI Uniform Resource NameI Rank Distance

Outline Introduction Diving in Additional Footage

KEYWORDS

I Fingerprint

I URNI Uniform Resource Name

I Rank Distance

Outline Introduction Diving in Additional Footage

KEYWORDS

I FingerprintI URNI Uniform Resource Name

I Rank Distance

Outline Introduction Diving in Additional Footage

KEYWORDS

I FingerprintI URN

I Uniform Resource Name

I Rank Distance

Outline Introduction Diving in Additional Footage

WORKING PRINCIPLE

Upon an urn request, tagin! engine does the following1. Scan for a fingerprint

2. Check for neighbours3. If found, merge the fingerprint4. If no neighbours, create a new URN5. Return the (merged or newly created) URN

Outline Introduction Diving in Additional Footage

WORKING PRINCIPLE

Upon an urn request, tagin! engine does the following1. Scan for a fingerprint2. Check for neighbours

3. If found, merge the fingerprint4. If no neighbours, create a new URN5. Return the (merged or newly created) URN

Outline Introduction Diving in Additional Footage

WORKING PRINCIPLE

Upon an urn request, tagin! engine does the following1. Scan for a fingerprint2. Check for neighbours3. If found, merge the fingerprint

4. If no neighbours, create a new URN5. Return the (merged or newly created) URN

Outline Introduction Diving in Additional Footage

WORKING PRINCIPLE

Upon an urn request, tagin! engine does the following1. Scan for a fingerprint2. Check for neighbours3. If found, merge the fingerprint4. If no neighbours, create a new URN

5. Return the (merged or newly created) URN

Outline Introduction Diving in Additional Footage

WORKING PRINCIPLE

Upon an urn request, tagin! engine does the following1. Scan for a fingerprint2. Check for neighbours3. If found, merge the fingerprint4. If no neighbours, create a new URN5. Return the (merged or newly created) URN

Outline Introduction Diving in Additional Footage

WORKING PRINCIPLE

Upon an urn request, tagin! engine does the following1. Scan for a fingerprint2. Check for neighbours3. If found, merge the fingerprint4. If no neighbours, create a new URN5. Return the (merged or newly created) URN

Outline Introduction Diving in Additional Footage

IN THE LANGUAGE OF DROID

I getURN()

I getNeighbours(Fingerprint fp)I mergeFingerprint(Fingerprint fp, stored fingerprint id)I pushFingerprint(URN id, changevector[])

Outline Introduction Diving in Additional Footage

IN THE LANGUAGE OF DROID

I getURN()I getNeighbours(Fingerprint fp)

I mergeFingerprint(Fingerprint fp, stored fingerprint id)I pushFingerprint(URN id, changevector[])

Outline Introduction Diving in Additional Footage

IN THE LANGUAGE OF DROID

I getURN()I getNeighbours(Fingerprint fp)I mergeFingerprint(Fingerprint fp, stored fingerprint id)

I pushFingerprint(URN id, changevector[])

Outline Introduction Diving in Additional Footage

IN THE LANGUAGE OF DROID

I getURN()I getNeighbours(Fingerprint fp)I mergeFingerprint(Fingerprint fp, stored fingerprint id)I pushFingerprint(URN id, changevector[])

Outline Introduction Diving in Additional Footage

IN THE LANGUAGE OF DROID

I getURN()I getNeighbours(Fingerprint fp)I mergeFingerprint(Fingerprint fp, stored fingerprint id)I pushFingerprint(URN id, changevector[])

Outline Introduction Diving in Additional Footage

LOCAL VS GLOBAL

I Location based Preferences

I Indoor mapping and/or Wayfinding

Outline Introduction Diving in Additional Footage

LOCAL VS GLOBAL

I Location based PreferencesI Indoor mapping and/or Wayfinding

Outline Introduction Diving in Additional Footage

LOCAL VS GLOBAL

I Location based PreferencesI Indoor mapping and/or Wayfinding

Outline Introduction Diving in Additional Footage

GETTING THE FEET WET

1. Download the latest version of tagin! from launchpad

2. Set up the tagin! engine as a library project for your LBSapplication 1

3. Register a Broadcast Reciever for Tagin! URN4. Start the service - Set number of runs and interval between

them5. Get the URN from Broadcast Reciever

1Edit the Android Manifest file of the project

Outline Introduction Diving in Additional Footage

GETTING THE FEET WET

1. Download the latest version of tagin! from launchpad2. Set up the tagin! engine as a library project for your LBS

application 1

3. Register a Broadcast Reciever for Tagin! URN4. Start the service - Set number of runs and interval between

them5. Get the URN from Broadcast Reciever

1Edit the Android Manifest file of the project

Outline Introduction Diving in Additional Footage

GETTING THE FEET WET

1. Download the latest version of tagin! from launchpad2. Set up the tagin! engine as a library project for your LBS

application 1

3. Register a Broadcast Reciever for Tagin! URN

4. Start the service - Set number of runs and interval betweenthem

5. Get the URN from Broadcast Reciever

1Edit the Android Manifest file of the project

Outline Introduction Diving in Additional Footage

GETTING THE FEET WET

1. Download the latest version of tagin! from launchpad2. Set up the tagin! engine as a library project for your LBS

application 1

3. Register a Broadcast Reciever for Tagin! URN4. Start the service - Set number of runs and interval between

them

5. Get the URN from Broadcast Reciever

1Edit the Android Manifest file of the project

Outline Introduction Diving in Additional Footage

GETTING THE FEET WET

1. Download the latest version of tagin! from launchpad2. Set up the tagin! engine as a library project for your LBS

application 1

3. Register a Broadcast Reciever for Tagin! URN4. Start the service - Set number of runs and interval between

them5. Get the URN from Broadcast Reciever

1Edit the Android Manifest file of the project

Outline Introduction Diving in Additional Footage

GETTING THE FEET WET

1. Download the latest version of tagin! from launchpad2. Set up the tagin! engine as a library project for your LBS

application 1

3. Register a Broadcast Reciever for Tagin! URN4. Start the service - Set number of runs and interval between

them5. Get the URN from Broadcast Reciever

1Edit the Android Manifest file of the project

Outline Introduction Diving in Additional Footage

SIMPLE BUT POWERFUL

I Feature Extraction

I ClassificationI Self-Adaptation/Learning

Outline Introduction Diving in Additional Footage

SIMPLE BUT POWERFUL

I Feature ExtractionI Classification

I Self-Adaptation/Learning

Outline Introduction Diving in Additional Footage

SIMPLE BUT POWERFUL

I Feature ExtractionI ClassificationI Self-Adaptation/Learning

Outline Introduction Diving in Additional Footage

SIMPLE BUT POWERFUL

I Feature ExtractionI ClassificationI Self-Adaptation/Learning

Outline Introduction Diving in Additional Footage

CHALLENGES

I Recursive pushFingerprint procedure

I Using a service and broadcast recieverI Speed vs Accuracy tradeoff

Outline Introduction Diving in Additional Footage

CHALLENGES

I Recursive pushFingerprint procedureI Using a service and broadcast reciever

I Speed vs Accuracy tradeoff

Outline Introduction Diving in Additional Footage

CHALLENGES

I Recursive pushFingerprint procedureI Using a service and broadcast recieverI Speed vs Accuracy tradeoff

Outline Introduction Diving in Additional Footage

LOGGER

I Inplace Benchmarking

I Lower bound on rankdistances

I Stabilizing time

Outline Introduction Diving in Additional Footage

LOGGER

I Inplace BenchmarkingI Lower bound on rank

distances

I Stabilizing time

Outline Introduction Diving in Additional Footage

LOGGER

I Inplace BenchmarkingI Lower bound on rank

distancesI Stabilizing time

Outline Introduction Diving in Additional Footage

LOGGER

I Inplace BenchmarkingI Lower bound on rank

distancesI Stabilizing time

Outline Introduction Diving in Additional Footage

DEMO TIME!

Developed by Sara Khosravi Nasr

Outline Introduction Diving in Additional Footage

CREDITS

I Jorge Silva, Co-founder Komodo OpenLab, Full timeresearcher at IDRC, OCAD University

I Sara Khosravi Nasr - PhD. Student, UIUC

I

Outline Introduction Diving in Additional Footage

CREDITS

I Jorge Silva, Co-founder Komodo OpenLab, Full timeresearcher at IDRC, OCAD University

I Sara Khosravi Nasr - PhD. Student, UIUC

I

Outline Introduction Diving in Additional Footage

CREDITS

I Jorge Silva, Co-founder Komodo OpenLab, Full timeresearcher at IDRC, OCAD University

I Sara Khosravi Nasr - PhD. Student, UIUC

I

Outline Introduction Diving in Additional Footage

Thank you

Outline Introduction Diving in Additional Footage

Thank you

Outline Introduction Diving in Additional Footage

FOR LATEST STATUS

I IRC - irc.oftc.net:#idrc-mobileI Launchpad - Monitor tagin! in Launchpad and use it to

submit questions or feature requestsI Contact me

@primalpopprimalpop@gmail.com