Frozen Time Smoother 2008-12-03

Andrea Censi and Gian Diego Tipaldi. Lazy localization using the Frozen-Time Smoother. In Proceedings of the IEEE International Conference on Robotics and Automation (ICRA). Pasadena, CA, May 2008. pdfdoi supp. material


Abstract -- We present a new algorithm for solving the global localization problem called Frozen-Time Smoother (FTS). Time is 'frozen', in the sense that the belief always refers to the same time instant, instead of following a moving target, like Monte Carlo Localization does. This algorithm works in the case in which global localization is formulated as a smoothing problem, and a precise estimate of the incremental motion of the robot is usually available. These assumptions correspond to the case when global localization is used to solve the loop closing problem in SLAM. We compare FTS to two Monte Carlo methods designed with the same assumptions. The experiments suggest that a naive implementation of the FTS is more efficient than an extremely optimized equivalent Monte Carlo solution. Moreover, the FTS has an intrinsic laziness: it does not need frequent updates (scans can be integrated once every many meters) and it can process data in arbitrary order. The source code and datasets are available for download.

Example of FTF iteration

Additional material (last updated 2008-05-17)

The software and sensor logs are available for download (warning, big files):

The source code is distributed under the Creative Commons License (Attribution-NonCommercial-ShareAlike). In addition to the code by Andrea Censi and Gian Diego Tipaldi, the MCL localizer is based on code from GMapping copyrighted by Giorgio Grisetti, Cyrill Stachniss, and Wolfram Burgard (under the same license).

Note that you need also the C(anonical) Scan Matcher library as a pre-requisite.

Other info:

  • This tech. report lists some improvements to the GHT step. These are implemented in the code, but not used for the experiments reported in the paper.

Localization Examples:

Aces environment: #000, 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 017, 018, 019,

Intel environment: #000, 001, 002, 003, 004, 005, 006, 007, 008, 009, 010, 011, 012, 013, 014, 015, 016, 017, 018, 019, 020, 021, 022, 023, 024, 025, 026, 027, 028, 029, 030.

Please link here using the PURL: