RC Aircraft Design

Overview

Designing and building small fixed-wing RC aircraft from scratch rather than from a kit. The work runs the full conceptual design process: write the requirements, size the aircraft against them with a constraint analysis, pick an airfoil, draw the geometry, print and cut the parts, and fly it.

design_process requirements 1. Requirements written sizing 2. Conceptual sizing constraint analysis, 11 figures requirements->sizing synthesis 3. Synthesis, CAD two airframes on Onshape sizing->synthesis analysis 4. Analysis flow5, both airframes synthesis->analysis construction 5. Construction foam and 3D print analysis->construction flight 6. Flight test both flown, both crashed construction->flight flight->requirements
Every stage of the process has now happened, and the loop has closed once. What the first aircraft failed at came back as a design decision on the second.

1 / 5

Completed Sandpiper high-wing RC aircraft

The CAD is public on Onshape: UAV Sandpiper and Wing.

Requirements and Sizing

The design started from a written requirements document rather than a sketch. Line-of-sight flying under Canada's RPAS Basic certification, no payload, no autopilot: loiter at 6 m/s, 8 m turn radius, 30 minute endurance, takeoff in 5 m of ground roll, +4g to −2g limit load, under 500 g, wingspan at or under 1 m, foam and 3D print, $200 budget.

Several of those numbers moved during sizing, and the document records why. Loiter speed rose from 4 m/s because the original left no feasible region on the constraint diagram. The wind envelope carries a note that the 15 m/s figure is structural survival, not an operating envelope: at a 6 m/s loiter the aircraft cannot make ground progress against much more than 6 m/s of wind.

To size it I wrote a small Python package. It runs the conceptual design pipeline top to bottom: configure, constrain, resolve, plot. Every requirement becomes a curve on a wing loading versus power loading diagram, and five constraints bound the feasible region: stall, level flight, climb, turn, and takeoff ground roll. One config file holds every parameter, so exploring a variant means editing one file and re-running.

1 / 4

Aircraft wing-loading and power-loading constraint diagram

The design point resolves to a 1652 cm² wing at 99.5 cm span, 16.6 cm mean chord, aspect ratio 6, stalling at 5.69 m/s. The Reynolds number at loiter is about 71,000. These are sizing outputs on assumed efficiencies, not measured performance.

Airfoils

At a chord Reynolds number near 71,000, most standard airfoil data does not apply, and the sections that behave well are the ones designed for model aircraft. Selection and polar work was done in XFLR5, and the SD7037 was carried into the wing geometry.

Onshape's HAVF feature wants airfoils as two degree-6 Bézier curves rather than coordinates, so I wrote a converter. Given any .dat file it fits the 26 parameters by numerical optimisation, running differential evolution to find the basin, then L-BFGS-B, then Nelder-Mead to polish. Every control point stays inside [0, 1], so the curve cannot bulge past the trailing edge. On the AG25 it fits to an RMS error of 0.0016% of chord, and because the result is analytic it never shows the faceting a low-point-count file produces in CAD.

The Airframes

The flying wing is a swept parametric model: 40 variables driving 151 features, so the planform re-solves from a handful of numbers. 370 mm semi-span, 140 mm root chord tapering to 60 mm, 22° of sweep, on a 400 mm carbon spar, built as a printed frame rather than a solid print.

Sandpiper is the conventional one: high wing, conventional tail, tricycle gear, tractor propeller. The assembly carries 53 instances, built around a spine spar with printed wing dominoes threaded onto it. Power is a 3S 1500 mAh pack through a 50 A ESC, with MG90S servos on the surfaces. The wing splits off for transport, which was a requirement from the start.

Sandpiper was modelled aerodynamically in flow5 before it was built, with the fin thinned, the control surfaces properly defined, and ballast placed in the nose to pull the centre of gravity forward. That last decision was not an academic one.

Build, Revisions and Flight Test

Foam for the flying surfaces, 3D print for the frames and mounts. Weight is the binding constraint, so the electronics stack was weighed as a unit during the build: servos, ESC, receiver, battery, connectors, spars and printed fuselage sections came to 400.2 g together.

1 / 4

Sandpiper RC aircraft on the beach before its test flight

An earlier revision produced a written list of defects that drove much of the current design. The tail needed stiffening. Misaligned hinge and horn axes were introducing a dead band around neutral, so the axes had to be brought into line. The fuselage read as concave even though it was straight, so it needed a slight convex curve to look right. And it wanted bigger wheels and tricycle gear instead of a tail dragger.

Both aircraft have flown, and neither survived it.

The flying wing failed outright on its first flight, because its centre of gravity was wrong. On a tailless aircraft that is a stability failure rather than a handling complaint. There is no tail to recover the pitch authority, so once the balance is too far aft there is nothing left to argue with. Sandpiper carries nose ballast for that reason.

Sandpiper did better. It took off unassisted, using a beach as the runway, which is the one requirement in the document it can be said to have met. Handling was poor from the start and it eventually crashed.

The handling problem was a positive feedback loop in the controls. Instead of damping a disturbance, the response fed it, so the aircraft felt unstable in the air and got harder to hold rather than easier. It was flyable in the sense that it left the ground, and unpleasant in every sense after that.

mpg3@sfu.ca, linkedin · Updated 2026-08-13