This is the software used at competition for Columbia University Robotics Club's PacBot.
Clone the repo with git clone --recurse-submodules https://github.com/FlyN-Nick/Pacbot-2026.git.
| Directory | Purpose | Main technologies |
|---|---|---|
server/ |
Competition game server, game engine, and WebSocket/TCP communication | Go |
bot_client/ |
Pacbot client and high-level decision algorithms | Python |
web_client/ |
Browser visualizer and console for the competition game | Svelte, Vite |
low_level/ |
Microcontroller firmware and robot communication/driving documentation | Arduino/C++ |
dashboard/ |
Physical robot telemetry and control dashboard, with its own server and web app | Go, React, Vite |
The following setup runs the game server, bot simulation without a physical robot, and browser visualizer. Open a separate terminal for each process.
- Go 1.22 or newer
- Python 3.10 or newer and uv
- Node.js 18 or newer and
npm
cd server
go run .cd bot_client
uv sync
uv run python pacbotClient.py --force_no_botTo use a DQN, supply your own compatible checkpoint file:
cd bot_client
uv sync --extra dqn
uv run --extra dqn python pacbotClient.py --strategy dqn --checkpoint /absolute/path/to/checkpoint.pt --force_no_botcd web_client
npm install
npm run devOpen the local URL printed by Vite.
The dashboard's backend listens for robot UDP packets on port 9000 and serves the web app plus a WebSocket on port 8765 by default.
Build the frontend:
cd dashboard/webapp
npm install
npm run buildThen run the dashboard backend, which serves the built frontend from ../webapp/dist by default:
cd dashboard/server
go run .Open http://localhost:8765. For frontend development with Vite’s hot reload, run npm run dev in dashboard/webapp; its /ws proxy expects the backend at localhost:8765.
The dashboard can also use a Unix domain socket for local direction-command IPC. See the backend flags (go run . -h) and dashboard/ for implementation details. Hardware Wi-Fi and UDP settings are configured in the firmware; see the robot protocol.
- Game server: server README,
server/game/, andconfig.json. - Sample bot: bot client README. The client supports A* and DQN strategies; DQN runs require a compatible checkpoint. Use
uv run python pacbotClient.py --helpto see options. - Game visualizer: web client README.
npm run hostexposes Vite on the network;npm run prodcreates a static build. - Robot firmware:
low_level/RPiPacBot/, including the UDP protocol and driving behavior. - Robot dashboard:
dashboard/server/anddashboard/webapp/.