The goal
A pivoting intake that deploys over the bumper, spins compliant rollers to grab a game piece, and retracts. Two motions: a pivot (position) and a roller (raw speed).
Step 1 — The pivot
The pivot only needs to fight the intake's own weight (light, ~3-4 lb at a short moment arm), so a NEO 550 (REV-21-1651) or a single NEO through a MAXPlanetary 9:1 + a small chain reduction is plenty. Because the arm is light, you can often skip a full ProfiledPIDController and use a simple position loop with a kG term, but profiling still gives gentler deploys that don't bounce game pieces out.
Mount a hard stop at the deployed position so the mechanism rests on metal, not on motor torque. Use an absolute Through Bore Encoder V2 (REV-11-3174) on the pivot axle for reliable startup angle.
Step 2 — The rollers
Rollers want speed and grip, not precision. Run 2 in compliant wheels on a 1/2 in hex shaft, driven by a NEO 550 or a brushed motor through a light reduction (e.g. 3:1 to 4:1) so surface speed stays high. Set a modest current limit (20-30 A) so a jammed game piece doesn't cook the motor.
Step 3 — Command-based sequencing
The magic is the sequence: deploy, then spin, then sense, then retract. In WPILib command-based:
public Command intakeSequence() {
return Commands.sequence(
pivot.setGoalCommand(DEPLOYED_RAD),
Commands.waitUntil(pivot::atGoal),
rollers.runCommand(0.8) // duty cycle
.until(this::hasGamePiece),
Commands.parallel(
rollers.stopCommand(),
pivot.setGoalCommand(STOWED_RAD)));
}
Step 4 — Sensing the catch
A cheap, reliable game-piece detector is a beam-break sensor or a current spike on the roller motor (current rises when a piece loads the rollers). Either feeds hasGamePiece(). Avoid relying solely on driver timing; an automatic stop prevents intake jams and double-loads.
Step 5 — Mechanical robustness (lessons from real teams)
- Use compliant/squishy wheels so misaligned game pieces still funnel in; rigid wheels reject anything off-center.
- Polycarbonate side guides funnel the piece into the rollers.
- Route the roller motor power and the encoder cable through the pivot with a service loop so repeated deploy/retract cycles don't fatigue the wire. Pivoting intakes are a top source of broken wires mid-event.
Key takeaways
- An intake has two control modes: a light position-controlled pivot and a speed-controlled roller; treat them separately.
- Sequence deploy -> spin -> sense -> retract as a command, and stop automatically on a beam-break or roller current spike.
- Add a hard stop at deploy, use compliant wheels with poly funnels, and route cabling with a service loop to survive repeated pivots.
Go deeper
Lesson quiz
RequiredAnswer all 3 questions correctly to complete this lesson.
01.How does the pivoting roller intake split its two motions in control terms?
02.What command-based sequence handles an intake cycle?
03.Which sensing methods are recommended for automatically detecting a captured game piece?
Answer every question to submit.
All 47 lessons in Mechanical, Build & Pneumatics
- Not started:Mini-Project 1: A Single-Jointed Arm From Math to Motion
- Not started:Mini-Project 2: A Two-Stage Cascade Elevator
- Not started:Mini-Project 3: A Velocity-Controlled Flywheel Shooter
- Not started:Mini-Project 4: A Pivoting Roller Intake
- Not started:Mini-Project 5: Integrating a COTS Swerve Module
- Not started:Pneumatics Won't Fire: A Full Diagnostic Tree
- Not started:The Robot Won't Drive Straight (and Other Drivetrain Sins)
- Not started:Gearboxes That Grenade and Fasteners That Vibrate Loose
- Not started:Closed-Loop Mechanisms That Oscillate, Sag, or Stall
- Not started:Field-Ready Reliability: Inspection, Spares, and the Pit Checklist
- Not started:Characterizing Any Mechanism with SysId
- Not started:Simulation-Driven Design with WPILib Physics Models
- Not started:Motion Profiling and Superstructure Coordination
- Not started:Designing for Weight, Stiffness, and Manufacturability
- Not started:Case Studies: Learning From Open Alliance Robots