Luigi & Guido · Push Back Competition Robots
KUdos VEX-U's continuously developed Skills and competition robots for Push Back.

Overview
Luigi and Guido were my fifth set of VEX-U robots and KUdos VEX-U's competition robots for the 2025-2026 Push Back season. Luigi was the gold 15" robot and Guido was the blue 24" robot; their names and colors came from Lightning McQueen's pit crew in the movie Cars.
Push Back challenged teams to score red and blue Blocks into Long Goals and Center Goals, with extra points for filling Control Zones and parking and, in the separate Autonomous Skills Challenge, for clearing Match Loaders and Park Zones. With few local competitions before 2026, we designed Luigi and Guido as hyper-optimized Skills robots to qualify for Worlds through the rule inviting the top five unqualified teams in the World Skills standings by December 31. After qualifying, we continuously upgraded the same two physical machines from Alpha into Beta, and finally into a Beta+ Worlds configuration.
As Team Captain and Lead Designer & Fabricator, I led the project end to end, and served as Drive Coach for Skills runs and tournament matches. The robots were also the first full implementation of KUdos VEX-U's custom electronics and localization stack, architected from the start with future VEX AI operation in mind, although we ultimately chose not to compete in VEX AI.
My Role
Team Captain · Lead Designer & Fabricator · Drive Coach. I led the overall strategy, mechanical design, CAD, manufacturing, assembly, autonomous development, and season-long repair of Luigi and Guido, and coached the drive team.
- Ran early game analysis, defined the robots' needs, wants, and nice-to-haves, and set the Skills-first architecture and master sketches
- Modeled every subsystem in Onshape (drivetrain, intake, indexer, outtake, goal aligners, Multi-Tool, wings, odometry, electronics packaging)
- Manufactured CNC-routed, laser-cut, and 3D-printed parts, and produced the cut lists, BOMs, and buy lists
- Led assembly, integration, plumbing, and the season-long jamming, wing, and reliability fixes across both robots
- Soldered the custom magnetic-encoder PCBs and integrated the Pinpoint, Limelight, Raspberry Pi, Distance Sensors, and odometry hardware
- Developed and tuned the Skills and match autonomous routines on the team's localization backend
- Served as Drive Coach: planned Skills routes, coordinated both drivers, and set match strategy
- Designed, tested, and manufactured the Beta+ four-bar wing aligner on the morning of Worlds Day 1
Outcome
Luigi and Guido qualified KUdos VEX-U for the 2026 VEX Robotics World Championship and stayed competition-ready the entire season. The pair earned one Design Award, two Excellence Awards, one Innovate Award, two Tournament Finalist finishes, and one Tournament Semi-Finalist finish, placed 2nd in Robot Skills at all three qualifying events, and reached a season-high 162-point combined Skills score.
We intended to replace them at Worlds with the higher-ceiling Sally and Cruz, but those robots ran out of development time, so two days before Worlds we returned to the proven Luigi and Guido and built the Beta+ configuration around them. At Worlds, the Beta+ robots ranked 7th of 41 in the Opportunity Division (9-1-0 qualification), placed 19th in Robot Skills, and earned the Innovate Award, the team's strongest tournament performance of the season.
Competition Results
Illini VURC Cornfield Clash 1 · Alpha
Gear Slingers Open 2026 · Beta
California Baptist University VEXU Open 2026 · Beta
2026 VEX Robotics World Championship · Opportunity Division · Beta+
| Feature | Spec |
|---|---|
| Robot classes | 24" (Guido) and 15" (Luigi), shared design, ~14.5" wide |
| Weight | ~25 lb (estimated) |
| Drivetrain | 8-motor tank (4 omni + 2 traction), 18:21 reduction to 514 rpm on 2.75" wheels |
| Block capacity | ~14 Blocks through a continuous s-curve internal path |
| Scoring | Long Goal + top Center Goal via a pivoting outtake, bottom Center Goal by reversing the intake; color sort at the outtake nozzle |
| Localization | goBILDA Pinpoint, custom AS5047P magnetic encoders on 4-bar pods, Limelight 3A, V5 Distance Sensors |
| Compute | Raspberry Pi Zero 2 W coprocessor, finite-state-machine control, C++ backend |
| Wings | Pneumatic deployable (1x 0.5" stroke, 3/8" bore cylinder); PAHT-CF mounts + four-bar aligner added for Beta+ |
| Season | 3 qualifying events, 2nd in Robot Skills at all three; 162-pt season-high Skills |
| Worlds | 7th of 41 (Opportunity Division), Innovate Award (Beta+) |
Problem & Goal
The early Push Back season had almost no nearby VEX-U competitions before 2026, so our primary path to Worlds was the rule inviting the top five unqualified teams in the World Skills standings by December 31. That goal pushed us to design specifically for the Skills Challenge (max 134 points per run) rather than conventional early-season match play, even though we ended up qualifying through the Design Award at Illini VURC Cornfield Clash 1 instead.
Our Skills scoring priorities, in order, were: park both robots, clear both Match Loaders, clear both Park Zones, fill the Long Goal Control Zones, fill both Center Goal Control Zones, then score the remaining Blocks. The robots later had to transition from specialized Skills machines into competitive match-play robots without abandoning the architecture we had already built.
Design Requirements
- Fit the VEX-U 24" and 15" size limits with a shared core architecture
- Carry ~14 Blocks through a continuous internal scoring path
- Intake across a wide area and score accurately into the Long Goal, top Center Goal, and bottom Center Goal
- Reject unwanted Blocks by color before scoring
- Clear both Match Loaders, clear both Park Zones, and park during Skills
- Hold accurate field position in autonomous and reset it off known walls
- Auto-align to the Match Loaders despite field variation
- Add match-play features (wings) without rebuilding the robots
- Package a custom electronics stack with expansion room for future VEX AI
- Stay serviceable and repairable during long-distance competitions
Process
- 01Analyzed Push Back scoring and the December 31 World Skills qualification path, and built the needs, wants, and nice-to-haves list
- 02Evaluated tank, X-drive, and other drivetrains; chose a fast 8-motor tank for Skills pathing and pushing
- 03Created master sketches and surface geometry for the 24" and 15" robots
- 04Designed the super-wide intake, s-curve indexer, pivoting outtake, goal aligners, and Multi-Tool
- 05Packaged the Raspberry Pi, Pinpoint, Limelight, Distance Sensors, pneumatics, and V5 electronics onto the bellypan
- 06Manufactured parts by CNC router, laser cutter, and 3D printer, and soldered the custom encoder PCBs
- 07Built and integrated the Alpha robots, then fought recurring Block jamming through roller, backing, and rubber-band revisions
- 08Programmed and tuned the Skills and match autonomous routines on the localization backend
- 09Competed at Illini VURC Cornfield Clash 1 and qualified for Worlds
- 10Ran a post-mortem and upgraded the robots into Beta: redesigned deployable wings, steel intake shaft, stronger filament, and a Python-to-C++ backend
- 11Added reliable Limelight Match Loader alignment and switched to Pinpoint IMU heading, still resetting off the existing Distance Sensors
- 12Competed at Gear Slingers Open 2026 and California Baptist University VEXU Open 2026, and built the Sarge & Fillmore backup Skills robots
- 13Used the CBU post-mortem to define Sally and Cruz, while keeping Luigi and Guido competition-ready as a backup
- 14Two days before Worlds, returned to Luigi and Guido and built the Beta+ configuration, designing and manufacturing a four-bar wing aligner on the morning of Worlds Day 1
- 15Retuned the autonomous routines for Beta+ and competed at the 2026 VEX Robotics World Championship
Challenges
- Optimized two robots for Skills before knowing how the architecture would hold up in match play, then adapted them for defense and competiveness
- Fought recurring Block compression and jamming through dozens of roller, backing, flex-wheel, and rubber-band revisions
- Swapped Luigi's bent aluminum intake shaft for steel and replaced brittle gold-filament parts with stronger white ones
- Pushed the team to rewrite the crash-prone Raspberry Pi Python backend in C++, contributing the system requirements while a teammate wrote the code
- Completely redesigned the wings, then strengthened them against impacts across a long lever arm (PETG to polycarbonate to PAHT-CF)
- Designed, tested, and manufactured a four-bar wing aligner on the morning of Worlds Day 1, then returned a Skills-focused platform to its strongest tournament finish of the season
Strategy-Driven Architecture
Luigi and Guido were built around Skills rather than tournament play. A high-capacity internal path let each robot collect, carry, and score around 14 Blocks; a super-wide intake cut alignment time; and the indexer and outtake controlled Block flow through the robot.
Placing the intake and outtake on opposite sides of each robot reduced cycle time, since after collecting from a Match Loader the robot could drive straight to the Long Goal without turning around. This maximized scoring capacity and autonomous consistency.
Alpha to Beta+ Development
Alpha, Beta, and Beta+ were not separate robots. Luigi and Guido stayed the same two physical machines and were continuously upgraded from testing, tournament feedback, and the team's changing strategy.
Alpha
Alpha established the core architecture: the shared 24" and 15" design, the 8-motor tank drivetrain, the super-wide intake, the high-capacity s-curve indexer, the pivoting outtake, the goal aligners, the Multi-Tool, last-minute deployable wings, the 4-bar odometry pods with custom magnetic encoders, and the Raspberry Pi, Pinpoint, and Limelight stack.
Most of Alpha was a running fight against Block jamming and compression, resolved through many small iterations: half-cutting flex wheels for less resistance, cutting the center section out of the outtake bottom backing (and adding rubber bands in an X pattern to restore roller contact), sanding transitions, TPU flaps, and reprints. Alpha competed at Illini VURC Cornfield Clash 1, ranked 3rd of 12, earned the Design Award, finished Tournament Finalists, placed 2nd in Robot Skills, and qualified for Worlds.
Illini exposed several weaknesses: Luigi's long aluminum intake shaft bent under load, several gold-filament parts were too brittle, the Raspberry Pi Python backend was slow and crashed (interrupting autonomous routines and risking rule violations), the V5 Distance Sensors gave good wall distances but unreliable heading, and the one-day-old wings were poorly integrated and could not resist impacts through their long lever arm.
Beta
Beta kept the core architecture but improved reliability, autonomous consistency, and match play. The wings were completely redesigned (see below); the bent aluminum intake shaft was replaced with steel; brittle gold-filament parts were replaced with stronger white-filament versions (with white spares kept on hand); and the outtake and drivetrain were reinforced.
The most important Beta change was software: the Raspberry Pi backend was rewritten from Python to C++, cutting memory use, lag, and the crashes that had interrupted autonomous routines. Beta also added reliable Limelight Match Loader alignment and switched the primary heading source to the Pinpoint IMU, still resetting position off the existing Distance Sensors' wall readings. Beta competed at Gear Slingers Open 2026 and California Baptist University VEXU Open 2026, ranking 3rd at both, earning two Excellence Awards, and placing 2nd in Robot Skills at both.
Beta+
Beta+ was the final Worlds configuration. After CBU, the team's main effort shifted to Sally and Cruz, and Luigi and Guido were kept assembled only as a backup. When Sally and Cruz ran out of development time, we returned to Luigi and Guido two days before Worlds.
Because the decision was so late, the biggest Beta+ mechanical change was completed at the event: on the morning of Worlds Day 1, I designed, tested, manufactured, and installed a new four-bar wing aligner. It deployed with the wing, had alignment rollers ride against the Long Goal, guided the robot into a repeatable descoring position, and was built to survive impacts across the wing's long lever arm. Its mounts used PAHT-CF, replacing the PETG mounts that had repeatedly broken during Beta. Beta+ also retuned the Skills and match autonomous routines and prepared spares and maintenance procedures. At Worlds, Beta+ ranked 7th of 41 in the Opportunity Division, placed 19th in Robot Skills, and earned the Innovate Award.
Robot Subsystems
Luigi and Guido shared one core subsystem architecture across their 24" and 15" configurations. Each subsystem was packaged around a continuous Block path and revised through Alpha, Beta, and Beta+.
Drivetrain
The drivetrain was an 8-motor tank per robot, geared 18:21 from 600 rpm cartridges to about 514 rpm on 2.75" wheels (four omni wheels plus two traction wheels for a predictable, grippy base). Motors were packaged in a motor-stack arrangement with removable caps so a damaged or overheated motor could be swapped, and front and side ramps helped the robots enter the Park Zone.
The tank base gave strong Skills pathing and pushing, but limited acceleration and maneuverability in aggressive match play, and its height kept it from driving beneath the Long Goal. Parking was also constrained: the robots could hold a park if they started in the Park Zone, but could not reliably drive up and park mid-run, since the spring-loaded odometry pods did not lift and would be damaged climbing the Park Zone barrier.
Super-Wide Intake
The intake spanned most of the robot's width to cut alignment time, collecting Blocks from the floor and funneling them into the indexer with 2" flex wheels. A 3/8" Thunderhex Lite shaft ran across it as a beater bar and for stiffness, and a second roller set flipped out under spin-up force at the start of a match to keep constant Block contact. The intake and indexer shared motors (surface-speed matched) through 6P chain and 8T sprockets, with the intake pivot mounted to the inner drivetrain plates to keep the load off the plastic bushings.
Luigi's original long aluminum intake shaft bent under load at Illini and was replaced with steel for Beta. The robot's overall width, about 14.5", was set by the reach the Multi-Tool needed to clear all four Park Zone Blocks at once. The intake also doubled as a bottom Center Goal scorer: reversing it pushed a held Block back out and into the bottom Center Goal, without a dedicated low-goal funnel to guide it in.
Indexer & Color Sorting
The indexer was an s-curve path that carried around 14 Blocks in continuous contact, driven by four 600 rpm motors turning 2" and 3" cut flex wheels on live axles. It was originally designed with dead-axle rollers, but once the team confirmed with WPI that a Block's true maximum dimension is 3.84" (not the 3.4" assumed), the design switched to live axles and a split backing with a 1" center gap so the larger Blocks would clear the roller shafts. The indexer plates were laser-cut from 0.1" aluminum.
The indexer also included a built-in color sorter: a single 50 mm-stroke, 10 mm-bore VEX pneumatic cylinder driving a ramp that would open and close to eject the wrong color. The mechanism was physically built, but its color sensor was never installed, so it was never tested or used. Color sorting was instead handled at the outtake nozzle, a more direct way to reject an unwanted Block before it scored.
Compression between rollers and backings caused recurring jams, which drove many small revisions across Alpha and Beta: half-cutting flex wheels, rubber bands in V and X patterns to eliminate dead spots, sanding the top-indexer-to-outtake transition, and removing hardware that Blocks caught on.
Pivoting Outtake
The outtake scored into the Long Goal and the top Center Goal, chosen as a simple pivot instead of a more complex linkage so it could reach multiple scoring positions while staying compact. It was about 6" wide and drove Blocks out on 1.625" flex wheels, geared 17:13 off two 600 rpm motors to spin at about 785 rpm; the step-up compensated for the smaller wheels so the outtake matched the indexer's surface speed. Two 3/8"-bore, 2"-stroke pneumatic cylinders drove the pivot, and a separate 3/8"-bore, 2"-stroke cylinder drove the Outtake flap.
The flap served two purposes: while the intake and indexer ran, closing it kept the internal force of ~14 Blocks from pushing Blocks back out, and while scoring, it acted as a roof so a scored Block stayed in the Goal instead of flying out the top. It worked as a regular pneumatic flap combined with a ziptie and the outtake's own pivot geometry: with the outtake down for top Center Goal scoring, the cylinder fully extended the flap; when the outtake tilted up for the Long Goal, the cylinder mount sat farther from the ziptie anchor, so the cylinder could no longer fully extend and the ziptie held the flap parallel to the ground. The flap itself was printed in TPU for flex, with reinforcing side plates.
Multi-Tool
The Multi-Tool was a deployable subsystem driven by a single 100 rpm motor through a 12:17 reduction on 6P chain, spinning it down to about 70.5 rpm, used to clear Blocks from the Match Loaders and scrape Blocks from the Park Zones. Its ramps, shaped like an F1 drag-reduction-system spoiler, fit the Cars theme.
It went through steady iteration. The 6P chain kept slipping until a 3D-printed idler sprocket on a screw joint fixed it. A V-cutout added to the front of the ramp let it get under Match Loader Blocks in any orientation, tested 10 for 10. The side plates were the subject of a small materials study: pocketed aluminum bent in matches and stayed bent, polycarbonate flexed but oscillated too much to line up in the Loader, and HDPE was still too flimsy, so the final plates were 1/8" aluminum with no pockets, stiff enough to hold alignment but durable enough not to deform.
Deployable Wings
The Alpha wings were added a day before Illini and proved the concept but lacked the strength and integration for competition. Beta introduced a complete redesign rather than a revision. After studying several other teams' wing mechanisms, the wing pivot was hard-mounted to the outtake, with the pneumatic cylinder mount riding on a 3D-printed carriage on the same 1/4" round standoffs as the drivetrain.
The deploy was essentially one-time: when the outtake pivoted up at the start of autonomous, the carriage the cylinder was mounted to slid upward on the linear slide and the wing passively swung up with it. Once deployed, the wing stayed out for the rest of the match; from there, a single 0.5"-stroke, 3/8"-bore pneumatic cylinder actuated it between the hover and descore states. Finding that 0.5"-stroke cylinder was the key packaging breakthrough, since the 25 mm cylinders originally tried reached too tall in the hover position. The geometry kept the wing perpendicular to the ground in hover and descore so it could never drop into the Long Goal Control Zone.
The wings moved groups of Blocks, descored Long Goal Blocks, defended scoring positions, and controlled space around the Goals. Because impacts landed far from the pivot, the wing and its mounts saw high loads: an early 3D-printed PETG wing snapped during descore testing, so Beta moved to a 1/16" polycarbonate sandwich, and the wing was lengthened from 5.5" to 6.75" for better Long Goal clearance. For Beta+, the mounts were rebuilt in PAHT-CF, and the new four-bar aligner (built the morning of Worlds Day 1) deployed with the wing and rode rollers against the Long Goal for a repeatable scoring position.
Custom Electronics & Localization
Luigi and Guido were designed around a custom sensor and localization stack meant to support VEX-U autonomous routines and future VEX AI development:
- goBILDA Pinpoint odometry computer
- Custom magnetic quadrature encoders (AMS AS5047P sensors on team-made PCBs) on 4-bar, single-wheel odometry pods
- Limelight 3A smart vision camera
- Raspberry Pi Zero 2 W coprocessor with a Waveshare RS485 hat
- V5 Distance Sensors for wall-distance measurements
- Optical sensors for Block detection and outtake color sorting
- Wireless hotspot for troubleshooting and updates
The Pinpoint computed position and heading from its integrated IMU and the custom tracking-wheel encoders; its IMU became the primary heading source, since the Distance Sensors gave good wall distances but unreliable heading. Because the goBILDA Pinpoint V2 IMU is very sensitive to vibration, the Pinpoint was isolated from the bellypan with VHB tape. The odometry pods were changed to a single tracking wheel per pod each after a two-wheel stack caused horizontal drift when driving straight.
The Limelight ran a neural network on its own hardware to detect the yellow cap on the Match Loader, letting the robots auto-align despite field and lighting variation. The Raspberry Pi did more than bridge the custom sensors to the V5 Brain: it also acted as the power distribution point for the Pinpoint (over I2C) and the Limelight (over USB), both running off the Pi's own battery pack. Alpha's Python backend was slow and crash-prone; Beta's rewrite to C++ improved memory use, speed, and stability, which mattered because the whole stack existed to make autonomous precise and repeatable. I contributed the system requirements, designed the mechanical packaging, soldered and assembled the encoder hardware, and integrated everything, then used the completed backend to program and tune the autonomous routines.
Autonomous Development
As Drive Coach I also drove autonomous development, planning Skills routes, selecting match routines, coordinating starting positions with alliance partners, and using competition results to find what needed tuning. The routines ran on Pinpoint odometry, Limelight alignment, Distance Sensor wall resets, optical sensors, and the robots' subsystem state machines, and the mechanisms were controlled by a finite-state-machine architecture (chosen over simple sequential logic and A* transition pathfinding for its reliability and debuggability) using the LemLib motion library.
Testing produced concrete, repeatable numbers: Center Goal scoring jammed below 40% outtake speed while launching Blocks out above roughly 60%, so guaranteeing all seven for the control bonus meant one robot scoring while the other blocked the opposing side. At Gear Slingers Open the Pinpoint and Limelight systems became extremely consistent, reaching a 105-point Driver Skills score, and at CBU the combined Skills score reached 162 points (112 Driver, 50 Autonomous).
Sarge & Fillmore · Autonomous Skills Backup Robots
Sarge and Fillmore were two simplified Autonomous Skills robots built a few days before CBU, continuing the Cars theme. We built them because we had lost Skills Champion by 2 points at both Illini (32) and Gear Slingers (30): our auton score came from double parking for 30 points, and adding a cleared Park Zone would have reached 35 and won Skills at both events.
Neither robot had a drivetrain; they only did the minimum for a reliable 35-point Autonomous Skills score. Sarge (24") used four pneumatic cylinders to push the four Park Zone Blocks out (5 points), braced against the wall with a c-channel on standoffs so it would not move while pushing, and started its preload outside the Park Zone. Fillmore (15") stood vertically for a small footprint and spun a motor so it registered as a moving robot. Both stayed parked for 15 points each.
We ran them for our first Autonomous Skills attempt at CBU, where they established the 35-point baseline, and Luigi and Guido then exceeded it with 42- and 50-point runs, so Sarge and Fillmore were not used for the final combined score. They still gave the team a low-risk contingency against an autonomous failure.
VEX AI Intent
Luigi and Guido were designed with VEX AI in mind from the start, which drove the external localization computer, camera-based alignment, Raspberry Pi coprocessor, custom encoders, modular communication, and expansion room for more cameras and sensors. After the VEX-U World Championship, the team chose to take a break rather than prepare for another major event, so no VEX AI-specific testing or upgrades were completed.
Sally & Cruz Worlds Rebuild
After CBU, I led the development of Sally and Cruz, a higher-ceiling replacement pair meant to address Luigi and Guido's limits (tank drive, limited acceleration, height, difficult parking, and a narrow Block path). Sally and Cruz were fully built and had begun autonomous programming, but fell behind during integration and testing. We kept Luigi and Guido competition-ready and brought all four robots to St. Louis, and two days before Worlds decided Sally and Cruz were not ready, returning to the proven Luigi and Guido. Sally and Cruz are covered in depth as a separate project.
What I Learned
- How designing specifically for Skills creates different priorities than designing for match play, and how early architecture choices can limit acceleration, maneuverability, and later additions
- How to continuously upgrade the same physical robots through Alpha, Beta, and Beta+ instead of starting over
- How to design a high-capacity Block path and fight the compression and jamming that come with it
- How material and filament choices affect long shafts, impact-loaded parts, and replacement-part planning
- How to design wing and aligner structures around impacts acting through a long lever arm, and when to move to PAHT-CF
- How to build and solder custom magnetic-encoder hardware and integrate a Pinpoint, Limelight, and Raspberry Pi stack
- Why switching a coprocessor backend from Python to C++ can be the difference between a working and a failing autonomous
- How to turn tournament post-mortems into focused, measurable improvements
- How to plan two-robot Skills routes and match strategy as a Drive Coach
- How to make a major competition decision two days before Worlds and design a mechanism on the morning it is needed

