The Flutter desktop environment for the KIPR Wombat — dashboard, programs, sensors, and more.
📖 Full documentation at raccoon-docs.pages.dev
StpVelox is the graphical environment that runs directly on the KIPR Wombat controller. It replaces the default Wombat UI with a fast, touch-friendly Flutter interface purpose-built for Botball competition — real-time sensor graphs, a program runner with live terminal output, WiFi management, and a camera feed, all on an 800×480 display.
| Screen | What it does |
|---|---|
| Dashboard | Live sensor overview grid — IMU, analog/digital ports, battery |
| Programs | Browse, launch, and monitor robot programs with a live terminal |
| Sensors | Real-time charts for gyro, accelerometer, magnetometer, and analog inputs |
| Camera | Live camera feed from the robot's vision system |
| WiFi | Scan, connect, and manage networks via Linux NetworkManager |
| Settings | Device config, touch calibration for the embedded display |
StpVelox uses FVM for Flutter version pinning and flutterpi_tool for ARM64 cross-compilation.
# Install FVM
dart pub global activate fvm
fvm install # picks up version from .fvmrc
# Activate flutterpi_tool
dart pub global activate flutterpi_tool# Build release + deploy to Pi in one step
DEPLOY_HOST=<your-pi-ip> bash deploy.shbash debug.shbash build.shThe build script runs build_runner for code generation (Riverpod, Freezed, JSON serialization), then cross-compiles for arm64 / pi3.
StpVelox follows Clean Architecture with three layers and Riverpod for state management throughout.
lib/
├── core/ # DI (GetIt), routing (go_router), theme, shared utilities
├── features/ # One folder per feature (dashboard, program, sensors, wifi, ...)
│ └── <feature>/
│ ├── domain/ # Entities, repository interfaces, use cases
│ ├── data/ # Repository implementations, data sources
│ └── presentation/ # Riverpod providers, screens, widgets
├── shared/ # Shared widgets and helpers used across features
└── main.dart
Hardware data flows in via LCM through raccoon-transport — sensor values, motor state, and IMU readings are published on the LCM bus and consumed by the UI in real time.
Program execution uses a pseudoterminal so program stdout/stderr stream live into the terminal widget (xterm).
Rendering uses flutter-pi to render directly to the Linux framebuffer — no desktop environment, no compositor overhead. This gives high frame rates at almost no system cost on the Pi.
- FVM — Flutter version manager
- Dart SDK ^3.5.4
flutterpi_toolfor ARM64 builds- KIPR Wombat with Raspberry Pi (ARM64, 800×480 display)
| Repository | What it is |
|---|---|
| raccoon-lib | Core robotics library |
| raccoon-cli | Dev toolchain — scaffolding, raccoon run |
| raccoon-transport | LCM messaging layer |
| documentation | Full platform docs |
Copyright (C) 2026 Tobias Madlberger
Licensed under the GNU General Public License v3.0 — see COPYING for details.