Autonomous Nerf Targeting Turret

A Nerf Rival Hera stripped to its bones and rebuilt into an autonomous pan-tilt tracking turret.

In Progress

The goal is simple: hit a moving target in the air with computer vision and closed-loop PID control. I am building everything from scratch, including CAD, mechanical design, electronics, and software. Mechanical phases one through three are done, and the firing chassis is in progress.

PythonOpenCVFreeCADElectronicsCADROS
Phase 01Complete

Learning Electronics + CAD

Before touching hardware, I needed a stronger foundation. I could wire simple microcontroller projects, but I was not ready to design a full control system end to end.

I learned electronics from a mix of sources. Practical Electronics for Inventorsby Scherz and Monk became my reference because it is practical and specific. I paired it with Ben Finio's online circuits course to build intuition, then filled gaps with YouTube videos on motor drivers, H-bridges, and PWM. I also spent time on signal fundamentals to understand why a quadrature encoder is worth using instead of a simple hall-effect sensor.

FreeCAD and the learning curve

I picked FreeCAD because it is free and parametric, which matters when every part goes through multiple iterations. The learning curve is steep. Part Design and Part are different workflows, and they do not always cooperate. I learned that the hard way when external geometry references broke after edits that looked harmless.

FCGear took trial and error too. Gear objects start outside Part Design bodies, so you cannot directly use their faces for pockets or Boolean cuts. The reliable workaround was to union the gear into a solid, then import it as a "Base Feature" so Part Design operations worked again.

Phase 02Complete

Pan Axis: Platform and Ring Gear

The base plate

The base plate is the stationary foundation of the pan axis: 256 x 256 x 15 mm, printed in PLA. It seats the lazy susan bearing, houses the drive motor under the plate, provides mounting points for the riser column, and routes wires through a 40 mm center bore to the rotating platform.

The bearing pocket was my first lesson in not trusting nominal dimensions. The bearing is listed as an "8-inch" lazy susan, which nominally means 203.2 mm. The actual OD measured 200.7mm. I ran three test prints: 203.7mm was too loose, 201.5mm was too tight, 202.6mm seated correctly. That number is locked in.

The motor housing required the same iterative process. The JGB37-520 gearbox body measures 36.5mm in diameter, but the housing that works is 37.0mm outer counterbore and 26.5mm inner through-hole. The motor shaft sits 7mm off-center from the gearbox centerline, so spinning the motor body within its pocket changes the effective distance to the ring gear, and that rotation is the belt tensioning mechanism.

The ring gear and drive system

The ring gear mounts to the inner ring of the lazy susan bearing and is what the GT2 belt actually drives. Final specs: 280 teeth, 2mm pitch, 178.25mm pitch diameter, 179.75mm OD, 184mm flange diameter, and 7.2mm height with 2mm flanges on both faces to keep the belt from walking off under load. A 40-tooth motor pulley driving the 280-tooth ring gear gives a 7:1 reduction. At 333 RPM off the motor, the output is roughly 285°/sec of pan rotation.

Riser Feet

3D-printed feet that hold the bearing platform off the ground and provide mounting points for the riser column system.

drag to rotate ↕↔

Base Platform

The stationary foundation plate. Houses the lazy susan bearing pocket, the motor mount, and routes wires through a 40mm center bore.

drag to rotate ↕↔

GT2 Ring Plate

Mounts onto the bearing's inner ring. 280-tooth GT2 gear teeth run around the perimeter, the belt drives this plate, and the turret builds on top.

drag to rotate ↕↔

Phase 03Complete

Weapon Teardown: Studying the Hera's Internals

The Nerf Rival Hera is a solid starting point. The Rival line uses 25mm rubber balls rather than foam darts, which are consistent, spherical, and predictable in flight. Taking it apart was more instructive than expected.

The shell is mostly structural packaging around three functional subsystems: the flywheel cage that accelerates the ball, the pusher mechanism that feeds balls in one at a time, and the magazine. The stock trigger mechanically links both the flywheel motor switch and the pusher cam. All of that gets replaced in the final build.

What actually matters

The flywheel cage is self-contained. Two motors sit symmetrically on either side of the ball path and the gap between the wheels sets muzzle velocity. Tighter means more compression, more spin transfer, faster ball.

The pusher mechanism deserves specific attention. It is not a simple solenoid. It is a mechanical flywheel system. A small gear runs along the flywheel axle gear, and each trigger pull rotates this pusher wheel exactly 60 degrees through a cam-and-detent mechanism. That 60° turn advances one ball from the magazine into the flywheel gap. The same motors that accelerate the ball also power the feed cycle, and the geometry guarantees one ball per trigger pull regardless of trigger speed.

In the autonomous build, the trigger circuit gets replaced entirely. The flywheel motors run continuously when targeting is active, and a separate actuator controls the pusher rotation on command from the fire control logic.

The proton pack feed system

The magazine feeds straight up into the bottom of the flywheel cage, which works well for the feed system I am designing. Rather than using the stock spring magazine, the plan is a "proton pack" style pneumatic reservoir: a sealed canister that mounts on the stationary base, pressurized by a small fan, that pushes balls up through flexible tubing into the gun. This keeps all the weight on the non-rotating base, routes the tube through the 40mm center bore, and gives the system an effectively unlimited feed capacity compared to a fixed magazine. The vertical inlet on the Hera means no awkward 90° bend in the tubing.

The battery pack is the worst part of the stock design for this application: heavy, lives at the back of the grip, and the grip goes on the rotating platform. In the rebuild, all power electronics and the ball reservoir move to the stationary base.

Phase 04In Progress

Firing Chassis: Housing the Extracted Mechanism

With the firing mechanism extracted and internals understood, the next step is building a chassis around it. The stock shell gets thrown out. What replaces it needs to hold the flywheel cage at the correct alignment, bolt to the rotating pan platform, and leave room for the tilt hardware in the next phase. It also needs to stay light because all of it sits on the rotating assembly.

The alignment part is what I'm thinking hardest about. The flywheel gap defines a fixed ball path. The chassis has to hold that line precisely relative to the tilt axis pivot, or the turret shoots in the wrong direction at every tilt angle. Get it wrong in CAD and you're reprinting the whole chassis. Currently in CAD.

What comes next.

Phase 05Upcoming

Tilt Axis

U-yoke bracket supporting the firing chassis near its center of mass. 608ZZ skate bearings on an 8mm steel shaft to reduce stiction that PID loops struggle with. Same JGB37-520 motor and GT2 belt drive as the pan axis.

Phase 06Upcoming

Electronics Integration

Two-tier system: Raspberry Pi on the rotating platform handles vision and sends only pan/tilt angles downstream over UART. ESP32 on the stationary base runs the PID loop against encoder feedback. Power and signal pass through the 40mm center bore via a capsule slip ring.

Phase 07Upcoming

Vision + Targeting

OpenCV-based object detection. Point-and-shoot mode before any predictive lead. The Pi stays on the rotating platform so USB camera data never has to cross the slip ring.

Phase 08Upcoming

Kalman + PID Intercept

The endgame. Ballistic trajectory prediction from camera input, feeding a Kalman filter that outputs an intercept coordinate. PID loops on both axes snap to that coordinate before the target arrives.

Robotics background: DOLL Labs internship (2021), autonomous navigation stack for TurtleBot3 using ROS and OpenCV. Long-term interest, not a new hobby.