Shot planner: aim the ball machine
Tap the court to set where the ball should land, then choose speed and spin. The planner solves the launch angles and the two wheel speeds, with drag, spin lift and the net taken into account.
Ball machine at the left baseline, player on the right. Yellow: target. Dashed line: the ball's path.
Does a moving catch net work? What the simulation says
Each cell is 300 simulated club-level returns: struck from the player's back court at 50–100 km/h with 0–2,500 rpm topspin, landing in the singles court. The model includes 120 fps cameras with 5 cm position noise, 100 ms from frame to motor, and a base accelerating at 5 m/s². The share of returns caught:
| Net width | Fixed net | Base 1 m/s | Base 2.5 m/s | Base 4 m/s |
|---|---|---|---|---|
| 1.5 m | 19% | 45% | 80% | 91% |
| 2.0 m | 23% | 50% | 84% | 94% |
| 3.0 m | 31% | 64% | 91% | 97% |
| 4.0 m | 46% | 79% | 96% | 99% |
Simulation, not a measurement on a real court. The assumed spread of returns, the camera noise and the drive limits are all inputs; rerun with your own: tennisbots catch-study --net-width 3 --base-speed 2.5. None of the simulated returns cleared a 2.5 m frame.
Ball collector: route planner
Scatter some balls and watch the rover's route: nearest ball first, then untangled with 2-opt. The robot's own planner also routes around keep-out zones and empties the hopper when it is full.
Manufacture the collector: download the fab package
Everything a fabricator needs, generated from one parametric CAD model: laser-cut DXF files (flat 5052 aluminium, true millimetres, no bends or tapped holes), STL files for printed PETG parts, STEP files for any CAD or CAM tool, a cut list, a full bill of materials with every fastener, and assembly drawings. The build checks every part against every other for collisions, every bolt hole against its mate, and that the wheels, caster and drum all touch the ground.
Download the collector manufacturing package (zip, 0.6 MB) or browse the files (GitHub shows the STLs in 3D). Upload the DXFs to any laser-cutting service, print or order the STLs, and buy the rest from bom.csv.
Design v0.2, not yet built: the first build will find things to fix. Change any dimension and regenerate with python -m otr_cad collector (parametric CAD source). The feeder's package is next.
Build one
- Feeder with moving catch net: dimensions, mechanism, sensing, bill of materials (roughly $1,200 in parts, estimated).
- Ball-collecting rover: rod-cage pickup drum, drive, keep-out zones, bill of materials (roughly $700, estimated).
- Electronics and pin map, ESP32 firmware, and safety.
- Software:
pip install "git+https://github.com/duncan-haywood/oss-monorepo#subdirectory=ventures/open-tennis-robots", thentennisbots aim --x 9 --y -2 --speed 22 --topspin 1200.
Sell one, or buy one
The licence lets anyone build and sell these robots, branded as their own, with no royalty. The seller's guide covers kits versus assembled machines and the safety, radio, battery transport and insurance work. A listing tool turns one config file into an Amazon listing on your own seller account. It refuses to go live until the compliance items are confirmed.
Running a club or a court business? The pickleball and padel facility pro forma models courts, rates, memberships and break-even. It runs in your browser and uploads nothing.
No one sells a ready-made one yet. If you build and sell one, open an issue and we will link you here.
Questions
Can I build my own tennis ball machine?
Yes. The feeder uses two counter-rotating wheels on BLDC motors, a hopper with a single-ball gate, servos for elevation and azimuth, a Raspberry Pi for planning and an ESP32 for motor control. The bill of materials, wiring, pin map, firmware and planning software are all in the repository under the MIT licence. It is a v0.1 design that has been simulated, not yet built and tested.
How does a two-wheel ball machine make topspin and backspin?
The ball is pinched between two wheels stacked one above the other. If both spin at the same surface speed, the ball leaves flat at roughly their average speed. If the top wheel turns faster, the top of the ball is pushed forward and it leaves with topspin; a faster bottom wheel gives backspin. The planner above shows both wheel speeds, and the calibrate function fits your machine's real slip from a few measured shots.
How does the catch net know where my return will go?
Two cameras on top of the net frame see the ball. A Kalman filter estimates its position and velocity from each frame, and a flight model with drag, spin lift and the bounce predicts where it will cross the plane of the net. About twenty times a second, the base is told to drive there. In the simulation above, a 3 m net on a base that moves at 2.5 m/s caught far more returns than the same net standing still.
Is there a robot that picks up tennis balls?
This project's collector is one you can build: a small differential-drive rover pushing a rod-cage drum, the mechanism hand-pushed ball mowers use, which squeezes balls in between spring wires and holds about 118. It finds balls with a camera and plans the shortest route, or sweeps the court in lanes when it has no camera. It never drives through keep-out zones around the player, the ball machine or a coach. Its laser-cut, printed and STEP files are ready to download.
How much does it cost to build?
The bills of materials add up to roughly 1,200 US dollars for the feeder with its catch net and roughly 700 for the collector. These are rough planning estimates, not quotes. The battery, motors and net frame are the largest items. Check current supplier prices before you buy.
Can I sell tennis robots built from these designs?
Yes. Everything is MIT-licensed, so you can build, brand and sell kits or assembled machines with no royalty. You are the manufacturer. The seller's guide lists the safety, radio, battery transport and insurance work involved, and the listing tool builds an Amazon listing from one config file and submits it through your own Selling Partner API account.
Is a homemade ball machine safe?
Only if you build it carefully. Launcher wheels at several thousand rpm and balls at over 100 km/h can injure people. The design includes a hard-wired emergency stop, wheel guards, a firmware watchdog that stops every motor if the controller goes quiet, a feed interlock and command limits. You are still responsible for building, testing and operating your machine safely.