Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions PROJECT_INDEX.md

Large diffs are not rendered by default.

59 changes: 59 additions & 0 deletions airframe/openscad/nacelles/nacelle_pod_50mm_tandem.scad
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,17 @@ SHAFT_CONDUIT_ID= 3.5; // [mm] conduit inner bore
INLET_BELL_L = 27.5; // [mm] inlet bell axial length (was 22.0 × 1.25)
INLET_BELL_FLARE= 3.0; // [mm] extra flare radius at intake lip

// ── Circular intake exterior blend ─────────────────────────────────────────
// The imported canonical shell is asymmetric at the nose. Intersecting that
// shell with a circular bore therefore leaves an oblique, elliptical-looking
// intake rim even though the duct itself is round. This fairing supplies a
// planar circular lip and blends it into the existing shell over the same
// 27.5 mm intake transition. The bore and its area are unchanged.
INTAKE_LIP_R = EDF_BORE_R + WALL_T; // [mm] circular outer lip radius
INTAKE_BLEND_R_PEAK = 38.2; // [mm] below measured shell maximum
INTAKE_BLEND_R_END = 27.0; // [mm] buried in the duct wall
INTAKE_BLEND_L = 90.0; // [mm] reaches the thrust-tube station

// ── Navigation light + harness exit (1.25× scale Z values) ───────────────────
// Rev S1 (2026-07-04, TODO §1.1.3.5): the WS2812C position light was moved from
// the INBOARD (pylon) face to the OUTBOARD (far) face, and its signal wire was
Expand Down Expand Up @@ -588,6 +599,48 @@ module inlet_bellmouth() {
}


// =============================================================================
// ── Module: circular_intake_fairing ─────────────────────────────────────────
// =============================================================================
// Additive rotationally symmetric exterior fairing. Its front annulus is
// planar at Z=0, so the intake opening is circular in the side and front views.
// The outer profile first reaches the measured shell envelope, then tapers
// back into the duct wall before the thrust-tube station. Its termination is
// therefore buried instead of exposing a circumferential cap at the shell.
module circular_intake_fairing() {
N_STATIONS = 64;

rotate_extrude(angle = 360, convexity = 4)
polygon(
points = concat(
[[0, 0], [INTAKE_LIP_R, 0]],
[
for (i = [0 : N_STATIONS])
let(
z_frac = i / N_STATIONS,
rise_frac = min(z_frac / (60 / INTAKE_BLEND_L), 1),
fall_frac = max((z_frac - (60 / INTAKE_BLEND_L))
/ (1 - (60 / INTAKE_BLEND_L)), 0),
rise_smooth = rise_frac * rise_frac
* (3 - 2 * rise_frac),
fall_smooth = fall_frac * fall_frac
* (3 - 2 * fall_frac),
r_at_shell = INTAKE_LIP_R
+ (INTAKE_BLEND_R_PEAK - INTAKE_LIP_R)
* rise_smooth,
r_outer = r_at_shell
+ (INTAKE_BLEND_R_END - r_at_shell)
* fall_smooth,
z_abs = z_frac * INTAKE_BLEND_L
)
[r_outer, z_abs]
],
[[0, INTAKE_BLEND_L], [0, INTAKE_BLEND_L + 0.5]]
)
);
}


