Conceptual SLAM survey illustration: a synthetic loop route is shown alongside control points and separate withheld checkpoints, emphasizing planning and independent verification. Conceptual SLAM survey illustration: a synthetic loop route is shown alongside control points and separate withheld checkpoints, emphasizing planning and independent verification.

SLAM Scanning: How to Plan a Mapping Survey and Check Drift

If you are planning a SLAM mapping survey, assume the trajectory will drift. Design the route so that the system can close loops, then check the result against independent points that the data was never adjusted to. In the Cartographer ROS documentation, each submap is meant to be locally consistent, but the documentation states that local SLAM drifts over time. For the ZEB Locate accessory, in a FARO Knowledge Base article tagged ZEB Horizon and Horizon RT, FARO/GeoSLAM’s guidance recommends closing the loop for best results and does not recommend the open-loop method.

This article explains why drift happens and proposes a validation workflow. It does not rank devices, report test results or give drift figures, because none of the cited sources supply them. For a device-focused overview, see 3D Mag’s handheld LiDAR scanner explainer.

How SLAM estimates pose and builds a map

SLAM (simultaneous localization and mapping) estimates where the sensor is while it builds the map used for that estimate. Cartographer is a useful documented example, but it does not describe every system. Its walkthrough splits the work in two. Local SLAM, also called the frontend, builds a succession of submaps. Global SLAM, the backend, runs in background threads and its main job is to find loop closure constraints. In the documentation’s own summary, local SLAM generates good submaps and global SLAM ties them together as consistently as possible.

Scope matters here. The Cartographer paper cited by the walkthrough only describes 2D SLAM, although the documentation says those concepts generally apply to 3D as well. Alongside loop closure constraints, the global optimisation can also weigh other inputs, including IMU measurements, an odometry source or a fixed frame such as GPS.

Where drift comes from: motion, geometry, reflections and sensor setup

Drift is the gradual build-up of small pose errors. The Cartographer documentation points to several factors a survey planner can reason about. The right-hand column is editorial reasoning, not measured results.

Factor What the Cartographer documentation says Planning implication
Motion Each message’s timestamp can be considered independently to account for deformations caused by the platform’s motion. Move steadily. Do not assume motion compensation has no limits.
Reflections and noise Some of the furthest measurements can come from reflection or sensor noise, so only ranges between a configured minimum and maximum are kept. Note glass, polished metal and water. Plan extra loops near them.
Orientation Cartographer’s 3D SLAM requires an IMU, which provides an initial guess for scan orientation. Check what inertial data your system relies on.
Submap size Submaps must be small enough that drift inside them stays below the resolution, yet large enough to be distinct for loop closure. Repetitive or featureless areas may make loops harder to recognise. Verify this rather than assume it.

None of the cited sources quantifies how reflective, glass or featureless environments affect a specific system. Treat these as conditions to record and verify, not as known error magnitudes.

Loop closure in practice: planning the route

The guidance below comes from the FARO Knowledge Base article on ZEB Locate. It is product-specific and should not be read as a universal limit for other systems or configurations.

FARO/GeoSLAM recommends that each ZEB Locate survey last a minimum of 3 minutes in mobile mode and be limited to a maximum of 20-25 minutes, to avoid very large files and to reduce drift. This applies whether the loop is closed or open.

If the open-loop method is used anyway, the article expects drift to be greater, with longer scans more vulnerable than shorter ones. It adds that multiple shorter (~10min) captures may provide better results when higher accuracies are required.

For open-loop capture, the article strongly advises frequent local loops around features such as parked cars, street lights or trees. The user should not travel for longer than 100m without performing a loop and should aim for loops every 20-40m along the trajectory.

Control points and coordinate limitations

Loop closure improves internal consistency, while control points tie the dataset to a coordinate system. In GeoSLAM Hub, control is imported through an Adjust to Control (A2C) file. This is a TAB-separated text file with a required header row, and each control point name must contain at least one letter. Hub only supports values in meters and has no support for feet or other units, so convert coordinates before import.

The same article notes that a scale factor is not applied, which creates potential for measurement errors over larger distances. It recommends coordinate systems in a local, flat grid where possible, but gives no error magnitude or distance threshold. These notes apply to Hub only. Cartographer’s optional fixed-frame input is a different mechanism.

A proposed drift-check workflow (guidance, not a performed test)

Proposed verification workflow (editorial guidance; not a performed test). 3D Mag has not run this workflow, and no results are reported.

  1. Agree the deliverable, coordinate system and acceptance tolerance with the client before capture.
  2. Establish control using independent survey methods. Use some points as control and withhold others as checkpoints.
  3. Plan a closed-loop route that follows your system’s manufacturer guidance on duration and loop spacing. Split long areas into shorter captures.
  4. Note conditions that may affect SLAM, such as reflective surfaces, repetitive or featureless corridors and fast motion, and plan extra loops in those places.
  5. Process the data and adjust it to the control points. Confirm that units and coordinate-system requirements match the software’s documented input format.
  6. Measure residuals at the withheld checkpoints and compare them with the predefined tolerance. Record the route, duration, conditions and software version.
  7. Report the deliverable’s limits, including where checks were absent. Do not infer accuracy from vendor specifications.

What a SLAM deliverable can and cannot claim

Algorithm documentation and manufacturer guidance describe how systems are designed and how they should be used. They do not establish the accuracy of a particular dataset. Whether a survey is accepted depends on its own checks against a tolerance the client defined in advance.

A defensible report states the route, duration, loop strategy, control and checkpoint arrangement, software version, conditions encountered and where checks were absent. This article does not address suitability for hazardous or explosive environments, which requires applicable manufacturer evidence and certification.

FAQ

Does SLAM scanning drift?

Expect it to. Cartographer’s documentation states that local SLAM drifts over time, while global SLAM looks for loop closure constraints and ties submaps together. Verify drift on every survey.

Do I need to close the loop?

For ZEB Locate, FARO/GeoSLAM recommends closing the loop for best results and does not recommend the open-loop method. For other systems, check that system’s own documentation.

Is there a maximum survey length?

The ZEB Locate article recommends a minimum of 3 minutes in mobile mode and a maximum of 20-25 minutes per survey. This is product-specific guidance, not a universal limit.

Can control points be in feet?

Not in GeoSLAM Hub. According to its A2C file-format article, Hub only supports values in meters.

Sources

This explainer is based on cited published sources; 3D Mag did not conduct hands-on testing. Publisher sponsorship.

→ Contents