> 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/basics/localization/simulation.md).

# Simulation

### What is Simulation?

Simulation lets you test VPS localization against one of your maps or MapSets directly in the MultiSet Developer Portal, without deploying an app or standing in the physical space. You run previously captured camera data against the map and inspect exactly where the VPS localized the device, how confident it was, and how different query types perform.

This is the fastest way to validate a map's localization quality, debug problem areas, and decide whether a single frame or multi frame query works best for a given location.

### Capture Simulation Data

Before you can run a simulation, you need simulation data associated with your account. Simulation data is a short capture of camera frames and sensor data recorded at a physical location. You can capture it in two ways:

* **MultiSet App:** Open the app, start a new capture, and choose **Simulation Data**. Walk to the location you want to test, capture for a few seconds, name the dataset, and upload it. It becomes instantly available to your account.
* **Unity SDK:** Use the `SimulationDataManager` and the `SimulationDataCapture` scene to record and upload simulation data from the Editor or a build. See [Localization Simulation](/multiset/unity-sdk/localization-simulation.md) for the full workflow.

Captured datasets are tied to your account, so any data you record is available to run against your maps in the portal.

### Run a Simulation in the Developer Portal

#### 1. Select a Map or MapSet

Open a map or MapSet in the Developer Portal and choose the **Simulation** option from the actions on its card.&#x20;

<figure><img src="/files/F9djEoiX4Tnj33NvYDFV" alt="A map card in the Developer Portal with the Simulation action highlighted" width="341"><figcaption><p>Choose the Simulation option on a map or MapSet card.</p></figcaption></figure>

#### 2. Load the Mesh and Your Captured Data

The portal loads the mesh of the selected map or MapSet. On the left, the **Simulation Datasets** panel lists all the simulation data captured against your account, each with its name, code, size, and capture time.

<figure><img src="/files/HoTZQ1mBCkzzwjyAo1LE" alt="Simulation Datasets panel listing captured datasets with Single Frame and Multi Frame options" width="370"><figcaption><p>All datasets captured against your account, ready to run.</p></figcaption></figure>

#### 3. Run and Inspect the Result

Each dataset has a **Single Frame** and a **Multi Frame** button. Click one to run that query type against the loaded map. On a successful localization, a **camera frustum** (the query frame) is placed in the mesh at the exact pose the VPS returned, with an orientation axis gizmo, so you can visually confirm the result against the real geometry.

The dataset card reports:

* The localization status and query type used (e.g. **Pose Found · Single-frame**)
* The **confidence** score
* The returned position (`X`, `Y`, `Z`)
* A thumbnail of the query frame that was localized

Use **Re-run** to run the same dataset again.

<figure><img src="/files/uJb8pJXfkylGzxger9Br" alt="A camera frustum positioned in the loaded mesh at the localized pose, with confidence and XYZ position"><figcaption><p>On a successful pose, the camera frustum is positioned exactly where the VPS localized, with confidence and pose values.</p></figcaption></figure>

### Compare Query Types

For each dataset you can run the localization as a **Single Frame** or a **Multi Frame** query, and re-run as many times as you like. By comparing the pose accuracy and confidence each query type returns for the same location, you can decide which API performs better in that particular situation before you commit to it in your app.

{% hint style="info" %}
Single frame queries are faster but rely on one viewpoint, while multi frame queries combine several frames for more robust results in challenging areas. See [Localization](/multiset/basics/localization.md#query-types) for how the two query types work.
{% endhint %}


---

# 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/basics/localization/simulation.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.
