# real-lsy/that-nav architecture

> Architecture diagram of the GitHub repository real-lsy/that-nav, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/real-lsy/that-nav
- Repository: https://github.com/real-lsy/that-nav

## Overview

PermitNav integrates ROS 2 components into a Go2-W 3D navigation demo. MID360 data feeds FAST-LIO for mapping and odometry; FAST_LIO_LOCALIZATION2 localizes against a saved point-cloud map, and a bridge supplies the navigation-frame transform. Maps can be converted to OctoMap and managed; the Web interface supports map interaction and goal setting, while the planner and controller produce velocity commands for the robot bridge. README documentation establishes the overall pipeline and capabilities; sampled source confirms selected driver, mapper, map-manager, Web, launch, and controller behavior, but not every integration detail.

Main entry points: [`go2w_nav_ws/src/jie_3d_nav/jie_octomap/web/main.js`](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/web/main.js) (Web interface), [`go2w_nav_ws/src/jie_3d_nav/octo_planner/src/jie_path_node.cpp`](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/octo_planner/src/jie_path_node.cpp) (3D path planner), [`go2w_nav_ws/src/FAST_LIO_ROS2/src/laserMapping.cpp`](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/FAST_LIO_ROS2/src/laserMapping.cpp) (FAST-LIO mapping), [`go2w_nav_ws/src/jie_3d_nav/octo_planner/src/d1_controller.cpp`](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/octo_planner/src/d1_controller.cpp) (Path controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sensing["Sensing and odometry"]
  node_livox_driver["Livox ROS driver<br/>[driver_node.cpp]"]
  node_fastlio["FAST-LIO mapping<br/>[laserMapping.cpp]"]
end

subgraph group_localization["Global localization"]
  node_localizer["FAST-LIO localization<br/>[laserMapping.cpp]"]
  node_localization_helpers["Localization tools"]
  node_tf_bridge["Localization TF bridge"]
end

subgraph group_maps["3D map management"]
  node_map_conversion["Point-cloud map import"]
  node_octomap["OctoMap generation"]
  node_map_packages["Map package manager"]
  node_map_viewer["Map viewer<br/>[map_viewer_gui.py]"]
end

subgraph group_navigation["Web navigation"]
  node_web_ui["Web interface<br/>[main.js]"]
  node_planner["3D path planner<br/>[jie_path_node.cpp]"]
  node_controller["Path controller<br/>[d1_controller.cpp]"]
end

subgraph group_robot["Robot control"]
  node_cmd_bridge["Velocity command bridge"]
end

node_operator(("Operator"))
node_mid360(("Livox MID360"))
node_unitree_sdk["Unitree SDK2"]
node_go2w(("Go2-W"))

node_mid360 -->|"sends sensor data"| node_livox_driver
node_livox_driver -->|"publishes cloud and IMU"| node_fastlio
node_fastlio -->|"provides live sensor data"| node_localizer
node_fastlio -->|"saves point-cloud maps"| node_map_conversion
node_map_conversion -->|"converts point clouds"| node_octomap
node_octomap -->|"supplies occupancy map"| node_planner
node_map_packages -->|"loads map snapshots"| node_planner
node_map_viewer -->|"presents map"| node_operator
node_localizer -->|"provides localization pose"| node_tf_bridge
node_tf_bridge -->|"publishes map transform"| node_web_ui
node_operator -->|"sets navigation goal"| node_web_ui
node_web_ui -->|"sends start and goal"| node_planner
node_planner -->|"publishes planned path"| node_controller
node_web_ui -->|"sends start command"| node_controller
node_controller -->|"publishes cmd_vel"| node_cmd_bridge
node_cmd_bridge -->|"forwards velocity commands"| node_unitree_sdk
node_unitree_sdk -->|"controls locomotion"| node_go2w

click node_livox_driver "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/livox_ros_driver2/src/driver_node.cpp"
click node_fastlio "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/FAST_LIO_ROS2/src/laserMapping.cpp"
click node_localizer "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/FAST_LIO_LOCALIZATION2/src/laserMapping.cpp"
click node_localization_helpers "https://github.com/real-lsy/that-nav/tree/main/go2w_nav_ws/src/FAST_LIO_LOCALIZATION2/fast_lio_localization"
click node_tf_bridge "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/scripts/localization_to_base_link_tf.py"
click node_map_conversion "https://github.com/real-lsy/that-nav/tree/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap"
click node_octomap "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/src/pcd_to_octomap_node.cpp"
click node_map_packages "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/jie_octomap/map_package_manager.py"
click node_map_viewer "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/jie_octomap/map_viewer_gui.py"
click node_web_ui "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/web/main.js"
click node_planner "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/octo_planner/src/jie_path_node.cpp"
click node_controller "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/octo_planner/src/d1_controller.cpp"
click node_cmd_bridge "https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/go2w_cmd_bridge/src/go2w_cmd_bridge.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_livox_driver,node_fastlio toneBlue
class node_localizer,node_localization_helpers,node_tf_bridge toneAmber
class node_map_conversion,node_octomap,node_map_packages,node_map_viewer toneMint
class node_web_ui,node_planner,node_controller toneRose
class node_cmd_bridge,node_operator,node_mid360,node_unitree_sdk,node_go2w toneIndigo
```

## Components

### Sensing and odometry

- [Livox ROS driver](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/livox_ros_driver2/src/driver_node.cpp): `go2w_nav_ws/src/livox_ros_driver2/src/driver_node.cpp`
- [FAST-LIO mapping](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/FAST_LIO_ROS2/src/laserMapping.cpp): `go2w_nav_ws/src/FAST_LIO_ROS2/src/laserMapping.cpp`

### Global localization

- [FAST-LIO localization](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/FAST_LIO_LOCALIZATION2/src/laserMapping.cpp): `go2w_nav_ws/src/FAST_LIO_LOCALIZATION2/src/laserMapping.cpp`
- [Localization tools](https://github.com/real-lsy/that-nav/tree/main/go2w_nav_ws/src/FAST_LIO_LOCALIZATION2/fast_lio_localization): `go2w_nav_ws/src/FAST_LIO_LOCALIZATION2/fast_lio_localization`
- [Localization TF bridge](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/scripts/localization_to_base_link_tf.py): `go2w_nav_ws/scripts/localization_to_base_link_tf.py`

### 3D map management

- [Point-cloud map import](https://github.com/real-lsy/that-nav/tree/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap): `go2w_nav_ws/src/jie_3d_nav/jie_octomap`
- [OctoMap generation](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/src/pcd_to_octomap_node.cpp): `go2w_nav_ws/src/jie_3d_nav/jie_octomap/src/pcd_to_octomap_node.cpp`
- [Map package manager](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/jie_octomap/map_package_manager.py): `go2w_nav_ws/src/jie_3d_nav/jie_octomap/jie_octomap/map_package_manager.py`
- [Map viewer](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/jie_octomap/map_viewer_gui.py): `go2w_nav_ws/src/jie_3d_nav/jie_octomap/jie_octomap/map_viewer_gui.py`

### Web navigation

- [Web interface](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/jie_octomap/web/main.js): `go2w_nav_ws/src/jie_3d_nav/jie_octomap/web/main.js`
- [3D path planner](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/octo_planner/src/jie_path_node.cpp): `go2w_nav_ws/src/jie_3d_nav/octo_planner/src/jie_path_node.cpp`
- [Path controller](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/jie_3d_nav/octo_planner/src/d1_controller.cpp): `go2w_nav_ws/src/jie_3d_nav/octo_planner/src/d1_controller.cpp`

### Robot control

- [Velocity command bridge](https://github.com/real-lsy/that-nav/blob/main/go2w_nav_ws/src/go2w_cmd_bridge/src/go2w_cmd_bridge.cpp): `go2w_nav_ws/src/go2w_cmd_bridge/src/go2w_cmd_bridge.cpp`

### Other components

- **Operator**
- **Livox MID360**
- **Unitree SDK2**
- **Go2-W**

## Connections

- Livox MID360 → Livox ROS driver: sends sensor data
- Livox ROS driver → FAST-LIO mapping: publishes cloud and IMU
- FAST-LIO mapping → FAST-LIO localization: provides live sensor data
- FAST-LIO mapping → Point-cloud map import: saves point-cloud maps
- Point-cloud map import → OctoMap generation: converts point clouds
- OctoMap generation → 3D path planner: supplies occupancy map
- Map package manager → 3D path planner: loads map snapshots
- Map viewer → Operator: presents map
- FAST-LIO localization → Localization TF bridge: provides localization pose
- Localization TF bridge → Web interface: publishes map transform
- Operator → Web interface: sets navigation goal
- Web interface → 3D path planner: sends start and goal
- 3D path planner → Path controller: publishes planned path
- Web interface → Path controller: sends start command
- Path controller → Velocity command bridge: publishes cmd_vel
- Velocity command bridge → Unitree SDK2: forwards velocity commands
- Unitree SDK2 → Go2-W: controls locomotion
