Vision Pick and Place Robot
Overview
During the 2024–2025 season as part of FTC Team 22312, I developed a fully autonomous, vision detection and localization algorithm to grab blocks of a specific color — and reject blocks of the wrong color.
This algorithm included 2 main components:
- Locating every viewable block
- Planning and executing subsystem movements
1 Vision + Localization
I tuned Limelight 3A's color detection pipeline to segment the image into blocks, and obtained the center pixel values of each block. To account for perspective projection, I calibrated a homographic transformation that converted pixel values into field coordinates. As a result, this pipeline gave me an ArrayList of field coordinates of all visible blocks.
2 Subsystem Movements
To decide which block the robot should target, the robot computes a cost for each block, and select the block with the minimum cost
Cost function:
- distance weight
- angle weight
- block coordinates relative to the front of the robot
To fully utilize the robot's sideways oriented spindles, I designed 2 types of collection modes
Forwards Collection
If the necessary angle of rotation is less than a tuned threshold, directly rotate and extend to the block. This method contacts the block with the front facing spindles.
Sideways Collection
If the angle of rotation is greater than the tuned threshold, rotate to the threshold, extend the collector out, and then rotate the remaining angle. This method contacts the block using the sideways facing spindles.
After computing all the calculations, I used the Roadrunner library to build pre-planned actions controlling each subsystem.