← Back to Projects
Mechanism Design Trajectory Modeling DFM Robotics Integration

Ping-Pong Ball Launcher

A robot-mountable, variable-angle ping-pong launcher with a single-flywheel + hood architecture, designed from first-principles physics. Trajectory model drove every key spec — hood geometry, motor selection, and the 25° optimal launch angle that beats intuition by 20°.

Ping-Pong Ball Launcher — Full Assembly Render

Design Brief

The objective was to design a robot-mountable launcher that propels a ping-pong ball at least 10 feet across a room. The unit must mount to a standard ISO 9409-1-50-4-M6 robot tool flange (4× M6 on 50 mm PCD), leave room for control electronics, and be mass-producible at low cost. The ball-feed actuation mechanism was treated as out of scope, but the feed location was reserved in the layout. Beyond the brief I set my own targets: shoot further than 10 ft, vary the launch angle, support multi-shot operation, hold the BOM under $100 at 10k units, and design from physics rather than guessing geometry.

Concept Evaluation

Six architectures were considered: centrifugal fling using the robot arm itself, a spring or elastic plunger, a CO₂ pneumatic cannon, a solenoid kicker, dual counter-rotating flywheels, and a single flywheel paired with a curved hood. A weighted decision matrix (range, spin, rate of fire, part count, controllability, precision, cost, reliability) ranked the architectures across the criteria the brief actually rewards.

Winning Architecture

Single flywheel + hood wins on 5 of 8 criteria with a weighted score of 4.375/5, a 0.5 margin over dual flywheel. Ties dual flywheel on spin and rate of fire, beats it on parts count and cost, and crucially gives two independent control parameters: motor RPM (exit speed) and hood angle (trajectory).

Physics-First Design

Most launchers default to a 45° launch angle and a "make it spin somehow" approach. For a 2.7 g, 40 mm ping-pong ball — density of just 84 kg/m³ — those instincts are wrong. Aerodynamics, not gravity, dominate the flight, and the architecture has to be sized to the physics rather than to intuition.

Drag Steals Range. Magnus Gives It Back.

For a heavy projectile in vacuum, range follows R = v² · sin(2θ) / g and peaks at 45°. For a ping-pong ball, both drag and Magnus lift scale with v² but push in different directions. Drag always opposes velocity and shortens the flight; Magnus lift on a backspinning ball points upward, partially canceling gravity and extending flight time.

Free-body diagram of a spinning ping-pong ball in flight
Force balance on a backspinning ball — drag opposes velocity, Magnus lift points upward

This reshapes the geometry of the optimal trajectory. With drag dominating and Magnus lift partially restoring lost range, the optimal launch angle drops dramatically — from the textbook 45° down to roughly 25°. Backspin generation became a hard requirement of the architecture, not a nice-to-have.

How the Hood Generates Backspin

A single rotating flywheel alone gives the ball forward velocity but minimal spin. Adding a stationary curved hood above the flywheel creates the boundary conditions that produce strong backspin: the hood's friction holds the top surface of the ball at v=0 while the flywheel surface drags the bottom of the ball at full surface speed. The differential between top and bottom contact velocities is the spin.

Kinematic diagram of backspin generation between flywheel and hood
Boundary-condition kinematics: ball velocity = Vwheel/2, spin ω = Vwheel/(2 rball)

The hood does double duty: it generates the backspin via that velocity boundary condition, and the arc of the hood surface where the ball releases also sets the launch angle. One geometric feature, two functions — collapsing what would otherwise be two separate subsystems.

Trajectory Model

To turn the qualitative physics into hard specifications, I built a 2D point-mass projectile model and integrated it forward in time using SciPy's RK45 solver (dt = 5 ms, rtol = 1e-9). The model takes motor RPM (0–14,800), launch angle (0°–75°), slip efficiency η (0.45–0.65), ball properties (2.7 g, 40 mm), and air properties (ρ = 1.225, ν = 1.5e-5) as inputs. Forces include gravity, drag (½ρv²CDA), and Magnus lift (½ρv²CLA). Sanity check: with drag and Magnus disabled, the model matches the closed-form vacuum range to under 0.001% across 5 test cases.

