← All projectsFTC team 18996Oct 2020 to Feb 2021

FTC ULTIMATE GOAL Robot

My first FTC season. I was the team's only programmer.

1stFTC season
1Programmer on the team (me)
3Rings stacked in the shooter's cup
1.3 sBetween shots in the run at the top (measured from the video)
Three rings, 1.3 s apart, toward the cardboard box on the right, then a lap of the field with a wobble goal on board
Watch the white cup: three rings, then two, then one. Each shot takes the bottom ring

ULTIMATE GOAL was the 2020-21 FIRST Tech Challenge game: shoot orange foam rings at goals, and carry wobble goals around the field. It was my first FTC season, on team 18996, and I was the team's only programmer.

It was also the COVID season. Everything here happened on a homemade field, with a cardboard box for a goal. There is no CAD of this robot, so this page runs on our photos and phone videos: scroll, and they play.

The home field

In ULTIMATE GOAL, robots shoot orange foam rings at goals on the far wall, and carry wobble goals, poles with a black dome on top, into taped target zones.

Our practice field was homemade: plywood walls, gray foam floor tiles, red tape for the target zones and white tape for the lines. The goal was a cardboard box with an opening cut in the front.

The goal: a Home Depot box with an opening cut in it, taped at the corners
The goal: a Home Depot box with an opening cut in it, taped at the corners

The build, in twenty days of photos

Day 1, the plan: work faster crossed out and fixed to work smarter, then intake and conveyor
Day 1, the plan: work faster crossed out and fixed to work smarter, then intake and conveyor
Day 1: conveyor A and B, four numbered ideas, and a ring's path sketched in the corner
Day 1: conveyor A and B, four numbered ideas, and a ring's path sketched in the corner

Day 1: the agenda, and the options

Five lines on a whiteboard. Work faster got crossed out and fixed to work smarter, and the last two lines are the plan: an intake and a conveyor.

Then the options. The conveyor, split into two jobs: A, floor to vertical, and B, vertical to magazine. Then four numbered ideas: a fast beater, a slow beater or a vertical belt sandwich, a small shooter, and a belt with a tab. In the corner, a sketch of a ring's path up from the floor into a box.

Our photos, in the order they were taken, cropped to hands and hardware. Days are counted from the first photo in the album.

Day 10: arcs cut from a cardboard concrete-form tube, next to plywood with curved slots
Day 10: arcs cut from a cardboard concrete-form tube, next to plywood with curved slots
Day 10: loose motors and servos wired up on the field floor, with a laptop and a gamepad
Day 10: loose motors and servos wired up on the field floor, with a laptop and a gamepad

Day 10: cardboard tubes, and wires everywhere

Arcs cut from a cardboard concrete-form tube, the round kind used to pour concrete posts, next to a plywood plate with curved slots cut into it.

A laptop, a gamepad, and motors and servos wired up loose on the field floor, next to a plywood deck with a motor in each corner.

Day 11: a tube arc standing in a curved slot, a ring held up to it
Day 11: a tube arc standing in a curved slot, a ring held up to it
Day 11: a hardboard tower with timing belts up its walls
Day 11: a hardboard tower with timing belts up its walls

Day 11: two prototypes

A tube arc standing in a curved slot in plywood, with a ring held up to it. And a tall hardboard tower with timing belts running up its walls.

Day 18: the shooter plate on the carpet: the wheel, the white cup with a ring in it, and the curved rail
Day 18: the shooter plate on the carpet: the wheel, the white cup with a ring in it, and the curved rail

Day 18: the shooter plate

The shooter comes together on the carpet, off the robot: a black wheel, a white cup with a ring in it, and a curved rail around the edge of the plate.

Day 20: number plate on, wired up, a phone on the deck
Day 20: number plate on, wired up, a phone on the deck

Day 20: a whole robot

Number plate on, a phone screen glowing on the deck, wires in every direction: the robot, assembled.

The ring shooter

The shooter is a tilted plywood plate standing on threaded rods above the drive base. On it: a black wheel lying flat, a white cup that holds a stack of three rings lying flat, a curved rail along the edge of the plate, and a small servo on a bracket beside the cup.

The close-up below shows how the stack feeds. Each shot takes the bottom ring: it slides out from under the cup and leaves between the wheel and the curved rail, fast enough to be an orange blur in a single frame. The rings above it drop down by one.

