Overview

What is the base station?

The Base Station is the ground control application used to monitor and control the rover during operation. It runs on an operator's laptop and provides a unified interface for live video feeds, navigation, task management, rover arm control, and sensor readouts.

It is built with Tauri v2 (Rust backend) and SvelteKit (TypeScript frontend), bundled into a native desktop application. Communication with the rover happens over UDP using Protocol Buffers (protobuf) for message serialisation.

Tech Stack

Layer

Technology

Desktop framework

Tauri v2

Frontend

SvelteKit + TypeScript

Backend

Rust

Build tool

Bun + Vite

Video streaming

GStreamer (MJPEG)

Rover communication

UDP on port 9000

Serialisation

Protocol Buffers

3D model rendering

(see Model Viewer)

System Architecture

At a high level, the app has three layers:

BasestationArchitacture.png

The frontend communicates with the Rust backend exclusively through Tauri commands (called via invoke()). The backend owns the UDP socket and all rover communication — the frontend never talks to the rover directly.

Project structure

ERC-SOFTWARE-BASESTATION/
├── src/                    # SvelteKit frontend
│   ├── lib
│   │   ├── components/     # Reusable UI components
│   │   ├── css/            # css code
│   │   ├── proto/          # Auto generated types from protobuffers
│   │   └── stores/         # Svelte stores for reusable data across components
│   ├── routes/             # Page routes
│   └── state.svelte.js     # Global reactive state
├── src-tauri/              # Tauri + Rust backend
│   ├── src/
│   │   ├── commands/       # Tauri command handlers
│   │   └── network/        # UDP service + listener
│   ├── proto/              # Protobuf definitions
│   ├── models/             # Bundled 3D model files
│   ├── build.rs            # Handling of protobuffers during build
│   ├── Cargo.toml          # Dependencies
│   └── tauri.conf.json     # Settings, configuration and permissions
├── fake_camera_gstreamer/  # GStreamer-based test video source
└── static/                 # Static frontend assets

Revision #8
Created 2026-04-14 14:42:48 UTC by Candela Cimadevilla Gonzalez
Updated 2026-05-05 09:42:19 UTC by Candela Cimadevilla Gonzalez