I was build captain on my high school’s Science Olympiad team for the 2024 season. One of the events that I took lead on was Robot Tour. Unfortunately the science olympiad season overlaps with robotics, so I didn’t get to spend as much time perfecting this robot as I wanted too - it could certainly have been better in many ways, but oh well.

The robot consists of two micro metal gearmotors with encoders (used for odometry) attached to a CNC-machined polycarbonate chassis plate. A Raspberry Pi Pico is used to control the robot which is powered with 4 AAA batteries. I originally planned to use the two VL6180X distance sensors mounted on the front of the robot for odometry correction using the obstacles in the maze, but due to time constraints, I never got around to doing this.


Robot CAD

On the software side, the robot takes a text-based representation of the maze as input, finds the most efficient path around tha maze, and then generates a smooth B-Spline path to drive. Using the wheel encoders, the robot keeps track of it’s translation and rotation relative to it’s starting point. Using this information, the robot follows the B-Spline path using an optimized pure pursuit controller and feedforward control for the wheel motors. I created a rudimentary but functional simulator for debugging the robot’s control algorithms using raylib which greatly sped up the development process.


Robot simulator simulating a maze solution

Here’s a video of the robot in action!


Aaand… some more photos!

Fully assembled robot
Side view
Back & electronics
Bottom