Over the top of the shooter plate: the black wheel, the white cup, and the curved rail at the edge
The shooter plate from above: the black wheel, the white cup with three rings in it, the servo on its bracket, and the curved rail along the edge
The shooter plate from above: the black wheel, the white cup with three rings in it, the servo on its bracket, and the curved rail along the edge
Close up on the cup: three rings, then two, then one, then empty. Each shot takes the bottom ring, and the last one leaves between the wheel and the rail as an orange blur
Cutting a cardboard concrete-form tube with a power tool: "TUBE" is printed right on the side
The shooter plate from the side, before it went on the robot: the white cup, the threaded rods and a servo on its bracket
The shooter plate from the side, before it went on the robot: the white cup, the threaded rods and a servo on its bracket
The robot tipped up for work, shooter plate toward the camera: wheel at the top, rings in the cup, the servo beside it
The robot tipped up for work, shooter plate toward the camera: wheel at the top, rings in the cup, the servo beside it

The run

The run from the top of the page, move by move. Ring times are the frames where each ring first shows in the air, measured on the 4K original.

  • 0.4 s: the robot sits at the bottom left of the field, and ring one is in the air, headed for the cardboard box on the right.
  • 1.7 s: ring two, 1.3 s after the first.
  • 3.0 s: ring three, another 1.3 s later. Three rings out.
  • Then it turns and heads up the field with the wobble goal, the black-domed pole, riding upright on its side.
  • On the way back it rolls over a ring lying on the field, and half a second later there is a ring in the white cup.
  • It ends the clip among the taped squares near the camera, the wobble goal still on board.

Calculation How fast does it empty the cup?

Ring one in the air0.4 smeasured from our video, frame by frame
Ring two1.7 ssame video
Ring three3.0 ssame video
  1. Between shots: 1.7 s - 0.4 s = 1.3 s, and 3.0 s - 1.7 s = 1.3 s
  2. First ring to last: 3.0 s - 0.4 s = 2.6 s for three rings
  3. While it fires: 60 s / 1.3 s = about 46 rings a minute

A full cup of three rings is gone 2.6 s after the first one leaves, one ring every 1.3 s.

From one run on video, to the nearest tenth of a second; not a timed test.

The run from the top of the page: three rings toward the box on the right, then a lap with the wobble goal on board
Another run: the robot turns, then sends rings toward the box on the right
From the floor: the tilted plate on its threaded rods, the motors under it, and the drive base
From the floor: the tilted plate on its threaded rods, the motors under it, and the drive base

My part: the code

I was the team's only programmer. On the Driver Station phone, the list of autonomous programs is a stack of numbered test versions, from TestAutoV2 up to TestAutoV12, with a TurnLeft and a TurnRight version of V12.

The one in the clip is TestAutoV12TurnLeft. It is loaded, Mode: waiting, a tap on play, then Mode: running, and while it runs it prints all four drive encoder counts to the screen. They climb together. Then all four start over near zero, and this time they part ways: leftFront counts down, to -68, while rightFront counts up, to 108.

Encoder counts re-typed from the screen in the clip, only where every digit can be read.
Time in the clipleftFrontrightFrontleftRearrightRear
2.3 s20232623
3.0 s407411412411
4.0 s1,0111,0141,0141,012
5.1 s1,6191,6211,6201,619
5.6 s1,9361,9381,9341,935
6.4 s2,3952,3952,3922,395
The Driver Station list of autonomous programs: TestAutoV2 to TestAutoV12, with a TurnLeft and a TurnRight version of V12
The Driver Station list of autonomous programs: TestAutoV2 to TestAutoV12, with a TurnLeft and a TurnRight version of V12

Calculation Did the four wheels turn together?

Counts at 3.0 s407, 411, 412, 411read off the Driver Station in our video
Counts at 6.4 s2,395, 2,395, 2,392, 2,395same video
Widest gap in any readable reading (16 of them)7 countssame video (at 2.5 s and 3.3 s)
  1. At 3.0 s: 412 - 407 = 5 counts apart, 5 / 411 = about 1.2 %
  2. At 6.4 s: 2,395 - 2,392 = 3 counts apart, 3 / 2,395 = about 0.1 %
  3. Count rate: (2,395 - 411) counts / (6.4 s - 3.0 s) = about 580 counts a second on each wheel

All four wheels stayed within 7 counts of each other, and the gap never grew as the counts climbed from 20 to 2,395: the four wheels turned together.

Counts are as the code printed them; the motors and their counts per turn are not known, so this is not converted to a speed.

TestAutoV12TurnLeft running: Mode: waiting, play, Mode: running, and the four drive encoder counts climbing together