Lifecasting: Location Tracking

You may have seen Justin.tv or some other ‘live’ blogs (kind of like online reality television). Although I don’t think I could even remotely consider going that far, I do like the idea of allowing at least my friends and family to know where I am/what I’m doing. This post will concentrate on the ‘where I am’ part, I have posted some information relating to the ‘what I’m doing’ part on my other, more technical blog though, in case you’re interested.

So, you’ve got a GPS (eg. Nokia N95, or a Bluetooth GPS), you’re planning to keep it in your pocket all day and send location updates to the internet in some way, of course you’ll be utilising your mobile phone for this. There are two things to consider at this point… what are the requirements for the mobile phone software and what are the requirements for getting your location to somewhere useful (namely, the Internet).

I’ll discuss these two things separately.

Mobile Phone

For the mobile phone software (and I’ll be talking about Symbian S60 3.x based phones), we’re going to be looking for either a Java MIDP or Symbian S60 based application. The advantage of using a Java application is that it may also work on other varieties of phone. The downside is that they may not integrate as nicely into the phone’s features than S60 specific applications (such as the Location API) and may be a little harder on battery life (I haven’t confirmed this though).

Since we’re going to want to use our phone at the same time as sending location updates, the next requirements on the mobile side would be that the software not be too power hungry and that the software sit quietly in the background when asked. We don’t want anything being downloaded, such as maps, since this will also mean higher data usage and power consumption.

Note: Running a constant bluetooth and data connection will dramatically reduce battery life. The usual disclaimer about bandwidth prices on your operator apply.

So, who are the contenders for the mobile phone side?

Although Jaiku is good and puts your location online, it isn’t based on GPS (at least not at this time), instead it uses mobile phone cell information, so it’s not really usable for our little project.

3D Tracker works and has the simplistic features we want in terms of just the basic GPS tracking, but as far as I can see, it only sends up to a particular site which is not very nice to use (it’s seems a bit of an after-thought to their commercial site).

GMap-Track works, but it is constantly downloading map data and is also fixed to only send to their website, which at the moment is unfinished.

CoPilot Live 6 looks like they would do the job, but CoPilot looks far too heavy for our needs (it’s a full GPS routing system).

That leaves Aspicore GSM Tracker and AFTrack. I didn’t look closely enough at the Aspicore software and thought it hooked into some proprietary server software, but it appears to be possibly more flexible and open than AFTrack, which I purchased not so long ago. I may purchase the Aspicore software too as that does look better than AFTrack.

Both AFTrack and Aspicore GSM Tracker will do what we’re looking for, and I would now suggest using Aspicore over AFTrack, but I purchased AFTrack before reading into the Aspicore solution properly, so I will be using that for my system… Both applications work on the same principal though, so implementation should be almost identical.

The Web Service

Now we’ve chosen the mobile phone software we’re going to use, we can look at the Internet side of our solution. This is going to be a web service that takes the location information as input and allows you to display it in various different ways.

After a quick search there are many different services online that work with both AFTrack and Aspicore GSM Tracker.  There are also some services listed on the applications’ websites.  Each of the services I looked at, apart from GpsGate, had some major issues… they were either unfinished, unstable or 30 day trials/commercial sites.  What I was looking for was a (preferably free) service that had a somewhat nice feel to it.  We are, after all, going to be sending people to it.

GpsGate looks nice and seems to work fine, so you may find that suits your needs (Aspicore GSM Tracker is recommended for this site), but I wanted to be adventurous.

Since I wasn’t totally satisfied with the sites I looked at, I decided that I would develop my own service that works the way I want.  The service I have created can be found here.  It is under development, but I hope that over time, with enough feedback, I can make the site useful and feature-rich.

I have made the service free for single devices (I may have to charge a small amount for business use) and currently displays your location, with some history, on a Google Map and also allows you to have your location streaming near-live using Google Earth (it updates every minute).  I will describe below about how I’ve developed it, but I would appreciate as much feedback as possible about the service so I can develop the features you want to use.

Being More Adventurous

If you’re not scared by programming and you have some patience you might want to investigate creating your own tracking site as I have done.  I used nothing other than Ruby on Rails and the Google Maps API to create my service, but if you want some code to start from I suggest looking at Aspicore’s PHP Tools page.

I will describe in future posts how I made different parts of the service.

Overall I’m happy with the outcome of the system.  The final result was better than I expected for a first attempt, but I can already see some future improvements:

  • I like Free and Open Source Software, so I would like to develop an Open Source GPS tracker client as a community project.  This would allow the service I have created to be truly free for individuals, and so should get a lot more users.
  • I am trying to devise a way that the location information collected using the service could be turned into a ‘badge’ (small image/’widget’) that could be placed on a user’s blog.

Beyond…

Doing this project got me thinking… What else could we use the information we’re gathering about ourselves for?  The simple answer I came up with was… anything!  Currently I use ShoZu (another mobile application) to ‘tag’ photos I take with my location before sending them to Flickr.  I have also integrated GeoRSS into this blog.  What is stopping these (and others) being integrated with the information we already have apart from an open API?  I’ll discuss this in a future post.