EnviroBot Documentation
Competition: EnviroBot Environmental Robotics Challenge | Strategy: RC-first, autonomy as stretch goal
System Overview
EnviroBot is a two-component system:
1. Robot — ESP32-based differential-drive rover. Driven by remote control (phone joystick over its own WiFi AP), with an autonomous wander mode as a stretch goal. Collects 12 environmental measurements (4 water turbidity + 8 soil moisture) and outputs structured JSON.
2. Web Platform — Next.js application on Cloudflare Pages. Documents the project, visualises run data, and serves as the competition showcase.
Competition Quick Reference
| Parameter | Value |
|---|---|
| Testing Day | Thursday 30 July (W9) — inspection + measurement run + robot assessment |
| Closing Night | Friday 31 July, 5–9pm — case competition presentation |
| Run time limit | 8 minutes maximum (−5 pts if exceeded) |
| Required measurements | 12 total: 4 water turbidity + 8 soil moisture |
| Arena | Octagonal, ~1.5m diameter, 4 terrain sectors |
| Max score | 100 points across 6 judging categories |
Scoring Summary
| # | Category | Points |
|---|---|---|
| 1 | Technical Measurement Performance | 30 |
| 2 | Data Output & Visualisation | 10 |
| 3 | Build Quality & Workmanship | 5 |
| 4 | Innovation & Engineering Design | 10 |
| 5 | Robot Aesthetics | 5 |
| 6 | Closing Night Case Competition | 40 |
| Total | 100 |
Note: The official rulebook contains a scoring inconsistency in section headers. The table above totals correctly to 100 and is treated as authoritative (confirmation requested from organisers). Cat 6 (Case Competition, 40 pts) is the single highest-weight category — presentation prep is not optional.
Deductions
| Infraction | Penalty |
|---|---|
| Prohibited component installed | −10 pts or disqualification |
| Run exceeds 8-minute limit | −5 pts |
| Pre-loaded or hardcoded sensor data | Cat 1 and Cat 2 zeroed |
| Arena surface damage | −5 pts per incident |
Why RC-First
The rulebook explicitly permits remote-controlled robots. Full autonomy affects only the top band of Category 1 ("navigates independently") plus some Innovation credit. The robot has no wheel encoders, so coordinate-accurate autonomous navigation is not achievable — RC driving with operator sector-tagging is the reliable path to accurate, well-labelled data. Autonomous wander mode exists as a demonstrable stretch goal.
Arena Layout
Outer octagon wall (~1.5m diameter, dark timber)
╱──────────────────────────────────────╲
╱ S1: Sandpaper (beige) │ S2: Wet Soil ╲
╱ ◇ water ● soil │ ● soil ◇ water ╲
│ ● soil ─┼─ ● soil │
╲ S3: Grass (green) ─ ─ S4: Sand ╱
╲ ◇ water ● soil │ ● soil ◇ water ╱
╲─────────────────────────────────────────╱
◇ = water slot (diamond-shaped, RECESSED — a wheel trap, never drive over)
● = soil disc (reddish-brown circle)
No walls between sectors — boundary = terrain surface change
Outer wall is the only physical barrier — detected by VL53L0X
| Sector | Position | Terrain |
|---|---|---|
| S1 | Top-left | Sandpaper |
| S2 | Top-right | Wet soil |
| S3 | Bottom-left | Grass |
| S4 | Bottom-right | Sand |
Terrains are listed in the rulebook as examples only — confirm the actual surfaces on Testing Day and update
TERRAINS[]indata_logger.cpp.
Documentation Map
| Section | Contents |
|---|---|
| Hardware | Real BOM, pin assignments, power rails, dual I2C buses |
| Navigation | RC procedure, autonomous FSM, position estimation limits |
| Sensors | Turbidity (voltage divider), soil moisture, colour, distance |
| Calibration | Pre-competition calibration for every constant in config.h |
| JSON Schema | Frozen run data format — visualiser depends on exact fields |
| Scoring | Full rubric, deductions, per-category strategy |
| RC & Communications | WiFi AP, HTTP protocol, RC page |
| Competition Guide | Day 1 pitch, Day 2 prep plan, argument template |
| Inspection Checklist | Pre-run and pre-presentation checklists |
| Rules | Key competition rules from the official rulebook |