Parallel Tracking and Mapping for Small AR Workspaces - Source Code

PTAM (Parallel Tracking and Mapping) is a camera tracking system for augmented reality. It requires no markers, pre-made maps, known templates, or inertial sensors. If you're unfamiliar with PTAM have a look at some videos made with PTAM.

Here you may download a reference implementation of PTAM as described in our ISMAR 2007 paper (with the relocaliser from the ECCV'08 paper, and a Faugeras-Lustman initialiser instead of 5PP). This implementation was developed on Linux but should also compile on OSX and Win32 (With Visual Studio); please see the included README file for requirements and compilation instructions. Have a look at a video of typical operation

This software is aimed at AR/vision/SLAM researchers! It does not come with pre-made AR games like ``Ewok Rampage.'' The only visualisation included is the four-eyed AVL logo shown in the usage video above.

This release is Copyright Isis Innovation 2008. Read the licence and download the source code here:

PTAM is now also available under GPL! Find PTAM-GPL on GitHub here . Please feel free to fork this project for your own needs. See also Robert Castle's blog entry

It seems many people are having trouble initializing the system correctly. Please remember that the camera must be translated, not just rotated, between the first two key-frames. See below:

Feb 3 2014 - Added refernce to GPL release of PTAM

April 30 2010 - There's now a blog at wordpress for all things PTAM-related.

Jan 28 2010 - If you had crashes in CameraCalibrator try the newest version.

Jul 14 2009 - The switch to TooN2 introduced a failure mode by which new points would immediately be erased, so the map would start empty and exploration would be slowed. Fixed in r112.

May 11 2009 - Finally spotted and fixed a really ancient (and rather embarrassing) bug in the bundle adjuster which made 19 out of 20 iterations less efficient. Also PTAM now uses TooN2 rather than TooN1.

Mar 9 2009 - Some people are reporting segfaults in TooN/linoperators.h - if you get this try compiling with -fno-tree-vectorize (I think this is a compiler bug?)

Oct 3 2008 - r104 adds the frame-to-frame initialiser described in the ECCV'08 paper. This provides more resilience to rapid camera pans.Updated February 2014