Augmented Reality (AR) is one of those nebulous computing terms that can mean entirely different things to any two vendors. AR covers everything from games to computer vision to mash-ups of Web services — but the most useful applications are those mobile browsers that grab your current location and overlay relevant information about the things around you. Layar, Google Goggles, and Wikitude, for example, can place photos, Web pages, or a multitude of other information about your surroundings right at your fingertips. But if you care about open source, have no fear: there are plenty of alternatives to the proprietary AR app vendors. Let's look at what they offer, where they differ from proprietary AR, and where the field seems to be going.
Android users have the rosiest view of the AR landscape. The open source applications closest in usage to the commercial AR browsers are Mixare, AugmentThis, and ARviewer. All are available as stand-alone apps from the Android Market, or from their individual project sites — and each can be used as an engine on which other apps are built.
Several of the AR browser projects for Android make the same split effort — there is a browser app, plus a framework to build other browser apps and add or edit your own AR content. The down side is that none of them spends as much effort building up a large library of default data sources. The Mixare App displays Wikipedia points of interest (POIs) by default, but it offers instructions on how you can tailor it to display your own data sources. At the moment, the Mixare site lists three derivative apps, all of which are tailored to specific regions in Europe. However, you can also use the Mixare browser to access other data sources on a link-by-link basis. The Display Your Own Data instructions outline how this works; you simply pass a JSON-formatted request to the browser that includes both the URL of the data you want to tag, and its geolocation. Mixare uses the phone's camera to overlay linked images on a "heads-up" style video display, which is the most popular AR interface.
AugmentThis is more explicitly about contributing your own data — kind of like a Wiki-AR-database. You can create geo-tagged data files in KML (using Google Earth or any other KML-compatible application) and upload them to the AugmentThis site. Then you can access your own private geodata in the mobile browser, plus the full library of publicly-contributed geodata POIs. AugmentThis can display either a 2-D map view or a "heads-up" display with waypoints and POIs overlayed over the camera feed.
Naturally, there is no shortage of opinion as to which approach is better, but unless you have a fast processor in your device, many user reports indicate that the 2-D map views show you your surroundings better, because you don't have to turn and pan the phone to see the tagged objects outside the camera's field-of-vision. Since most high-end Android devices have a digital compass, they can correctly detect orientation, and re-orient the map view even in 2-D. AugmentThis takes advantage of this feature if your hardware supports it.
The third option, ARviewer, is based on the LibreGeoSocial framework, and the version in the Android market is essentially a demo. But, if you're so inclined, you can tag and contribute your own content as well. ARviewer and LibreGeoSocial fall short of the competition when it comes to documentation, however, so until that situation improves, you'll find it much easier to get started with the others.
There is yet a fourth Android-powered solution, OpenAR, although right now you must request a token from the project before you can use the mobile app to tag locations and upload information. OpenAR seems targeted more at individual contributions than the other projects, offering no list of public data sources (even from free sites like Wikipedia). It is probably a project to watch for the future.
iPhone and Everybody Else
Believe it or not, the locked-down iPhone platform actually has one of the most open AR browsers currently available. It is called Argon, and is developed by a research group at Georgia Tech. Argon is actually designed to showcase the group's back-end work, KHARMA, which is an effort to build an AR content server that runs on top of a standard HTTP server.
Part of what holds AR back from taking the world by storm is the lack of a truly standardized way to request and return geo-located data — the proprietary apps handle location-based references from Wikipedia, Flickr, Twitter and other sources in different ways, because each site has its own API, and none of them directly handles 3-D structures like multi-story buildings. KHARMA attempts to merge these requests into a common request framework utilizing and extension of KML the project dubs "KARML." Even though the current client is iPhone only, it uses no proprietary iOS features, and the project says it will deliver mobile apps for other platforms in due time.
The other mobile platforms are not so lucky. Symbian device users have only ever seen one open source option, OpenMAR, although the project seems to be in limbo as of 2011. There have been two AR demos showcased for Maemo, SSTT and SVSi, but neither of them seems to have made it to release. It is possible that the N900's lack of a digital compass short-circuited any chance of these apps making it big on Maemo, though, so perhaps MeeGo devices with a compass will prompt more work in the field. The fist webOS devices also lacked the compass feature that really makes AR easy-to-use, but HP did preview an AR app on an upcoming webOS tablet, so there's reason to stay hopeful for that platform as well.
Open Source AR for Developers
For a concept as young as AR, it is par for the course for the open source solutions to spend the majority of their time building re-usable components like "browser engines" rather than focusing on end-user applications. That can be frustrating to users, of course, particularly on mobile platforms that are really geared towards the non-developer crowd.
If you are a developer looking to work with AR, there are several open source libraries designed to help. The extensible browser-based tools mentioned above — Mixare and LibreGeoSocial — offer similar feature sets for Android developers, notably pinning external URLs to specific latitude and longitude locations.
The Mixare project wiki has an introductory guide to developing your own apps using its code. LibreGeoSocial has more detailed documentation, including an "ARviewer SDK" and reference material on the GeoNode format it uses and the tagging system.
There are a couple of AR-related projects worth looking into as well, such as AndAR and ARToolKit. Both seem to focus more on the 3-D object embedding uses of AR which are often associated with games, but the same techniques can be used to overlay buildings and other non-interactive content onto camera video.
Intriguingly, there is also an open source AR toolkit specifically designed for the iPhone platform. Named iPhone ARKit (hey, I never said it was original), it offers an Objective-C library for iPhone developers, specializing in information overlay, and modeled on the iPhone's MapKit framework.
The biggest competitor to AR at the moment is actually geolocation services that run in the traditional Web browser. Firefox for Mobile, for example, has a long list of extensions that retrieve custom content based on your A-GPS or cell-tower-derived location. On top of that, Google and other search vendors are increasingly offering location-aware results that don't depend on a separate application to serve up content.
So, is AR a flash in the plan, soon to be outpaced by smarter browsers and Web services? Maybe, but only if it stands still. If you have used any of the mobile AR browsers, you'll know that the real advantage stems from its ability to seamlessly merge information with your field of vision. So while Wikipedia entries and geographic POIs are a start, the real gem is photo and video content, particularly when if offers the user something that can't be seen with the naked eye. Layar and Google Goggles have a head start in this arena right now; it's up to open source developers to push the idea further.