Share this page
Share this page E-mail this page Print this page RSS feeds
Home > Projects > Location aware mobile application infrastructure
StarTrack

Overview

Tracks play a prominent role in a variety of emerging mobile applications from trip planning to online games to fitness monitoring. Consider a ride sharing application, for example. By recording and comparing the tracks of commuters driving to and from work, this application suggests co-workers that can potentially drive together, thereby reducing pollution, gas consumption, and traffic congestion. Similarly, tracks left by others might help someone new to an area discover interesting biking trails, determine safe places to walk, or indirectly share experiences with friends and family.

StarTrack is a system that enables extensive operations on tracks. A track is a discrete and sampled representation of a continuous route. Mobile devices collect tracks and opportunistically upload them to a central server. StarTrack includes facilities for storing, comparing, clustering, indexing and retrieving tracks. It serves as the foundation for building large-scale track-based services.

StarTrack Architecture

The StarTrack system is based on a client-server architecture. The figure below depicts a system with a cell phone, desktop PC, and the StarTrack server(s). In practice, a system will contain many mobile devices and any number of stationary PCs interacting with a (logically) centralized server. This figure also shows the software components that run on both mobile and fixed devices as well as on the server.

 

 

 

 

 

 

 

The StarTrack server infrastructure is implemented on top of SQL Server. Tracks are stored, indexed, and queried using SQL Server 2008's support for spatial data. To provide a scalable infrastructure, the track data can be replicated and distributed across multiple servers based on geographic regions, users, or applications.

Sample Application -  Ride-sharing:

To illustrate the applicability of the StarTrack API, the high-level code for a ride sharing application built using StarTrack is presented below. This code can run on any device that has a network connection to the StarTrack server.

// get a representative track for my own commute
myCommuteTrack = GetRepresentativeTrack("me", "7:00 am", "9:00 am");
// find tracks of others with similar commutes
similarTracks = QueryTracksByTrack(myCommuteTrack);
for each track in similarTracks do
person = GetTrackOwner(track);
commuteTrack = GetRepresentativeTrack(person, "7:00 am", "9:00 am");
if SimilarTracks(myCommuteTrack, commuteTrack)
   report person as a potential ride sharing partner
end loop;
 
 

Publications

Ganesh Ananthanarayanan, Maya Haridasan, Iqbal Mohomed, Doug Terry, and Chandramohan A. Thekkath. StarTrack: A Framework for Enabling Track-Based Applications. To Appear in MobiSys 2009.

Interns

  • Ganesh Ananthanarayanan, UC Berkeley, Summer 2008
  • Erich Stuntebeck, Georgia Tech, Summer 2009

 

Documents

StarTrack paper - (MobiSys 2009)

StarTrack API

The operations in StarTrack's API fall into five categories: recording, manipulating, comparing, clustering, and querying tracks. The table below presents a simplified set of key operations in our API.

 Recording Tracks

 trk = StartTrack();

 EndTrack(trk); 

 SaveTrackEntryMetadata(trk, metadata); 

 RemoveTrack(trk); 

 Manipulating Tracks

 trk = ClipTrack(trk, region); 

 trk = SpliceTracks(trk1, trk2); 

 entries = ExtractTrack(trk); 

 entry =

  GenerateTrackEntry(coords, time, metadata); 

 trk = GenerateTrack(entries, metadata); 

 Comparing Tracks 

 similarity =

  CompareTracks(trk1, trk2,  constraints); 

 bool = SimilarTrack(trk1, trk2, constraints); 

 Clustering Tracks 

 trks = ClusterTracks(trks) 

 trk = RepresentativeTrack(trks); 

Querying Tracks 

 trks = QueryTracksByRegion(region); 

 trks = QueryTracksByOwner(owner); 

 trks = QueryTracksByMetadata(metadata); 

 trks = QueryTracksByTime(start, end); 

 trks = QueryTracksByTrack(query-trk);