Bikbucket

Project Overview

Purpose:

Gain experience with inter-PIC communication via SPI, hierarchical state machines, and different sensors in an autonomous mobile robot

Background:

Each robot will try to push COMMITs between the local and remote REPOs, and win any merge conflicts

Solution:

Bikbucket is the best platform for all things git, with robust localization and navigation using ultrasonic distance sensing, and a suite of reflectance sensors for line detection and following, and secret user input buttons

Core Features

Speed Toggle:

Bikbucket features a limit switch mounted above the front bumper to sense contact with a COMMIT. This allowed Bikbucket to override line following in favor of full speed drive when it could rely on the COMMIT for alignment, making Bikbucket faster, stronger, and more robust to merge conflicts.

Suite of Reflectance Sensors:

A series of 5 reflectance sensors were used in the following configuration to enable line following, 90-degree turns, and navigating within the repo, with the flexibility to play with specific placement for tuning.

Ultrasonic Distance Sensor:

An HC-SR04 was mounted on the back of Bitbucket and was used in the navigating branch game logic. Alongside the reflectance sensors, this eliminated the need for hall-effect encoders, which caused many teams significant challenges

User Input Buttons:

In our quest to maximize functionality while maintaining simplicity, we attempted to leverage the most powerful sensor at our disposal: our eyes. Throughout the development process, we learned that we could compensate for sensor inaccuracy by simply incorporating buttons for user input. The Branch 1, 2, and 3 buttons enabled us to decide, based on the current state of the competition, which COMMIT to push next each time the robot returned to the repo. The CW (clockwise) and CCW (counter-clockwise) buttons provided an interface to manually adjust the angle of the robot within the repo to mitigate the inaccuracy of reflectance based turning. Finally, we incorporated an additional override function to "relocalize" the robot if it accidentally missed a line en route to its next branch. By simultaneously pressing both the start button and a branch button, we could manually set the current branch number for future logic.

BikBucket in Action - Semifinals

semifinals.mov