// =============================================================================
// ── Module: sleeve_retention_bosses ─────────────────────────────────────────
// =============================================================================
Expand Down Expand Up @@ -1016,6 +1069,12 @@ module nacelle_pod(swirl_dir = SWIRL_DIR) {
// (Intake bell-mouth is now SUBTRACTIVE — see Zone B,
// inlet_bellmouth(); TODO §1.1.3.4.)

// ── Circular intake exterior fairing ─────────────────────
// Establishes a round planar lip before the circular bore and
// blends into the canonical shell over the existing intake
// transition; it does not change the internal duct diameter.
circular_intake_fairing();

// ── CG-pivot keyed 8 mm spar hubs (at PIVOT_Z, Y=0) ──────
pivot_x_face_boss();

Expand Down
64 changes: 64 additions & 0 deletions docs/plans/2026-08-25-002-finish-airframe-components-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,70 @@ open items, not scoped further by this plan:

## Scope Boundaries

## U7. CF-PETG printability and flightworthiness audit

**Goal:** Review every active `.scad` source and published STL in
`airframe/openscad/` and `airframe/stls/` for fabrication in 20% CF-PETG,
starting with `cargo_sect_shell24_2mm_repaired.stl`. The audit must separate
intended solid material from intentional cavities, recesses, mortises,
passthroughs, sockets, and mating clearances, and must not treat a global
watertight result as proof that local wall thickness or interface geometry is
printable.

**First checkpoint:** `cargo_sect_shell24_2mm_repaired.stl`, followed by
`head_cargo_splice_collar.stl`, `cargo_middle_splice_collar.stl`, and
`middle_rear_splice_collar.stl`. The supplied `bow_sensor_faceplate.stl` is
included as the first small-part control. The review expands to all active
OpenSCAD/STL artifacts only after this checkpoint produces a repeatable report
format and identifies the canonical source for each artifact.

**Required evidence for each artifact:**

- [ ] Mesh loads, is non-empty, and passes boundary-edge, non-manifold,
winding, degeneracy, and connected-body checks.
- [ ] Bounding box, volume, mass bracket for 20% CF-PETG, and print orientation
are recorded; structural parts use at least 4 perimeters and 40% infill.
- [ ] Local wall thickness is sampled at the shell, floors, roofs, ribs, boss
annuli, collar walls, and other load paths. Any value below the applicable
20% CF-PETG design minimum is a finding, not silently accepted.
- [ ] Every cavity, recess, mortise, passthrough, bore, socket, and interface
is classified as intentional or unintended, with its mating artifact and
clearance requirement identified.
- [ ] Unsupported overhangs, horizontal holes, bridges, trapped support
volumes, thin islands, sharp first-layer edges, and print-split joints are
assessed for the selected FDM orientation.
- [ ] Flight-critical parts receive a load-path disposition. A mesh-only pass
is not a flightworthiness approval; material data, print orientation,
coupon testing, fastener/adhesive details, and assembly inspection remain
explicit gates where not verified.

**Cargo-shell first-pass findings to resolve or document:**

- [ ] Confirm the nominal 2.0 mm foam-fill skin thickness against local mesh
measurements, including the cargo aperture, joint faces, wing-root
mortises, spar bore, GPS/camera features, ribs, bosses, and splice-collar
seats.
- [ ] Confirm which internal volumes are intentionally open for payload/cable
routing and which are meant to be solid CF-PETG, including the shell's
merged structural positives and negative cutters.
- [ ] Verify the supplied splice collars are printable, correctly oriented,
and mechanically coupled to the shell; specifically check collar wall
thickness, bore/shoulder geometry, trapped cavities, and bonded joint
surfaces.
- [ ] Record mass and CG deltas for any geometry disposition that changes the
current flight configuration.

**Verification contract:** run `python3 tools/validate_stls.py` for the
published inventory, run the shell-specific structural checks, and retain a
machine-readable audit report with artifact path, measured values, findings,
and `PASS`, `CONDITIONAL`, or `BLOCKED` disposition. A `PASS` requires both
global mesh integrity and local printability evidence; unverified material or
flight-load assumptions remain `CONDITIONAL`.

**Dependencies:** U7.1 cargo shell measurement and intent map; U7.2 splice
collar interface review; U7.3 full OpenSCAD/STL inventory; U7.4 corrective
geometry and regeneration; U7.5 looped QA and flightworthiness closeout.

**In scope:** Phase 5 units U1–U6 (full implementation); Phase 6/7/9/11
(capture and light triage only, not implementation, per the owner's request
for a plan covering "the rest of the airframe components").
Expand Down
210 changes: 210 additions & 0 deletions docs/plans/2026-08-26-001-nacelle-esc-intake-integration-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
---
title: "plan: Integrate nacelle ESCs and refine circular intakes"
date: 2026-08-26
plan_type: feature+mechanical
execution: geometry+serviceability
---

# Plan: Nacelle ESC integration and circular intake refinement

**Target repo:** Serenity-UAV

**Scope:** Integrate two Open-Secure-ESC boards into each tandem-EDF nacelle,
define a repeatable nacelle/ESC/EDF service sequence, compare nacelle removal
against spar removal, and refine the nacelle intake to a circular Ø50 mm flow
path with a constant-area transition into the EDF housing.

## Confirmed inputs

- Two ESC boards per nacelle, one at each EDF station.
- The committed KiCad board is 32.0 × 66.1 mm with 1.6 mm PCB thickness.
- The board has no mounting-hole pattern and no encoded component-height or
thermal-interface data; these must be measured or sourced before a bracket is
frozen.
- The existing BOM entry describing a generic 25 g ESC mounted in a 20 mm hub
bore is stale and must not drive geometry.
- The nacelle uses a 50 mm internal duct, removable stator and aft-spider
sleeves, an 8 mm rotating spar, F688ZZ root bearing, MF128ZZ wingtip bearing,
and two fixed Ø7 mm wing EDF conduits.
- Normal service should remove the nacelle before either ESC is removed.
- Intake target is a circular Ø50 mm flow section. A Ø50 mm section has area
$A = \pi(25\,\mathrm{mm})^2 \approx 1,963.5\,\mathrm{mm}^2$.

## Architecture decision to validate

Use nacelle-first service as the preferred architecture:

1. Power-isolate the aircraft.
2. Disconnect the wing-to-nacelle harness at the nacelle-off boundary.
3. Release accessible nacelle axial retention and the keyed spar interface.
4. Slide the nacelle off the rotating spar while leaving the spar, bearings,
wing, servo indexing, Hall reference, and wing conduits installed.
5. Remove both EDF assemblies and their associated ESCs on the bench.

Evaluate spar removal as a fallback only. It would disturb bearing seats, servo
indexing, Hall calibration, harness routing, and wing access, so it must be
quantified rather than assumed equivalent.

The final interface must use a positive-stop shoulder and keyed torque transfer.
Friction-fit-only retention is prohibited by the airframe fabrication rules.

## Implementation units

### U1 — Verify the ESC mechanical envelope

Inspect the committed files under
`Open-Secure-ESC/builds/6s/50A/CAN_485_faraday/kicad/` and extract:

- Board outline and thickness
- Component heights on both sides
- Connector and cable projection
- Mounting-hole status
- Thermal surfaces and cooling requirements
- Actual mass and center-of-gravity contribution

Add a machine-readable report and fail the fit gate when a critical value is
unknown. Reconcile the 32.0 × 66.1 mm committed outline with any stale
25.4 × 60.1 mm documentation before bracket design.

### U2 — Audit current nacelle and EDF service geometry

Build a service-envelope model from:

- `airframe/openscad/nacelles/nacelle_pod_50mm_tandem.scad`
- `airframe/openscad/nacelles/edf_stator_sleeve.scad`
- `airframe/openscad/nacelles/edf_aft_spider_sleeve.scad`
- `airframe/openscad/port_tilt_spar_assembly.scad`
- `airframe/openscad/wings/wings_s1223_revo.scad`
- `airframe/FreeCAD-scripts/serenity_assembly.py`

Include EDF1 and EDF2, thrust tube, stator spar fairing, nozzle, keyed hubs,
shaft and bearings, harness port, tool envelopes, and both fixed wing conduits.
Resolve the conflicting EDF1 insertion/tool-access descriptions by checking
the actual motor and fastener access. Preserve the documented EDF2 nozzle-end
retention sequence.

### U3 — Compare removal architectures

Create a parametric motion study for:

- **Option A: nacelle off spar.** Verify inboard and outboard removal paths,
axial retention, keyed torque transfer, positive stops, harness release, and
clearance from wing, pylon, bearings, spar, nozzle, and thrust tubes.
- **Option B: spar out of bearings.** Quantify wingtip/root bearing access,
servo uncoupling, Hall recalibration, angular re-indexing, harness disruption,
and reassembly inspection.

Select the direction with measured clearance and the lowest disturbance to the
calibrated rotating assembly. Do not move the wing or bearing seats solely to
make the service path easier to model.

### U4 — Add parametric ESC seats and service interfaces

Create an OpenSCAD source for one ESC seat per EDF station, mirrored for port
and starboard. Include:

- Board envelope plus measured fit tolerance
- Positive longitudinal and lateral stops
- Captive fasteners or a documented removable retention method
- Vibration restraint
- Connector and wire-bend relief
- Cooling clearance and thermal path
- Access only available after nacelle removal

Add separate EDF1 and EDF2 lead exits and strain relief while preserving the
fixed double-Ø7 mm wing conduits. Do not route high-current ESC conductors
through the rotating spar; its hollow route remains reserved for the nav-light
wiring.

Register the ESCs, seats, retainers, and service hardware in the FreeCAD
assembly using the existing nacelle-local transform and tilt functions. Update
the BOM only after the physical board data and printed geometry are verified.

### U5 — Refine the circular intake

Measure the published port and starboard nacelle meshes at the intake. Compare
the full-resolution external silhouette against the official blueprint pack.
Classify the apparent elliptical feature as an actual flow boundary, an
outer-shell projection, or a legacy/intermediate artifact before cutting mesh.

Preserve the canonical outer mold line and the existing internal EDF, stator,
spar-fairing, and wiring geometry unless measurements prove interference.
Implement a circular Ø50 mm internal flow entrance and a constant-area
transition into the EDF housing.

For sampled axial stations, report:

- Section shape
- Effective flow area
- Equivalent/hydraulic diameter
- Wall thickness
- Deviation from 1,963.5 mm²
- Local slope/curvature changes
- Obstruction from spar fairing, wiring, or structural features

An external expanding bellmouth may preserve the canonical silhouette, but it
must not be described as constant-area flow. The constant-area requirement
applies to the effective internal duct.

Validate the intake for 20% CF-PETG printability, including lip thickness,
overhangs, trapped supports, print split joints, and EDF insertion clearance.
If the canonical shell and exact constant-area path conflict, preserve the
canonical exterior and record the aerodynamic deviation as conditional for
owner review.

#### Fine tune the circular intake flange to the canonical shell.
The current shape intersects the canonical curve at multiple z values, creating a wavy profile.

### U6 -- Verify ESC cable clearance for rotation through full tilt range.

ESC wires are forward of the pivot, and therefore will experience tension and binding during the nacelle tilt. the 10AWG wires need room to move.

### U7 — Regenerate and close out

Regenerate port/starboard nacelle geometry and new ESC hardware through the
existing source/Makefile pipeline. Re-bake only artifacts that are not already
in hull coordinates. Update the owning WBS/TODO files, root tracking files,
`PROJECT_INDEX.md`, service documentation, and `current-specification/bom_revS.csv`.

Record mass and CG changes, print orientation, material, wall thickness,
fasteners, and unresolved primary-source gates.


## Verification contract

1. The ESC report matches the committed 32.0 × 66.1 mm board outline and
explicitly reports missing height, mounting-hole, and thermal data.
2. The selected nacelle-removal path has zero solid overlap at all sampled
positions and leaves the wing, spar, and bearings installed.
3. Both ESCs remain inaccessible until nacelle removal and are removable on the
bench without dismantling the constant-area duct or damaging EDF wiring.
4. EDF1 and EDF2 installation/removal sequences are executable with documented
tool directions and fasteners.
5. Run the changed-geometry gates:

```text
python3 tools/validate_stls.py
python3 tools/wing_root_deconflict.py
python3 tools/wing_internal_clearance.py
python3 tools/wing_spar_carrythrough.py
python3 tools/cargo_bay_envelope.py
python3 tools/landing_gear_wing_clearance.py --proud
```

6. The intake report confirms circular Ø50 mm sections, approximately
1,963.5 mm² effective area, documented bounded deviation, smooth transition
into the EDF housing, and no unacceptable local obstruction.
7. Headless OpenSCAD and FreeCAD renders are inspected at cruise, intermediate,
and hover tilt configurations.
8. New Python tooling passes syntax/static analysis and every external claim is
reconciled against the appropriate `REFERENCES.md` entry.

## Open gates

- ESC component-height envelope, connector projection, mounting arrangement,
mass, and thermal interface.
- Final nacelle removal direction and axial-retention hardware.
- EDF1 motor insertion direction and tool reach.
- Intake measurement tolerance and any CFD or bench-flow evidence required to
support a no-separation claim.
- Printed-part and airframe mass/CG deltas after geometry is frozen.
Loading
Loading