# ieee01/tsyp_ras_ph1 architecture

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

- Interactive diagram: https://gitdiagram.com/ieee01/tsyp_ras_ph1
- Repository: https://github.com/ieee01/tsyp_ras_ph1

## Overview

LivingMap is a simulated spatial-memory and mission-continuity system for emergency robots. A Writer explores and records event memories in persistent beacons; a wall-aware mesh relays them through a gateway to the command post, which briefs Executors with inherited memories and map data. Executors prioritize targets, navigate around hazards, and write resolved results back to the beacons. The graph also preserves the live dashboard and the internal planning, protocol, and link-model layers. Relationships among unsampled subsystems follow README statements; source-level evidence is cited where excerpts or the index show it.

Main entry points: [`src/living_map_beacons/living_map_beacons/node.py`](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/node.py) (Beacon manager), [`src/living_map_executor/living_map_executor/node.py`](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/node.py) (Executor mission), [`src/living_map_gateway/living_map_gateway/node.py`](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/node.py) (Gateway), [`src/living_map_link_sim/living_map_link_sim/node.py`](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_link_sim/living_map_link_sim/node.py) (Long-distance link)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_writer["Writer and sensing"]
  node_writer_robot["Writer autonomy<br/>[node.py]"]
  node_frontier["Frontier exploration<br/>[frontier.py]"]
  node_event_sensing["Event sensing<br/>[node.py]"]
end

subgraph group_memory["Beacon memory"]
  node_beacon_manager["Beacon manager<br/>[node.py]"]
  node_placement["Beacon placement<br/>[placement.py]"]
  node_beacon_protocol["Beacon protocol<br/>[protocol.py]"]
  node_beacon_store[("Persistent beacon store<br/>[store.py]")]
  node_beacon_aging["Memory aging<br/>[aging.py]"]
end

subgraph group_network["Mine communications"]
  node_radio_mesh["Radio mesh<br/>[mesh.py]"]
  node_rf_model["RF link model<br/>[model.py]"]
  node_radio_node["Radio node<br/>[node.py]"]
  node_gateway["Gateway<br/>[node.py]"]
  node_gateway_state[("Gateway state<br/>[state.py]")]
  node_coordinates["GPS translation<br/>[coordinate.py]"]
  node_long_link["Long-distance link<br/>[node.py]"]
  node_link_model["Link behavior model<br/>[model.py]"]
end

subgraph group_command["Command and briefing"]
  node_command_post["Command post<br/>[scenario.py]"]
  node_dashboard["Live dashboard<br/>[app.js]"]
end

subgraph group_executor["Executor response"]
  node_executor["Executor mission<br/>[node.py]"]
  node_memory_graph["Beacon graph<br/>[graph.py]"]
  node_mission_policy["Target policy<br/>[policy.py]"]
  node_route_planner["Route planning<br/>[route.py]"]
end

node_operator(("Demo operator"))

node_operator -->|"controls demo"| node_command_post
node_writer_robot -.->|"explores by"| node_frontier
node_event_sensing -->|"reports events"| node_beacon_manager
node_beacon_manager -->|"uses placement"| node_placement
node_beacon_manager -->|"encodes frames"| node_beacon_protocol
node_beacon_manager -->|"persists records"| node_beacon_store
node_beacon_manager -->|"ages memories"| node_beacon_aging
node_beacon_manager -->|"transmits frames"| node_radio_node
node_radio_node -->|"relays frames"| node_radio_mesh
node_radio_mesh -->|"measures links"| node_rf_model
node_radio_node -->|"delivers memories"| node_gateway
node_gateway -->|"updates state"| node_gateway_state
node_gateway -->|"translates positions"| node_coordinates
node_gateway -->|"forwards snapshots"| node_long_link
node_long_link -->|"simulates delivery"| node_link_model
node_long_link -->|"delivers uplink"| node_command_post
node_command_post -->|"briefs targets"| node_executor
node_command_post -.->|"shows live state"| node_dashboard
node_executor -->|"builds graph"| node_memory_graph
node_executor -->|"prioritizes targets"| node_mission_policy
node_executor -->|"plans route"| node_route_planner
node_executor -->|"writes resolutions"| node_beacon_manager
node_command_post -->|"sends missions"| node_long_link
node_long_link -->|"delivers downlink"| node_gateway

