How it works

What this is and how it is built

ReconnectingDelay --

What this is

RooverCommand is a control screen for a robot rover. The rover is simulated, but the software around it is built the way you would build it for a real one. It checks every message, watches for trouble, and stops the rover when something goes wrong.

How the parts connect

Rover

Python

Drives the route, steers around obstacles, and reports how it is doing.

Status, 20 a secondCommands

Command service

C++

Checks every report, runs the safety rules, and decides which commands go through.

Live view, 10 a secondYour commands

Dashboard

Next.js

This screen. Shows everything live and sends your commands.

The dashboard never talks to the rover directly. Every command goes through the command service, so one place decides what is safe.

How it keeps the rover safe

  • Every report is checked before it is trusted. Damaged messages, impossible readings and late arrivals are thrown away and counted.
  • Silence is treated as a problem. If no good report arrives for 1.5 seconds, the rover is told to stop.
  • Problems move the rover through four levels: all good, warning, safety stop, and checking. Things get worse straight away, but get better only after a pause, so a reading that sits right on a limit cannot make the screen flicker.
  • After a safety stop, driving stays locked until the problem has been gone for 5 seconds. The rover never restarts by itself, so a person has to press Start.
  • The rover steers around obstacles with 1.5 m to spare, and in every mode it brakes by itself before it could hit one.

Built with

The command service is written in C++, the rover in Python, and this dashboard in Next.js and TypeScript, with three.js for the 3D view and MapLibre for the map. Each part runs in its own Docker container. 98 automated tests cover the message format, the safety rules, how the rover drives, and all three parts running together.

Built by Aniebiet (@anni_udoh).

Everything here is simulated. The safety rules are a demonstration and are not certified for a real vehicle.