> For the complete documentation index, see [llms.txt](https://docs.openmind.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openmind.com/full-autonomy-guidelines/features/3d-map-navigation.md).

# 3D Navigation

Localize and plan on a point-cloud map built with 3D SLAM.

When a flat 2D grid isn't enough — think ramps, split levels, or anything where height matters — you navigate against the **point-cloud map** you captured with [3D SLAM](/full-autonomy-guidelines/features/mapping-slam.md) instead. 3D navigation localizes the robot against that `.pcd` and plans paths over it. (For everyday flat, single-floor spaces, [2D Navigation](/full-autonomy-guidelines/features/navigation.md) is simpler.)

Two pieces come up together: **ICP localization**, which matches the live LiDAR against the saved point cloud to track where the robot is, and the **PCT planner**, which plans a route from there to a goal. One thing to design around: this **localizes and plans only — it doesn't drive the robot**. A separate motion controller consumes the planned path, so pair it accordingly.

### In the portal

The [OpenMind portal](https://portal.openmind.com) lets you load a 3D (point-cloud) map and set navigation goals against it from the machine's autonomy view, the same way you would for a 2D map. In **Machine Teleops → Robot Settings → Navigation Mode**, choose **3D Navigation** and pick a saved 3D map.

<img src="https://2120135774-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ft8vMsruGqqhYpVx9qhd5%2Fuploads%2Fgit-blob-d92a534e7afa908d4d3e58eb70b502cadb5be30e%2F3D-slam-map.png?alt=media" alt="" height="383" width="480">

### Before you start

* You have a map with a saved geometry **`.pcd`** — meaning it was built with **3D SLAM** or **3D Full**. A **3D Color** map is view-only and has no navigable cloud, so it won't work here.
* The robot type supports 3D (`slam_3d_supported` in `GET /status`). A real Go2 doesn't — its 3D stack is simulation-only, so 3D navigation on Go2 is a sim feature. See [Robot & simulation support](/full-autonomy-guidelines/features/robot-support.md).
* **SLAM and navigation are both stopped.**

### Running it

Start it against a 3D map:

```bash
curl -X POST http://<robot>:5000/start/nav3d \
  -H 'Content-Type: application/json' \
  -d '{"map_name": "warehouse"}'
```

The planner listens for goal poses on its goal topic (`/goal_pose` by default) and publishes the path it finds. Send goals from your integration or the portal. When you're done:

```bash
curl -X POST http://<robot>:5000/stop/nav3d -H 'Content-Type: application/json' -d '{}'
```

### Parameters

`POST /start/nav3d`

| Parameter    | Type   | Required | Default      | Description                            |
| ------------ | ------ | -------- | ------------ | -------------------------------------- |
| `map_name`   | string | yes      | —            | A map with a saved `.pcd`              |
| `scene`      | string | no       | `Isaacsim`   | Tomography scene config                |
| `goal_topic` | string | no       | `/goal_pose` | Topic the planner listens on for goals |
| `goal_layer` | int    | no       | `0`          | Tomogram layer index for the goal      |

### If something goes wrong

* **`400`** — SLAM or navigation is running, or 3D nav is already up. Stop the other one first.
* **`404`** — the map has no `.pcd`; it wasn't saved during 3D SLAM.
* **`400` unsupported** — the robot type has no 3D stack.

For system endpoints like `GET /status` and base control, see the [Autonomy API Overview](/full-autonomy-guidelines/api_endpoints.md).


---

# 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://docs.openmind.com/full-autonomy-guidelines/features/3d-map-navigation.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.
