# seb-sti1/husky_mesh_nav architecture

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

- Interactive diagram: https://gitdiagram.com/seb-sti1/husky_mesh_nav
- Repository: https://github.com/seb-sti1/husky_mesh_nav

## Overview

Husky Mesh navigation is a ROS package for running mesh-based navigation with a Husky robot, chiefly in simulation, with a documented real-world setup as well. The main workflow is to start the simulation and Move Base Flex server, publish a navigation goal, and let the external navigation stack plan and execute it. Repository evidence identifies launch, map, configuration, and experiment assets, but does not show their internal ROS wiring; links among those assets are therefore omitted. The optional fake-odometry script’s transform behavior is visible in source.

Main entry points: [`launch/start_experiment.launch`](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/start_experiment.launch) (Experiment launch), [`script/fake_pos.py`](https://github.com/seb-sti1/husky_mesh_nav/blob/master/script/fake_pos.py) (Fake odometry TF), [`launch/sim.launch`](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/sim.launch) (Simulation launch), [`launch/base_u2is.launch`](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/base_u2is.launch) (Real base launch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime setup"]
  node_sim_launch["Simulation launch<br/>[sim.launch]"]
  node_experiment_launch["Experiment launch"]
  node_real_base["Real base launch<br/>[base_u2is.launch]"]
  node_mbf_launch["MBF launch"]
  node_real_launch_exp["Hall experiment launch"]
end

subgraph group_navigation["Navigation inputs"]
  node_goal_endpoint["Move Base Flex goal"]
end

subgraph group_assets["World and map assets"]
  node_planner_config["Planner config"]
  node_map_config["Map config<br/>[map_config.yaml]"]
  node_nav_config["Navigation config<br/>[nav_config.yaml]"]
  node_garden_map[("Botanical Garden map")]
  node_hall_map[("Grand Hall map<br/>[grand_hall.h5]")]
  node_garden_world["Botanical Garden world"]
  node_garden_mesh["Garden mesh model"]
  node_garden_experiment["Garden experiment"]
  node_hall_experiment["Hall experiment<br/>[grand_hall.bagy]"]
end

subgraph group_localization["Localization option"]
  node_fake_pos["Fake odometry TF<br/>[fake_pos.py]"]
end

node_operator(("Operator / goal publisher"))
node_husky_sim["Husky simulation"]
node_mbf_server["Mesh navigation server"]
node_robot["Husky robot"]
node_gazebo_odom["Gazebo ground-truth odometry"]
node_tf["odom to base_link TF"]

node_operator -->|"publishes goal"| node_goal_endpoint
node_goal_endpoint -->|"submits navigation goal"| node_mbf_server
node_mbf_launch -->|"starts server"| node_mbf_server
node_sim_launch -->|"starts simulation"| node_husky_sim
node_experiment_launch -->|"starts simulation"| node_husky_sim
node_experiment_launch -->|"starts navigation"| node_mbf_server
node_mbf_server -->|"plans and executes"| node_robot
node_real_base -->|"starts real base"| node_robot
node_real_launch_exp -->|"real-world setup"| node_robot
node_gazebo_odom -.->|"provides odometry"| node_fake_pos
node_fake_pos -.->|"broadcasts transform"| node_tf

click node_sim_launch "https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/sim.launch"
click node_experiment_launch "https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/start_experiment.launch"
click node_real_base "https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/base_u2is.launch"
click node_mbf_launch "https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/move_base_flex.launch"
click node_planner_config "https://github.com/seb-sti1/husky_mesh_nav/blob/master/configs/default_planner.yaml"
click node_map_config "https://github.com/seb-sti1/husky_mesh_nav/blob/master/configs/map_config.yaml"
click node_nav_config "https://github.com/seb-sti1/husky_mesh_nav/blob/master/configs/nav_config.yaml"
click node_garden_map "https://github.com/seb-sti1/husky_mesh_nav/blob/master/maps/botanical_garden_osnabrueck/botanical_garden_osnabrueck.h5"
click node_hall_map "https://github.com/seb-sti1/husky_mesh_nav/blob/master/maps/grand_hall/grand_hall.h5"
click node_garden_world "https://github.com/seb-sti1/husky_mesh_nav/blob/master/worlds/botanical_garden.world"
click node_garden_mesh "https://github.com/seb-sti1/husky_mesh_nav/blob/master/models/botanical_garden_gazebo.dae"
click node_garden_experiment "https://github.com/seb-sti1/husky_mesh_nav/blob/master/experiments/botanical_garden_4_dijkstra.bagy"
click node_hall_experiment "https://github.com/seb-sti1/husky_mesh_nav/blob/master/experiments/grand_hall.bagy"
click node_fake_pos "https://github.com/seb-sti1/husky_mesh_nav/blob/master/script/fake_pos.py"
click node_real_launch_exp "https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/start_experiment_grand_hall.launch"

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_sim_launch,node_experiment_launch,node_real_base,node_mbf_launch,node_real_launch_exp toneBlue
class node_goal_endpoint toneAmber
class node_planner_config,node_map_config,node_nav_config,node_garden_map,node_hall_map,node_garden_world,node_garden_mesh,node_garden_experiment,node_hall_experiment,node_mbf_server toneMint
class node_fake_pos toneRose
class node_operator,node_husky_sim,node_robot,node_gazebo_odom,node_tf toneIndigo
```

## Components

### Runtime setup

- [Simulation launch](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/sim.launch): `launch/sim.launch`
- [Experiment launch](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/start_experiment.launch): `launch/start_experiment.launch`
- [Real base launch](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/base_u2is.launch): `launch/base_u2is.launch`
- [MBF launch](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/move_base_flex.launch): `launch/move_base_flex.launch`
- [Hall experiment launch](https://github.com/seb-sti1/husky_mesh_nav/blob/master/launch/start_experiment_grand_hall.launch): `launch/start_experiment_grand_hall.launch`

### Navigation inputs

- **Move Base Flex goal**

### World and map assets

- [Planner config](https://github.com/seb-sti1/husky_mesh_nav/blob/master/configs/default_planner.yaml): `configs/default_planner.yaml`
- [Map config](https://github.com/seb-sti1/husky_mesh_nav/blob/master/configs/map_config.yaml): `configs/map_config.yaml`
- [Navigation config](https://github.com/seb-sti1/husky_mesh_nav/blob/master/configs/nav_config.yaml): `configs/nav_config.yaml`
- [Botanical Garden map](https://github.com/seb-sti1/husky_mesh_nav/blob/master/maps/botanical_garden_osnabrueck/botanical_garden_osnabrueck.h5): `maps/botanical_garden_osnabrueck/botanical_garden_osnabrueck.h5`
- [Grand Hall map](https://github.com/seb-sti1/husky_mesh_nav/blob/master/maps/grand_hall/grand_hall.h5): `maps/grand_hall/grand_hall.h5`
- [Botanical Garden world](https://github.com/seb-sti1/husky_mesh_nav/blob/master/worlds/botanical_garden.world): `worlds/botanical_garden.world`
- [Garden mesh model](https://github.com/seb-sti1/husky_mesh_nav/blob/master/models/botanical_garden_gazebo.dae): `models/botanical_garden_gazebo.dae`
- [Garden experiment](https://github.com/seb-sti1/husky_mesh_nav/blob/master/experiments/botanical_garden_4_dijkstra.bagy): `experiments/botanical_garden_4_dijkstra.bagy`
- [Hall experiment](https://github.com/seb-sti1/husky_mesh_nav/blob/master/experiments/grand_hall.bagy): `experiments/grand_hall.bagy`

### Localization option

- [Fake odometry TF](https://github.com/seb-sti1/husky_mesh_nav/blob/master/script/fake_pos.py): `script/fake_pos.py`

### Other components

- **Operator / goal publisher**
- **Husky simulation**
- **Mesh navigation server**
- **Husky robot**
- **Gazebo ground-truth odometry**
- **odom to base_link TF**

## Connections

- Operator / goal publisher → Move Base Flex goal: publishes goal
- Move Base Flex goal → Mesh navigation server: submits navigation goal
- MBF launch → Mesh navigation server: starts server
- Simulation launch → Husky simulation: starts simulation
- Experiment launch → Husky simulation: starts simulation
- Experiment launch → Mesh navigation server: starts navigation
- Mesh navigation server → Husky robot: plans and executes
- Real base launch → Husky robot: starts real base
- Hall experiment launch → Husky robot: real-world setup
- Gazebo ground-truth odometry → Fake odometry TF: provides odometry
- Fake odometry TF → odom to base_link TF: broadcasts transform