Trajectory comparison: vacuum vs drag vs drag+Magnus
Trajectory comparison at v₀ = 9.2 m/s, θ = 25°, spin = 4,394 rpm — Magnus recovers 24% of drag-lost range

At the design point, vacuum range is 7.9 m. Drag knocks that down to 5.0 m (a 37% loss). Magnus lift on the backspinning ball recovers 24% of that loss, putting actual range at 6.2 m. This recovery validates the single-flywheel-plus-hood architecture against dual flywheel — backspin is a feature, not a side effect.

Range versus launch angle sensitivity to slip efficiency
Range vs. launch angle, swept across slip efficiency η = 0.45 – 0.65

What the Model Drove

Every important spec on the launcher came out of the trajectory sweep:

The hood stroke was specified at 15°–55° rather than the obvious 0°–60°. The model showed peak range happens around 25° and falls off steeply above 55°, so there's no benefit to spending actuator stroke at extreme angles. The minimum motor RPM to clear 10 ft is just 7,250 — 49% of the EMAX motor's no-load speed. That left massive throttle headroom and kept the door open to a smaller motor on a future cost-down. Slip-efficiency sensitivity showed the worst-case configuration still hits 4.7 m, so the wheel compression spec could be relaxed to favor wheel longevity over peak performance.

Maximum Range Performance

Three operating regimes were modeled to bracket performance:

20.3 ft
Conservative Design Point
24.2 ft
Realistic Max (No-Load RPM)
28.5 ft
Optimistic Envelope
Maximum range trajectory plot — three operating regimes
Maximum range trajectories — design point, realistic max, and optimistic envelope

Solution Architecture

Five major components, eleven unique off-the-shelf parts, six unique custom-fabricated parts.

Full launcher assembly with major component callouts
Full assembly with major component callouts
01
BLDC Drone Motor
EMAX GTII 2212C, 1000 KV
4S Li-Po, ~14,800 rpm no-load
~50 g, 3 mm shaft, $6 @ 10k
02
Flywheel + Hub
BaneBots T81, 2 × 0.8 in
40A urethane on 3 mm hub
$1.20 @ 10k (wheel only)
03
Variable-Angle Hood
Two bent sheet metal side plates
60–70A urethane liner, 3.4 mm
M2 tool-steel pivot pins
04
Linear Actuator
Actuonix L12-30-100-12-I
30 mm stroke, 100:1, 12 V
Sets hood angle 15°–55°
05
Frame + ISO Mount
Bent AL 5052-H32, 3 mm sheet
4× M6 to robot flange
76.1 g

Key Component Details

Frame — Single Bent Sheet

The frame is a single piece of 3 mm AL 5052-H32 sheet with the ISO 9409 mount pattern integrated directly into the bottom face. At 100 units it's laser-cut and brake-formed; at 10k it transitions to progressive die stamping. That prototype-to-production transition is the largest single cost lever on this part — moving from one-off cutting to a stamping die changes the per-unit economics dramatically.

Frame component CAD render
Frame — single bent sheet with integrated ISO 9409-1-50 mount pattern

Motor — Why a Drone BLDC

The EMAX GTII 2212C is a commodity outrunner BLDC sized for FPV drones. The drone industry has driven these to roughly $10 retail in single quantities and ~$6 at 10k, with predictable performance and standard 3 mm shafts that fit commodity bearings and BaneBots hubs. At the operating point the motor pulls about 3 A continuous against a 10 A continuous rating — 51% headroom in reserve.

Flywheel — Buy Now, Build Later

At 100 units the BaneBots T81 with its 40A urethane and set-screw retention works out of the box: zero modifications, two-day lead time, industry-proven compound. At 10k units, the path is to co-mold the rubber directly onto an aluminum hub — eliminating the set screw and snap ring, tightening balance tolerance, and saving roughly $1/unit. The mold tooling runs ~$6k, so breakeven is around 6k units. Below that volume, off-the-shelf wins.

Hood — Two Functions in One Assembly

