> For the complete documentation index, see [llms.txt](https://multiset.gitbook.io/multiset/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multiset.gitbook.io/multiset/fundamentals/localization/robustness.md).

# Robustness

### Learned models, not hand-tuned rules

Traditional computer vision matches images with hand-crafted feature descriptors. They are fast and they work well when two photos look alike, which is exactly the assumption that breaks in a real building: the lights are off, a truck is parked where nothing was, the sun has moved, half the hall is full of people.

MultiSet localizes with **deep neural networks that are trained rather than tuned**. Training runs on millions of images captured across months and across very different environments, so the models have seen the same kind of space in morning light and at night, empty and crowded, freshly painted and worn. Robustness comes from that exposure, not from a threshold someone picked. It also compounds: as the platform is deployed across more sites and more kinds of space, the range of real conditions the models are held against keeps widening, and each round of training carries those lessons into the next generation.

The networks are **attention based**, which means they learn what in a scene is worth relying on. Structure that stays put, wall lines, door frames, columns, permanent fixtures, carries the pose. Content that moves or changes, people walking through, vehicles, cloud, screens and signage, gets weighted down rather than matched against.

### What that means in practice

| Condition               | How it is handled                                                                                                                                                |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Changing light**      | Day and night, lights on or off, a different sun angle. Training covers the same spaces under varied lighting, so appearance change alone does not fail a query. |
| **People and vehicles** | Transient content is down-weighted in favour of static structure, so a busy concourse localizes on the building rather than the crowd.                           |
| **Sky and cloud**       | Outdoors, cloud cover changes constantly and carries no positional information, so it is not what the pose rests on.                                             |
| **Repetitive surfaces** | Corridors, aisles, platforms, and car park bays look alike by design. This is the hardest case and the one that improves most between model generations.         |
| **Featureless areas**   | Blank walls, glass, and polished floors give little to match. Capture and hints matter most here, see the levers below.                                          |
| **Latency**             | Response time is independent of map size. A query takes the same time whether the map covers a 10 square metre room or a 5 million square foot site.             |

### Model generations

The models improve on a release cycle, the same way a language model does. Each generation is retrained on more data and more varied environments, and the gain shows up as recall: how often a query returns a usable pose at all.

| Generation | What changed                                                                                  |
| ---------- | --------------------------------------------------------------------------------------------- |
| **Gen1**   | The original VPS models.                                                                      |
| **Gen2**   | Higher recall in visually repetitive spaces such as train stations, basements, and corridors. |

Generations are not the same thing as [query modes](/multiset/fundamentals/localization/query-mode.md). A generation is a property of the map, chosen once. `vps-1` and `vps-2` select the engine per request against whatever generation the map is on.

### Levers you control

The model does the heavy lifting, but a handful of parameters make hard environments easier, and none of them require a re-scan.

| Lever                                                                                                                                                 | What it buys you                                                                                                                                |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [`hintPosition`](/multiset/fundamentals/localization/pose-prior-hintposition.md) + [`hintRadius`](/multiset/fundamentals/localization/hint-radius.md) | Restricts the search to a radius around a known point, which is the single most effective fix for repetitive spaces. Feed the previous pose in. |
| [`geoHint`](/multiset/fundamentals/localization/geohint-in-localization.md)                                                                           | The same narrowing from a GPS fix, on a georeferenced map.                                                                                      |
| [`hintFloorHeight`](/multiset/fundamentals/localization/hint-floor-height.md)                                                                         | Rules out the other floors of a building.                                                                                                       |
| [`hintMapCodes`](/multiset/fundamentals/localization/hint-mapcodes.md)                                                                                | Restricts a MapSet query to named maps.                                                                                                         |
| [`queryMode: vps-2`](/multiset/fundamentals/localization/query-mode.md)                                                                               | Deep search. A good fallback when a `vps-1` query fails or comes back with low confidence.                                                      |
| [Multi frame query](/multiset/fundamentals/rest-api-docs/map-query.md#vps-multi-image-query-api)                                                      | Four to six viewpoints instead of one, which is what carries a query through partial occlusion and thin texture.                                |
| [Map Versioning](/multiset/fundamentals/map-versioning.md)                                                                                            | Re-scan a space that has changed and merge it into the same coordinate frame, so the map keeps matching reality without re-authoring content.   |
| [Simulation](/multiset/fundamentals/localization/simulation.md)                                                                                       | Replay captured data against a map to see how it performs before you ship.                                                                      |

Two habits matter as much as any parameter. Capture well in the first place, following [Mapping Instruction](/multiset/fundamentals/maps/mapping-instruction.md), since no model recovers a pose from a space that was never covered properly. And gate on `confidence` rather than treating any returned pose as correct, since a discarded pose costs less than a wrong one.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://multiset.gitbook.io/multiset/fundamentals/localization/robustness.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
