The goal#
A 2-stage cascade elevator that lifts a 12 lb carriage 36 in. We'll size the drum, pick parts, and tune the gravity feedforward.
Step 1 — Rigging and travel#
In a cascade elevator each stage is driven by the previous one, so the carriage moves N times the first-stage motion (N = number of moving stages). With 2 moving stages, the carriage moves 2x the rope drawn onto the drum. To get 36 in of carriage travel you must spool 18 in of rope per side.
Step 2 — Force and motor sizing#
Force to lift the carriage: F = m * g = 5.44 kg * 9.81 = 53.4 N (~12 lbf). With a 1.5 in diameter drum (r = 0.019 m), and the 2x cascade multiplier doubling the load felt at the drum, drum torque is roughly F * r * 2 ≈ 53.4 * 0.019 * 2 = 2.0 Nm.
Use two NEO Vortex motors (REV-21-1652, 3.6 Nm stall each) on a shared shaft through a MAXPlanetary 9:1 cartridge. Two motors at 9:1 give huge margin so the elevator accelerates fast and holds easily. Set each controller to a 40 A smart current limit; with two motors that's an 80 A combined draw cap, which is sane against a 120 A main breaker budget.
Step 3 — Control with ElevatorFeedforward#
Unlike an arm, gravity on an elevator is constant (no cosine term), so kG is a single voltage that holds the carriage at any height. Constructor order is (kS, kG, kV, kA).
private final ProfiledPIDController pid =
new ProfiledPIDController(2.0, 0.0, 0.0,
new TrapezoidProfile.Constraints(1.5, 4.0)); // m/s, m/s^2
private final ElevatorFeedforward ff =
new ElevatorFeedforward(0.0, 2.28, 3.07, 0.41); // kS, kG, kV, kA
@Override
public void periodic() {
double pos = drumEncoder.getDistanceMeters();
double pidV = pid.calculate(pos);
double ffV = ff.calculate(pid.getSetpoint().velocity);
leftMotor.setVoltage(pidV + ffV);
rightMotor.setVoltage(pidV + ffV); // follower
}
The gains kG=2.28, kV=3.07, kA=0.41, kP=2.0 are the exact worked values from WPILib's vertical-elevator tuning tutorial (that tutorial omits kS for simplicity, so measure your own kS with SysId). Re-characterize all gains for your real elevator.
Step 4 — Tuning order#
WPILib's elevator tutorial sequence: set everything to 0, raise kG as high as possible without the elevator drifting upward, then kV to match the straight (constant-velocity) segments of the motion plot, then kA to match the curved (accelerating) segments, then kP until the actual position overshoots, then back off 20%.
Step 5 — Mechanical safety#
Add a hard bottom limit switch and a software soft limit. Cascade elevators can pinch fingers and crash stages; always test under reduced velocity constraints (~0.3 m/s) first. Use a constant-force spring or surgical tubing to offload gravity so a code fault doesn't slam the carriage down.
the part worth keeping
Key takeaways
- A 2-stage cascade elevator moves the carriage 2x the rope spooled; account for this multiplier in both travel and effective drum load.
- Elevator gravity is constant, so ElevatorFeedforward's kG is a single holding voltage with no cosine term; WPILib's tutorial gives kG=2.28, kV=3.07, kA=0.41, kP=2.0 (and omits kS, so measure it).
- Tune kG -> kV -> kA -> kP (back off 20% after overshoot), and always add a bottom limit switch plus reduced-velocity first tests.
Mechanical, Build & PneumaticsWorked Examples & Mini-Projectslesson 2 of 5
Keep going
Take the quiz+10 XP with an accountMore in Worked Examples & Mini-Projects
where this came from
Sources and corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed, in public, in the corrections log.
sources and further reading
- docs.wpilib.orgWPILib Tuning a Vertical Elevator
- frcdesign.orgFRCDesign Cascade Elevators
- github.wpilib.orgWPILib ElevatorFeedforward API
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 16 min readFRC Elevator and Arm Design: Staging, Rigging, Motors, Gravity, and SafetyA primary-source FRC guide to designing elevators and arms: cascade vs continuous rigging, staging, motor and gear-ratio sizing, gravity math, and safe holding./blogread it
- 7 min readFRC Motion Profiling Explained: TrapezoidProfile and ProfiledPIDControllerHow WPILib's TrapezoidProfile and ProfiledPIDController smooth mechanism motion, how to pick velocity and acceleration constraints, and when a profile beats plain PID./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01In a 2-stage cascade elevator, how far does the carriage travel relative to the rope spooled onto the first-stage drum?
02Why does ElevatorFeedforward use a single kG holding voltage with no cosine term, unlike ArmFeedforward?
03What gain-tuning order does WPILib's vertical-elevator tutorial recommend?
Answer every question to submit.
All 47 lessons in Mechanical, Build & Pneumaticsopenclose
01 / prerequisites
02 / drivetrains
03 / power-transmission
04 / structure-materials-fasteners
05 / mechanisms-fabrication-assembly
06 / pneumatics-fundamentals
07 / pneumatic-components
08 / build-wire-program
09 / safety-rules-testing
10 / worked-examples-mini-projects
- Not read yet:Mini-Project 1: A Single-Jointed Arm From Math to Motion
- Not read yet:Mini-Project 2: A Two-Stage Cascade Elevator
- Not read yet:Mini-Project 3: A Velocity-Controlled Flywheel Shooter
- Not read yet:Mini-Project 4: A Pivoting Roller Intake
- Not read yet:Mini-Project 5: Integrating a COTS Swerve Module
11 / common-mistakes-troubleshooting
- Not read yet:Pneumatics Won't Fire: A Full Diagnostic Tree
- Not read yet:The Robot Won't Drive Straight (and Other Drivetrain Sins)
- Not read yet:Gearboxes That Grenade and Fasteners That Vibrate Loose
- Not read yet:Closed-Loop Mechanisms That Oscillate, Sag, or Stall
- Not read yet:Field-Ready Reliability: Inspection, Spares, and the Pit Checklist
12 / advanced-techniques-case-studies
- Not read yet:Characterizing Any Mechanism with SysId
- Not read yet:Simulation-Driven Design with WPILib Physics Models
- Not read yet:Motion Profiling and Superstructure Coordination
- Not read yet:Designing for Weight, Stiffness, and Manufacturability
- Not read yet:Case Studies: Learning From Open Alliance Robots