click node_writer_robot "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_writer/living_map_writer/node.py"
click node_frontier "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_writer/living_map_writer/frontier.py"
click node_event_sensing "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_events/living_map_events/node.py"
click node_beacon_manager "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/node.py"
click node_placement "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/placement.py"
click node_beacon_protocol "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/protocol.py"
click node_beacon_store "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/store.py"
click node_beacon_aging "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/aging.py"
click node_radio_mesh "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_radio/living_map_radio/mesh.py"
click node_rf_model "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_radio/living_map_radio/model.py"
click node_radio_node "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_radio/living_map_radio/node.py"
click node_gateway "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/node.py"
click node_gateway_state "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/state.py"
click node_coordinates "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/coordinate.py"
click node_long_link "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_link_sim/living_map_link_sim/node.py"
click node_link_model "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_link_sim/living_map_link_sim/model.py"
click node_command_post "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_command_post/living_map_command_post/scenario.py"
click node_dashboard "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_dashboard/web/app.js"
click node_executor "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/node.py"
click node_memory_graph "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/graph.py"
click node_mission_policy "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/policy.py"
click node_route_planner "https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/route.py"

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_writer_robot,node_frontier,node_event_sensing toneBlue
class node_beacon_manager,node_placement,node_beacon_protocol,node_beacon_store,node_beacon_aging toneAmber
class node_radio_mesh,node_rf_model,node_radio_node,node_gateway,node_gateway_state,node_coordinates,node_long_link,node_link_model toneMint
class node_command_post,node_dashboard toneRose
class node_executor,node_memory_graph,node_mission_policy,node_route_planner,node_operator toneIndigo
```

## Components

### Writer and sensing

- [Writer autonomy](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_writer/living_map_writer/node.py): `src/living_map_writer/living_map_writer/node.py`
- [Frontier exploration](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_writer/living_map_writer/frontier.py): `src/living_map_writer/living_map_writer/frontier.py`
- [Event sensing](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_events/living_map_events/node.py): `src/living_map_events/living_map_events/node.py`

### Beacon memory

- [Beacon manager](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/node.py): `src/living_map_beacons/living_map_beacons/node.py`
- [Beacon placement](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/placement.py): `src/living_map_beacons/living_map_beacons/placement.py`
- [Beacon protocol](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/protocol.py): `src/living_map_beacons/living_map_beacons/protocol.py`
- [Persistent beacon store](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/store.py): `src/living_map_beacons/living_map_beacons/store.py`
- [Memory aging](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_beacons/living_map_beacons/aging.py): `src/living_map_beacons/living_map_beacons/aging.py`

### Mine communications

- [Radio mesh](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_radio/living_map_radio/mesh.py): `src/living_map_radio/living_map_radio/mesh.py`
- [RF link model](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_radio/living_map_radio/model.py): `src/living_map_radio/living_map_radio/model.py`
- [Radio node](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_radio/living_map_radio/node.py): `src/living_map_radio/living_map_radio/node.py`
- [Gateway](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/node.py): `src/living_map_gateway/living_map_gateway/node.py`
- [Gateway state](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/state.py): `src/living_map_gateway/living_map_gateway/state.py`
- [GPS translation](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_gateway/living_map_gateway/coordinate.py): `src/living_map_gateway/living_map_gateway/coordinate.py`
- [Long-distance link](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_link_sim/living_map_link_sim/node.py): `src/living_map_link_sim/living_map_link_sim/node.py`
- [Link behavior model](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_link_sim/living_map_link_sim/model.py): `src/living_map_link_sim/living_map_link_sim/model.py`

### Command and briefing

- [Command post](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_command_post/living_map_command_post/scenario.py): `src/living_map_command_post/living_map_command_post/scenario.py`
- [Live dashboard](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_dashboard/web/app.js): `src/living_map_dashboard/web/app.js`

### Executor response

- [Executor mission](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/node.py): `src/living_map_executor/living_map_executor/node.py`
- [Beacon graph](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/graph.py): `src/living_map_executor/living_map_executor/graph.py`
- [Target policy](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/policy.py): `src/living_map_executor/living_map_executor/policy.py`
- [Route planning](https://github.com/ieee01/tsyp_ras_ph1/blob/main/src/living_map_executor/living_map_executor/route.py): `src/living_map_executor/living_map_executor/route.py`

### Other components

- **Demo operator**

## Connections

- Demo operator → Command post: controls demo
- Writer autonomy → Frontier exploration: explores by
- Event sensing → Beacon manager: reports events (evidence: `src/living_map_beacons/living_map_beacons/node.py`)
- Beacon manager → Beacon placement: uses placement (evidence: `src/living_map_beacons/living_map_beacons/node.py`)
- Beacon manager → Beacon protocol: encodes frames (evidence: `src/living_map_beacons/living_map_beacons/node.py`)
- Beacon manager → Persistent beacon store: persists records (evidence: `src/living_map_beacons/living_map_beacons/node.py`)
- Beacon manager → Memory aging: ages memories (evidence: `src/living_map_beacons/living_map_beacons/node.py`)
- Beacon manager → Radio node: transmits frames (evidence: `src/living_map_beacons/living_map_beacons/node.py`)
- Radio node → Radio mesh: relays frames (evidence: `src/living_map_radio/living_map_radio/node.py`)
- Radio mesh → RF link model: measures links (evidence: `src/living_map_radio/living_map_radio/mesh.py`)
- Radio node → Gateway: delivers memories
- Gateway → Gateway state: updates state (evidence: `src/living_map_gateway/living_map_gateway/node.py`)
- Gateway → GPS translation: translates positions (evidence: `src/living_map_gateway/living_map_gateway/node.py`)
- Gateway → Long-distance link: forwards snapshots
- Long-distance link → Link behavior model: simulates delivery (evidence: `src/living_map_link_sim/living_map_link_sim/node.py`)
- Long-distance link → Command post: delivers uplink (evidence: `src/living_map_link_sim/living_map_link_sim/node.py`)
- Command post → Executor mission: briefs targets
- Command post → Live dashboard: shows live state
- Executor mission → Beacon graph: builds graph (evidence: `src/living_map_executor/living_map_executor/node.py`)
- Executor mission → Target policy: prioritizes targets (evidence: `src/living_map_executor/living_map_executor/node.py`)
- Executor mission → Route planning: plans route (evidence: `src/living_map_executor/living_map_executor/node.py`)
- Executor mission → Beacon manager: writes resolutions
- Command post → Long-distance link: sends missions
- Long-distance link → Gateway: delivers downlink (evidence: `src/living_map_link_sim/living_map_link_sim/node.py`)
