Help us test FTC-Helper-Lib
This library is new. We test it on our robots and in the simulator, but your robot is different. Small tests on many robots find the problems we cannot. Each test takes 15 to 90 minutes. A fail helps as much as a pass.
How testing works
- Pick. Tick what your robot has below. You see only the tests that fit, most needed first.
- Prepare. Read the whole test once. Do its Setup list. Read its Safety list.
- Run. Follow the numbered steps. Write down what the Record list asks for.
- Report. Press Report result on the test's page. A short GitHub form opens, already filled in.
- Simulator first. Tests marked "Simulator" need no robot, only a laptop. A test for both? Run it in the simulator first: it finds code problems without risk.
- Safety first. Safety glasses near a flywheel. Wheels off the ground for a first run. Low power. A hand near STOP. Hard stops on every lift, arm, turret and hood.
- Which version. These pages match release v0.17.4. Tests marked next release need a library newer than that: they show only if you tick "Show tests for the next release". The form asks which version you used.
- At an event. Test at home or school, not in a match. FTC Dashboard and Panels (web pages on a laptop that show the robot's numbers and change them while it runs) and Pedro's tuner page are not allowed at events (rule R704.D; the tests that use one say so).
- Your robot is not ours. Every test has a part "If your robot is different". Change what you must, and say what you changed in the report.
- Privacy. A GitHub account is needed to report. Write no student names, and share no video that shows faces. A team number is optional.
Pick tests for your robot
54 tests
SHOT-06First spin-up with no flywheel numbers
A new launcher should work before anyone has run the Flywheel Finder.
Needs: Flywheel shooter
CTL-01Pause at BACK, and START-then-BACK pairs
BACK is the panic button: it must pause the robot at the press, even if the driver holds it.
Needs: any robot
ODO-02Set pose here - hold START 1 s on the reset spot
When TeleOp runs without an autonomous first, the robot does not know where it is.
Needs: goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
SET-01Hardware Check finds every device and each motor counts up
The Hardware Check is the first thing every team runs.
Needs: any robot
SHOT-02Never feeds a slow flywheel, and gives up after 3 s
The launcher's two safety rules are the reason teams can trust the fire button: a piece is only fed when the wheel is at speed, and the launcher gives up after 3 s instead of firing late.
Needs: Flywheel shooter
SHOT-04Speed trim on the D-pad, and last match's trim
Some days every shot is a bit short.
Needs: Flywheel shooter, and Limelight 3A or Webcam or goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
SET-02A part that is not on the robot yet - optional() and the COMPETITION warning
Robots are built in steps.
Needs: any robot
AIM-03Whole-robot aim - the robot turns to the goal while you drive
Most robots have no turret: they aim by turning.
Needs: Limelight 3A or Webcam or goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
DRV-01First drive with the five files - wheels, sticks, slow and pause
Driving is the first thing a team sees work.
Needs: Mecanum drive or Tank drive (2 or 4 motors)
HOOD-01Hood Finder on a servo hood - stops and angles
The hood's two stops (posA, posB) are hard limits: the hood never goes past them.
Needs: Hood on a servo
HOOD-02Motor hood - stops by hand, and it arrives before firing
A motor hood knows where it is (its encoder), so the launcher waits until it arrives.
Needs: Hood on a motor with an encoder, and Flywheel shooter
ILK-02Interlock stop distance - a fast part brakes before its zone
A motor does not stop the moment it is told to: the robot only decides once per loop, and a braking motor still coasts.
Needs: Lift or arm with an encoder or Turret
MEC-01A lift or arm on two motors - same power, same moment
Many lifts have a motor on each side.
Needs: Lift or arm with an encoder
SHOT-01Flywheel Finder - gains that hold the speed
The Flywheel Finder works out the speed-control numbers (the gains) from one full-power spin.
Needs: Flywheel shooter
SIM-01Drive a kit bot in the simulator
The simulator is how most teams will try the library first.
Needs: any robot
SOM-01Shooting on the move - standing still nothing changes
Shooting on the move is off by default until it is tested on a real robot.
Needs: Flywheel shooter, and goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
TUR-02Turret with no switch - start angle and the angle carried to TeleOp
A motor turret with no home switch only knows its angle if it starts where startAngle says.
Needs: Turret
AIM-01Turret follows the goal with the camera
A turret that follows the goal takes the aiming off the drivers.
Needs: Turret, and Limelight 3A or Webcam
AIM-02Odometry backup aim when the camera is covered
When a tag is hidden, the turret should keep aiming from the odometry.
Needs: Turret, and Limelight 3A or Webcam, and goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
ILK-01Interlock rule - two parts are never in their zones at once
An interlock rule (keepApart(...) in Robot.java) keeps two parts that share space from crashing, whoever moves them: a button, a stick, an action, a turret that follows the goal.
Needs: Lift or arm with an encoder or Turret
PATH-02PathAt - start things along a path while it drives
PathAt starts a part (an intake, a spin-up) at a place along a Pedro path while the robot keeps driving.
Needs: Mecanum drive, and goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods), and Pedro Pathing in the project
SHOT-05Battery compensation - 4 quick shots on a tired battery
Battery compensation is off by default because it is not yet proven on a real robot.
Needs: Flywheel shooter
SIM-02Your own robot in the simulator, from Robot.java
:sim:fromRobot writes a simulator robot file from your own Robot.java.
Needs: any robot
SIM-04Record a test in the simulator, break it, update it
The simulator's recorder writes a test from what a driver does on the page.
Needs: any robot
TUR-01Turret home switch (touch or magnetic) - homes at START
A turret's motor encoder counts from where it was at INIT.
Needs: Turret, and Turret home switch (touch or magnetic)
ODO-01Odometry Tuner - directions, offsets and the loop check
Everything that uses the robot's place on the field (driveTo, Pedro paths, odometry aim, shooting on the move) depends on this tuner.
Needs: goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
SIM-03Build an autonomous in the simulator with the auto builder
The auto builder draws an autonomous on the field, runs it with your real robot code, shows where the robot left the plan, and writes the Java and a scenario file.
Needs: any robot
DOC-01Quick start from a blank robot project
The Quick start promises a driving robot in 30 minutes.
Needs: Mecanum drive or Tank drive (2 or 4 motors)
SHOT-03Shot Tuner - build a shot table with hits and misses
The Shot Tuner builds the speed-for-each-distance table the way experienced teams do: 3-5 shots per speed, each marked HIT or MISS, and the best hit ratio wins.
Needs: Flywheel shooter, and Limelight 3A or Webcam or goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
SOM-02Shooting on the move - strafe past the goal and score
This is the real test: does aiming at the "virtual goal" make shots score while the robot drives? Only real shots can tell.
Needs: Flywheel shooter, and goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
DRV-02Field-centric driving and resetting "forward"
Field-centric driving (stick up = away from the driver, whichever way the robot faces) depends on the IMU or the odometry heading.
Needs: Mecanum drive
LGT-02The alliance on the light at INIT
A wrong alliance pick in INIT makes the robot aim at the other alliance's goal all match.
Needs: Light (goBILDA RGB or REV Blinkin)
ODO-04TeleOp starts where autonomous ended
The pose (where the robot is and which way it faces) should carry from autonomous into TeleOp, so field-centric driving and the odometry aim are right from the first second of TeleOp.
Needs: goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
CTL-03Switch the alliance during TeleOp (turned on by you)
If autonomous ran as the wrong alliance, the drivers can switch it in TeleOp, but only if the team turned it on.
Needs: any robot
HOOD-04Hood at START, and the stick with no goal in view
At START the hood goes to its startAngle.
Needs: Hood on a servo or Hood on a motor with an encoder
PATH-01The Pedro example path in the simulator
Lesson 8 says "try it in the simulator first".
Needs: any robot
SET-03DEFAULT_FROM_CATALOG, MEASURE and a part not in the catalog
A new robot's Tunables.java can name every setting from day one: DEFAULT_FROM_CATALOG for "use the library's default" and MEASURE for "a number to find on the robot".
Needs: any robot
CTL-02Move or free the library's buttons
Every library button (slow, field-centric, pause, menus) can move to another button or be freed for your own job.
Needs: any robot
MEC-02A servo's full range - 300 degrees instead of 270
The hub sends a servo a pulse from 600 to 2400 microseconds for positions 0 to 1.
Needs: any robot
AUTO-01Choose the start spot in the INIT menu
One autonomous can start from two spots: a Start line in the INIT menu picks the steps AND the start (start(...) inside an onlyIf).
Needs: any robot
ODO-03driveTo a field point - how close does it stop?
driveTo drives straight to a field point while it turns.
Needs: Mecanum drive, and goBILDA Pinpoint or SparkFun OTOS or Dead wheels (2 or 3 pods)
PATH-03Path Builder web page - draw a path, copy the code, run it
The Pedro Path Builder (https://crossbotics.com/ftc-helper/path-builder/) draws the BIOBUZZ field, shows where the robot would hit things, and writes the PedroPath code.
Needs: any robot
PCS-01Piece Tuner - can the sensor tell the pieces apart?
A colour sensor (or a distance sensor) tells the robot which piece it holds: POLLEN or NECTAR, red or blue.
Needs: Colour sensor for game pieces or Distance sensor for game pieces
PCS-02Piece count and the next piece picks the shot table
Pieces counts what comes in and what goes out, and says which piece fires next.
Needs: Intake, and Colour sensor for game pieces or Distance sensor for game pieces
TUR-03Servo turret - two measured points and its start angle
A turret on a standard servo has no encoder and no PID: the library turns an angle into a servo position from two measured points.
Needs: Turret
AIM-04Aim Tuner - find the camera offset from real shots
A camera that is not exactly on the launcher's line makes every shot go a little to one side.
Needs: Flywheel shooter, and Limelight 3A or Webcam
HOOD-03Hood follows the shot table, and the hood trim
With a hood, each table row has a third number: the hood.
Needs: Flywheel shooter, and Hood on a servo or Hood on a motor with an encoder
SOM-03Shooting on the move in the simulator - strafe and compare
Before anyone tunes shooting on the move on a real robot (SOM-01, SOM-02), the simulator can show whether the lead goes the right way and how much it helps.
Needs: any robot
TEST-01Test kit - JUnit tests of your Robot.java on the laptop
The test kit gives your robot in five files pretend motors and servos, so a JUnit test on the laptop can do INIT, START and a loop, and check what each motor was sent.
Needs: any robot
DOC-04Lesson 10 from start to finish - record, break and update a test
Lesson 10 teaches simulator tests with the new "Record a test" button.
Needs: any robot
DOC-03Start from zero on a new laptop
"Start from zero" installs Android Studio, gets the robot project and makes a first edit.
Needs: any robot
DOC-02Follow one main-track lesson from start to end
Each lesson builds on your own robot, a few lines at a time.
Needs: any robot
LGT-01Lights - colour rules and a flash per shot
A light lets the drivers see the robot's state without looking at the Driver Station.
Needs: Light (goBILDA RGB or REV Blinkin)
TUR-04Slip-ring turret - round and round, always the short way
A turret with a slip ring (a part that carries the wires through a turning joint) has no wire limits.
Needs: Turret
More
- Which tests have reports so far (the coverage table).
- Found a bug while testing? Bug report form.
- Want to add a test to this list? How to add a test.
Something wrong on this page? Tell us with a short GitHub form.