Top-Level Map

.
|-- .github/
|-- apps/
|   `-- ops-panel/
|       |-- backend/
|       |-- frontend/
|       `-- shared/
|-- configs/
|-- deploy/
|-- docs/
|-- firmware/
|   |-- arm-drive/
|   |-- base-drive/
|   |-- core-board/
|   `-- expansion-board/
|-- robot/
|   `-- linux/
|       |-- maps/
|       |-- missions/
|       |-- ros2_ws/
|       |   |-- config/
|       |   |-- launch/
|       |   `-- src/
|       `-- services/
|-- scripts/
|-- shared/
|   |-- protocols/
|   `-- schemas/
|-- tests/
|   |-- hardware/
|   |-- integration/
|   `-- unit/
`-- tools/

Directory Roles

Path Role Reading
apps/ops-panel/ Operator-facing application split into backend, frontend, and shared code. Signals intent for a dedicated operations interface.
firmware/ Board- and drive-level embedded surface for base, arm, and control electronics. Shows a planned separation between motion subsystems and controller boards.
robot/linux/ Main on-robot runtime layout, including maps, missions, services, and a ros2_ws. Defines the likely deployment footprint on the Linux robot host.
shared/ Protocols and schemas meant to bridge subsystem boundaries. Hints at contract-first coordination between components.
tests/ Unit, integration, and hardware-oriented validation partitions. Separates simulation or logic checks from physical-system validation.

Why The Tree Matters Early

A robotics repo usually drifts if responsibilities stay implied. This tree makes the intended ownership visible before the implementation surface becomes large: operator UI is not mixed with robot runtime, firmware does not hide inside Linux packages, and shared data contracts have their own home.

Reading Notes

Apps

Operator-facing tooling is separated from the on-robot runtime and from firmware.

Robot

The Linux runtime tree keeps missions, services, maps, and the ros2_ws layout in one place.

Shared

Protocols and schemas have their own home so subsystem contracts do not get buried inside a single package.