The hood's two side plates are the same part, just flipped on install — one SKU, one tool setup, half the inventory. The rubber liner is bolted between them and is the designated wear surface; when it degrades, two screws come off and a replacement goes in. The curved profile maintains uniform compression on the ball regardless of speed, so every shot sees the same nip force.

Cost Structure

The BOM scales from $195/unit at 100 units down to $91/unit at 10,000 units — a 2.15× scale factor driven by mold amortization, tooling transitions, and bulk pricing on commodity parts.

BOM cost composition — 100 units versus 10,000 units
Cost composition shifts dramatically with volume — actuator dominates 10k cost at 66%

At 10k, 66% of unit cost is the linear actuator alone. That single concentration makes the cost-down strategy obvious: replace the off-the-shelf Actuonix unit with a custom assembly built from a NEMA-8 stepper, a Tr-thread lead screw, limit switches, and a driver IC integrated onto the main control PCB. Total custom cost: about $15 versus $60 for the Actuonix. Saves $45/unit and brings total cost from $91 to ~$45. Two secondary levers — replacing the discrete BLDC + ESC with a custom 22 mm BLDC and integrated ESC, and consolidating sheet metal into a single glass-filled-nylon injection-molded shell — recover another $5/unit but require larger production volumes to amortize tooling.

Engineering Calculations

The full design required a calculation list spanning structural, dynamics, bearings/tribology/thermal, and tolerance/integration domains. Most calcs solve cleanly by hand — beam stresses, fastener preload, bearing L10 life, motor torque margin, trajectory dynamics, tolerance stacks. FEA was reserved for three places where closed-form solutions don't capture the geometry: frame modal frequencies (resonance vs. operating RPM), hood plate stiffness under nip pressure, and frame fatigue at the bend radii. Wear life on the hood rubber and flywheel rubber was flagged for empirical qualification rather than analysis — fatigue of urethane in repeated impact contact is hard to model accurately.

GD&T — Frame Drawing

The frame drawing was prepared per ASME Y14.5-2009 with a three-datum scheme: the bottom mount face (A), a dowel-pin hole (B), and the sheet metal thickness face (C). Critical features include the motor mount holes (Ø0.2 MMC positional tolerance — drives rotor concentricity), the hood pivot bore (Ø8 H7, Ø0.3 MMC), and the ISO 9409 4× M6 pattern on 50 mm PCD (Ø0.3 MMC). Default tolerance is ±1.5 mm on undimensioned features, overriding the title block default — non-critical features don't carry inspection cost.

GD&T inspection drawing of the launcher frame
Frame inspection drawing — ASME Y14.5-2009 with three-datum scheme

Design for Manufacturing & Assembly

The assembly counts 17 unique part numbers: 7 custom mechanical parts, 4 drive components, 8 bearings/retaining rings, 1 linear actuator subassembly, and 1 acrylic feed tube — plus 24 fasteners and washers across two sizes. Assembly relies on poka-yoke features rather than careful instructions:

The motor bolt pattern is asymmetric (16 × 19 mm rectangle), allowing only two valid orientations and preventing 90° misinstall. The two hood side plates are the same part — flipped on install, so one SKU and one tool setup serves both. Bearing fits use H7 OD on the bearing and H8 hole in the frame — slip fit with controlled depth, no press required. The hood liner is captive between the side plates: it physically can't come loose without removing both plates first. One M6 hole on the ISO 9409 pattern is held to a tighter tolerance and accepts a dowel pin, locating the entire pattern precisely against the robot flange.

Project Files

The full CAD model and the Python trajectory model are available for download. The Parasolid file is the neutral CAD interchange format and can be opened in SOLIDWORKS, Creo, NX, Inventor, Fusion 360, and most other major CAD packages. The Python script is self-contained and reproduces every figure on this page when run with NumPy, SciPy, and Matplotlib installed.

What's Next

With more development time the priorities are: build a hardware prototype to validate the trajectory model and calibrate slip efficiency η experimentally; FEA-driven sizing to trim weight and power; a designed ball-feed mechanism (out of scope here but the obvious next subsystem); and PID-tuned spin-up to reduce energy lost between successive shots.

← Previous
Battery Door Mechanism
Next →
Differential Swerve Module