Fully autonomous rescue maze navigation with victim detection, kit deployment, and sensor fusion. Competing in RoboCup Junior Rescue Maze 2026, representing Canada at the World Championship in Incheon, South Korea.
Theseus V2 uses a layered PLA chassis with a dual-core main controller, full sensor fusion, and a custom turntable rescue kit dropper.
The original Arduino Mega 2560 was limited to 8KB SRAM and a single 16MHz core. A 20x20 map alone consumed 73% of available memory, and blocking movement operations caused missed victim detections.
The GIGA R1 runs a dual-core STM32H747. The M7 core (480MHz) handles navigation, PID control, BFS pathfinding, maze mapping, and dropper decisions. The M4 core (240MHz) continuously reads OpenMV camera UART, validates detections, and queues results. A blocking turn on M7 no longer prevents M4 from catching a camera detection.
An array of VL53L0X time-of-flight sensors covers all four cardinal directions plus forward obstacle detection. Preferred over IR sensors as measurements are colour-independent.
All VL53L0X modules share the same default I2C address, so they are multiplexed through a TCA9548A which isolates each sensor on its own channel.
The BNO055 replaced the MPU6050, which required integrating raw gyro data and accumulated drift. The BNO055 performs onboard sensor fusion and directly reports orientation, used for straight-line heading, 90-degree turns, and turn recovery.
Two OpenMV H7 cameras run a FOMO object detection model via Edge Impulse. FOMO uses 30x less processing power than YOLOv5. 450 images (150 per letter) were augmented to over 1300 for training. 40 epochs, 96.2% accuracy. Cameras transmit only classification results over UART.
A rotating turntable with two chutes deploys kits on either side without a 180-degree turn. The 28BYJ-48 stepper is press-fit beneath the turntable. 19x19mm openings for 10mm kits, 1mm clearance, triangular guides, and steep chutes ensure kits land within the 150mm scoring radius.
High-current motor rail powers drive motors via the Carobot V3 shield. Stepper supplied via a 5V buck converter. OpenMV cameras on a dedicated regulated supply. The GIGA operates at 3.3V logic so all high-current devices use dedicated driver electronics rather than GPIO pins directly.
Theseus runs a distributed software architecture across two independent processor cores, combining autonomous navigation, sensor fusion, and neural-network vision processing.
The key advantage: a blocking turn or BFS calculation on the M7 no longer prevents the M4 from receiving a victim detection. On the original Arduino Mega (single core, 16MHz, 8KB SRAM), a 20x20 map consumed 73% of available memory and blocking operations caused missed detections.
The robot navigates tile by tile using a state machine written by Christopher Shu. Each tile is one decision cycle. The robot senses its environment, updates its internal map, and transitions between states based on what it finds.
Lucas Cai implemented a breadth-first search algorithm that calculates the shortest path back to the starting tile. BFS was chosen over DFS because it guarantees the shortest path, critical for maximising the exit bonus score.
The maze is stored as a 20x20 array of custom tile bitsets. Each bitset encodes wall data, exploration state, victim records, and checkpoint flags in minimal memory. On the original Mega, even this compact representation consumed 73% of SRAM.
Rather than relying on any single sensor, Theseus combines data from three independent sources for movement control. This redundancy makes navigation significantly more reliable when one sensor is noisy or blocked.
Two OpenMV H7 cameras run a FOMO (Faster Objects More Objects) neural network trained through Edge Impulse. FOMO uses 30x less processing power than YOLOv5 by generating a probabilistic heatmap rather than processing full frames.
Results are transmitted over UART to the M4 core as compact classification packets. This keeps the main controller free from vision processing entirely.
The current wheel-based drive struggles on stairs and uneven terrain. A tracked system would distribute the robot's weight across a larger contact area, dramatically improving traction on ramps and steps.
Tracks also better reflect real-world rescue robots, making them a fitting direction for a robot designed around a real rescue scenario.
The current protoboard solution, while functional, creates complex wiring that is difficult to debug and prone to loose connections under vibration. A custom PCB would consolidate all connections into a single board.
The design would include dedicated I2C ports for each sensor directly on the board, eliminating the need for the external TCA9548A multiplexer wiring and significantly reducing assembly time.
The current chassis handles the 2cm obstacle requirement but with very little margin. Occasional wheel catching on stairs shows the clearance is at its limit, especially when the robot approaches at a slight angle.
The next chassis revision would raise the base plate and redesign motor mount positions to achieve at least 3cm of clearance, giving a comfortable margin across all obstacle types and approach angles.
Four students from St. Andrew's College with defined technical roles across mechanical design, electrical assembly, computer vision, software architecture, and algorithm development.
Ensures effective collaboration across all members. Developed the FOMO computer vision pipeline for victim detection, handles electronics integration, and manages low-level movement control.
Prior AI experience and interned at Fudan University in Shanghai assisting postgraduate students on a robotics data collection project.
Mechanical design in Fusion 360, responsible for all soldering, protoboard assembly, and electrical wiring throughout the robot.
Leads an FPV drone building program at school. Personal projects include a custom FPV drone frame and a 6 DOF robotic arm. VEX V5 team leader.
Designed and implemented the tile-based state machine that drives the robot's autonomous decision-making as it explores and maps the maze. Responsible for the overall software architecture and navigation logic.
Implemented the breadth-first search algorithm for calculating the return path to the starting tile. The BFS operates on the robot's 2D map stored as a custom tile bitset to minimize memory usage on the controller.
Sprint-based documentation covering mechanical design decisions, prototyping, testing outcomes, and iteration across each phase of the V2 build.
Redesign the V2 chassis with motors beneath the base plate for better space efficiency. Establish correct ground clearance, dead axle suspension, and a cabling strategy to eliminate wiring tension.
In V1, motors sat on top of the base plate, consuming space needed for the dropper and electronics. Cabling was disorganized and the dropper on the upper layer made the top plate difficult to fit. V2 moves motors beneath the base plate, freeing the mid layer for electronics. The suspension constraint wedge was repositioned to reduce the overall footprint.
Dead axle suspension with press-fit bearings prevents torsional stress on the drive shaft. Cable strain relief posts with capped ends and offset routing prevent tension on motor connectors. 2cm ground clearance matches the maximum obstacle height in the competition rules.
Dead axle suspension solid under repeated use. Strain relief posts eliminated connector tension. Layered architecture created clean space for the dropper.
Strain relief posts slightly too short for the full cable count. Next iteration will scale post height based on actual wiring quantity.
Design a rescue kit dropper that fits between the base and mid layer, indexes correctly, and delivers kits within the 150mm scoring radius on both sides of the robot.
Three mechanisms evaluated: turntable (inspired by gumball machines and seen at RoboCup Americas 2025), inverted PEZ dispenser, and paddle dispenser. Turntable selected as the only design offering side selection without a 180-degree robot rotation, saving meaningful time during a run.
28BYJ-48 stepper mounted beneath the turntable via press-fit shaft. 19x19mm openings for 10mm kits, 1mm clearance. Triangular 8x4mm guides prevent lateral movement. Two steep chutes extend beyond the wheel position to land kits within 150mm.
Side selection saved time per victim. Stepper beneath freed the entire mid layer. Compact form fits cleanly in the inter-layer space.
Motor no longer inside mechanism. Guide engagement fixed with proper clearance. Chute height lowered to prevent kit bounce.
Design a 10x10x10mm rescue kit that stays within the 150mm scoring radius after being dropped, is 3D printable, and resists rolling after impact.
Four concepts researched: one-sided weighted cube (loaded dice), roly-poly cube with a weighted sphere, roly-poly cube with metal pellets, and a full silicone cube. Roly-poly with metal pellets selected for proven physics, ease of loading during printing, and ability to weight all sides rather than just one.
Cardboard prototype with bolt weights confirmed roly-poly physics at approximately 3cm drop heights. Issues: cardboard unevenness caused tilting, bolt holes reduced effective weight. Next steps: tungsten pellets at 19.3g per cubic centimetre, uniform 3D printed cube, and a larger cavity using 0.4mm-wall printed shell.
Roly-poly physics confirmed effective at low drop heights. Top-seal loading method worked well during prototype assembly.
Need tungsten pellets for higher density. Cube must be precisely printed to avoid asymmetric rolling.
Team Theseus competed in the RoboCup Junior Rescue Maze 2026 York Region season, winning 1st place and advancing toward the World Championship.