AJ Santa CruzPortfolio · Rev 2026.1Cambridge, MA · MIT
← Work

P·14 · Mechanical · Electrical

Ring-Spinner Weapon for an 18 lb Combat Robot

A 3 kJ spinning ring weapon designed by constrained optimization and checked with true FEA, which caught a stress flaw a simpler model hid.

At a glance

  • 3.01 kJstored at a 159 mph (71 m/s) tip speed
  • 5.73 lbweapon mass, minimized under an 8 lb budget
  • SF ≈ 3to yield under the worst modeled tip impact (true FEA)
Role
Weapon designer
Status
In progress
Tools and skills
  • MATLAB
  • Python
  • Constrained optimization
  • Finite element analysis
  • scikit-fem
  • gmsh
  • OpenCASCADE
  • Bézier curve geometry
  • Rotational dynamics
  • Waterjet DFM
CAD of the full combat robot: the chassis with its motors and electronics inside the two-tooth ring weapon

The problem

The weapon is the ring that spins around the robot, stores kinetic energy, and delivers it on impact. The constraints are hard and they pull against each other:

RequirementValue
Kinetic energy at operating speedat least 3.0 kJ
Tip speedabove an engagement floor
Weapon massminimize, within an 8 lb budget
Inner boreat least 285 mm, for packaging and the bearing
Ring web widthat least 7 mm, for the bearing race
Drivetraintwo friction-drive motors, 60 mm cans, 12S, at most 2.5 lb each
Spin-up2 to 3 seconds
Structuresurvive tip impacts without yielding or fracturing
Manufacturingone waterjet-cut plate plus CAM fillets, exportable as a 3D solid
Balancecenter of mass within 1.25 mm of the spin axis

Approach

I wrote a closed-loop design system from scratch that turns those constraints into a manufacturable, structurally checked part:

  1. Parametric geometry (MATLAB). Each tooth is a composite Bézier outline joined tangent (G1) to the ring, with a concave root fillet. Twenty design variables control ring radius, tooth height and width, four Bézier control points, rake, rib flanges and fillet radius.
  2. Constrained global optimizer. A multi-start random search with budget-doubling rounds and local refinement. Every candidate must pass hard gates for energy, tip speed, stress, deflection, balance, reach and manufacturability before it competes on minimum mass.
  3. Fast structural screen. A deliberately conservative model inside the loop: a tapered-cantilever beam sweep of the tooth over 24 load directions and two load envelopes, a ring-web check, centrifugal hoop stress, and a stress-concentration factor from the fillet. It is cheap enough to evaluate 104 to 105 candidates per run.
  4. CAD export (Python). The winning profile goes to DXF and is extruded to a watertight STEP solid with OpenCASCADE, with sliver edges cleaned up so it imports as a solid.
  5. Independent FEA (Python). A 2D plane-stress FEA in scikit-fem on a gmsh mesh of the real waterjet profile.
The optimizer's top three candidate designs
The optimizer's top three candidates, each labeled with polar inertia J, tip radius (mm) and peak screening stress (MPa).

Key design decisions

  • Two teeth, point-symmetric. Two teeth 180° apart on a solid steel ring put the center of mass exactly on the spin axis.
  • Mass at the rim. At a fixed tip speed, kinetic energy rises with the radius of gyration. The optimizer grows the teeth outward instead of thickening the hub.
  • Friction drive, no gears. Two polyurethane-padded motor cans press on the ring’s inner bore, a 4.75:1 ratio. The limit is traction: on a hard hit the drive slips instead of back-driving the motors and ESCs, which protects the electronics.
The final ring-spinner design
The final design: a point-symmetric dual-tooth ring with Bézier teeth and concave root fillets, cut from one 12.7 mm hardened tool-steel plate.

Engineering detail

True FEA

The screen is fast but approximate, so I checked it against a true finite element model: about 20,000 nodes of quadratic triangles, refined at the ring, loaded with the centrifugal body force at 2,600 rpm plus a tip-impact traction. Stress is linear in load, so I superposed the tip force on the spin state and solved for the exact load capacity by bisection.

Load case, fixed borePeak von Mises
Centrifugal only, 2,600 rpm22 MPa
Plus the governing 26.5 kN tip hitabout 530 MPa, against 775 MPa allowable and 1,700 MPa yield
Tip force to reach the allowableabout 37 kN (8,400 lbf)
Tip force to reach yieldabout 82 kN (18,400 lbf), a safety factor near 3

The screen came out about 45% conservative compared with the FEA, the safe direction for a screen. The tooth-to-ring junction is not a hotspot because the tooth joins the ring tangentially, so the fillet is fatigue insurance.

True FEA von Mises field under the governing hit
Von Mises stress under the governing tip hit, from the iteration before the final design (its lightening holes are visible). Peak stress is on the tooth, about 530 MPa, so the result carries to the final hole-free ring.

A combat weapon gets hit from any angle, so I swept the tip load through 360° using two orthogonal unit loads. The response is a two-lobe pattern: worst at the two tangential bending directions and lowest for radial hits. The worst direction raises peak stress only about 5% over a typical hit, and the design stays under the allowable at every angle.

Hit-direction sweep through 360 degrees
Peak stress as the tip load sweeps through 360°, on the same prior iteration. Two lobes, under the allowable at every angle.

Flaws the cross-checks caught

  1. A hidden ligament. With the bore fixed, the model said the weapon was sound. With the bore free (inertia relief, the correct model for a ring that floats on its bearing), it showed a severe stress riser: the lightening holes left only a 1.5 mm ligament to the bore, right where the bearing seats. The fixed-bore clamp had been propping that ligament up. I changed the optimizer’s hole rule to require a real ligament. On this thin web that removes the holes entirely, and they saved little mass anyway.
  2. Mass counted twice. Hole mass was being subtracted twice, under-reporting weapon mass by up to about 2.9 lb and corrupting the minimize-mass objective. I found it because the STEP solid’s volume disagreed with the analytical model. They now agree to 0.15%.
  3. Stresses that weren’t real. The free-body FEA reported 3,000 to 11,000 MPa at the tooth roots. The exported outline had near-180° cusps there, true singularities that grow without bound as the mesh refines. Modeling the manufactured fillet gave convergent geometry.
  4. Fillet backward. An early version drew a convex gusset at the tooth root where the re-entrant corner needs a concave cove. It is now a true tangent arc.

Results

ParameterValue
Kinetic energy3.01 kJ at 2,600 rpm
Tip speed159 mph (71 m/s)
Mass5.73 lb (2.60 kg)
Bore / web / tip radius285 mm / 11.0 mm / about 260.6 mm
Plate12.7 mm hardened tool steel, one waterjet part
Balance0.00 mm center-of-mass offset
Drive motorsabout 250 to 270 KV on 12S, 1.0 to 1.5 kW each during spin-up

What is not solved

  • Tips only. At a 30 mph closing speed, the two-tooth ring wins the race to first contact and usually strikes tip-first. But the 180° gap means that in the worst case an opponent penetrates about 155 mm into a 107 mm tooth zone. Guaranteeing tip-only hits needs about 229 mph (3,750 rpm, past the energy and stress targets) or three or more teeth (against the two-tooth requirement). That trade-off is the builder’s call.
  • Re-running free-body FEA on the final hole-free ring is queued. The FEA figures above are from the prior iteration.
  • Impact is quasi-static. A transient contact study would refine the stresses at the tip contact.

My contribution

I designed the weapon and wrote the whole toolchain: geometry, optimizer, screening model, CAD export and FEA.

Contact