GPS-denied autonomy OS for unmanned platforms -- stereo VSLAM, edge targeting, 3D battlefield reconstruction, offline swarm coordination.
| Module | Owner | Dir |
|---|---|---|
| Navigation (stereo VSLAM) | Vikram | nav/ |
| Targeting (YOLO + tracking) | Matthieu | perception/ |
| Surveillance (3D Gaussian Splat) | TBD | recon/ |
| Swarm + Integration | Nikhil | swarm/ + frontend/ |
cd perception
cp .env.example .env # set VIDEO_SOURCE, WS_HOST, WS_PORT
pip install -r requirements.txt
python main.pyJetson Nano -- first-time setup:
python export_trt.py # exports yolo11n.engine (run once)
# then in .env: YOLO_MODEL=yolo11n.engine DEVICE=0
python main.pySee perception/README.md for full docs.
React + TypeScript app in frontend/, managed with Bun.
cd frontend
bun install
bun devOther commands:
bun run build # production build → frontend/dist
bun run preview # preview production build
bun run lintFrom the repo root, start the FastAPI training/sim server on port 8787:
uv run --project swarm uvicorn swarm.backend:app --host 127.0.0.1 --port 8787The process stays idle until the frontend calls POST /api/train/start or sim endpoints. Requires uv and deps in swarm/ (uv sync --project swarm if imports fail).
If port 8787 is already in use:
lsof -ti :8787 | xargs killRun the backend (above), then the frontend. Clicking Train Policy starts training only for the selected gym environment.
In a second terminal:
cd frontend
bun install
bun devEnter a gym environment, tune battlefield params, and click Train Policy. Metrics stream over WebSocket; on completion the service exports frontend/public/policies/<env_id>/policy.onnx and unlocks Mission Sim.
Optional one-terminal dev mode:
VITE_AUTO_TRAIN_SERVICE=1 bun devOptional env overrides:
VITE_TRAIN_API_URL— default uses the Vite/apiproxy tohttp://127.0.0.1:8787VITE_TRAIN_WS_URL— defaultws://127.0.0.1:8787/wsVITE_TRAIN_TIMESTEPS— default12000VITE_ALLOW_HEURISTIC_MISSION=1— skip policy gate in dev