Skip to content

Repository files navigation

BraitenBot GUI

A Tauri desktop application for designing Braitenberg-style robot wiring diagrams and uploading them to Arduino-compatible hardware.


What is a Braitenberg Vehicle?

Braitenberg Vehicles are simple thought-experiment robots whose emergent behaviour arises from wiring sensors to motors. This GUI focuses on composing those circuits visually.

Features

Feature Details
Diagram-first editor Drag-and-drop vehicle circuit diagram
Extensible sensors Analog, digital, and I2C sensor nodes
Connections by dragging Drag links from node outputs to valid node inputs
Intermediate compute nodes Threshold, delay, summation, and multiply nodes
Arduino code generation Emit a .ino sketch from the diagram
Desktop upload Upload to the robot via bundled arduino-cli

Getting Started

Prerequisites

Desktop (primary)

npm install
npm run tauri:dev     # run the desktop app in development
npm run tauri:build   # produce a distributable desktop bundle
npm run typecheck     # type-check without emitting
npm run lint          # ESLint
npm test              # unit tests (vitest)

npm run tauri:dev automatically runs the frontend dev server via Vite; you do not need to run npm run dev separately.

Project Structure

src/
├── main.tsx                     # React entry point
├── App.tsx                      # Root layout
├── App.css                      # Global styles
├── vite-env.d.ts                # Vite client type reference
├── types/
│   └── diagram.ts               # Core diagram types (nodes, connections, transfer curves)
├── components/
│   ├── BraitenbergDiagram.tsx   # Drag-and-drop node and connection editor
│   ├── SetupModal.tsx           # First-run Arduino setup dialog
│   └── TransferCurveEditor.tsx  # Per-connection transfer curve editor
├── hooks/
│   ├── useArduino.ts            # Arduino detect/compile/upload via Tauri
│   ├── useDiagramPersistence.ts # Local-storage persistence for the diagram
│   └── useTraceSimulation.ts    # Signal-flow simulation/tracing
├── codegen/                     # Diagram → .ino sketch emitter + validation
├── lib/
│   ├── diagramFile.ts           # Diagram import/export helpers
│   └── tauri.ts                 # Tauri environment detection + invoke helpers
src-tauri/                       # Rust Tauri shell (bundles arduino-cli)

License

MIT — see LICENSE.

About

A web-based GUI for programming a Braitenbot

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages