Open Data-Kit Sensors
Objectives Modular Framework for adding new sensors Abstract discovery, communication channels, data buffers Isolation between apps and sensor-specific code Apps should work even with buggy sensor code Understand the modularity vs. performance tradeoff Ease sensor integration with applications by allowing sensor functionality to be downloaded from app store as opposed to OS/framework changes
Framework Requirements Make it easy to create drivers Make it easy to use/re-use external drivers in apps Ease of deployment of new sensors/drivers shielding end-user from the details Make it easy to upgrade Make it hard for bad sensor drivers to affect framework negatively Sensors should be easy to discover through streamlined UI Easy to manage communication channel workings such as dropped connections
ODK Sensors Architecture Three apps User-Application App: User-facing; Communicates with sensors through the unified framework API ODK Sensors Framework App: Manages low-level, channel specific communication, and abstractions to isolate sensor code Sensor Driver Apps: Sensor driver
ODK Sensors Architecture
Three Driver Architectures V1: Drivers in the framework Not flexible V2: Each sensor driver is an app Use Binder to communicate Implement Generic Sensor Interface Sensor App needs to be stateless V3: Each sensor driver is an app Communicate via broadcasts asynchronously Non-blocking nature shields apps from buggy drivers
Energy-Efficient GPS Sensing with Cloud Offloading
GPS Basics GPS Receiver needs the following info for trilateration Precise time T Set of visible satellites at time T Distances of receiver from each of the visible satellites at time T (pseudoranges) Almanac: Coarse orbit and status information of all satellites Ephemeris: Precise orbit information only about the satellite transmitting
Calculating PseudoRange C/A code repeats every millisecond Can use this to calculate ToF if clocks are synchronized and stationary Doppler Effect Code Phase Change
A-GPS: Coarse-Time Navigation Get Ephemeris data from servers Also provide Doppler shift and code phase change guesses Does not require precise timestamp (HOW) Use time difference as another variable in the Minimization Use nearby landmark (cell tower) to estimate time diff to nearest millisecond
CO-GPS Problem without landmarks: Shadow Locations Solution 1: Angle of Arrival Solution 2: Elevation Database
Solution Use WWVB for accurate time synchronization Test case: .407mJ energy consumption A-GPS fix: 1J for the first fix