Skip to content
Merged

Legs #190

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
39d8b9e
fix(wings): replace S1223 airfoil table with validated UIUC coordinates
Stab-Rabbit-coding Aug 24, 2026
cd3c8db
fix(wings): loft wing_solid() with a true vertex-matched polyhedron (…
Stab-Rabbit-coding Aug 24, 2026
7bfccd3
fix(fuselage): re-cut spar interface to an F688ZZ bearing seat (CARGO…
Stab-Rabbit-coding Aug 24, 2026
9e36be8
fix(tools): correct stale spar-bore label copy-paste in wing_root_dec…
Stab-Rabbit-coding Aug 24, 2026
0df12b5
fix(wings): two-rod bonded CF couple replaces the tenon's load path (…
Stab-Rabbit-coding Aug 25, 2026
ff7f050
docs: point AGENTS.md workflow section at docs/solutions/
Stab-Rabbit-coding Aug 25, 2026
a156aca
fix(wings): re-bake both wings against corrected airfoil; fix midline…
Stab-Rabbit-coding Aug 25, 2026
f150546
fix(nacelles): re-derive tilt-servo torque requirement; correct RAIL-…
Stab-Rabbit-coding Aug 25, 2026
c713c05
docs(refs): add REF-MAT-001, first peer-reviewed CF-PETG property cit…
Stab-Rabbit-coding Aug 25, 2026
f0f18d3
fix(wings): CF thwart pair (U4) + full plan closeout (U8, SPAR-01/WIN…
Stab-Rabbit-coding Aug 25, 2026
f64b050
fix(landing-gear): relieve fwd tie-rod boss locally, close LG-25
Stab-Rabbit-coding Aug 25, 2026
f25d311
feat(freecad): parametric per-side nacelle tilt; retarget assembly ou…
Stab-Rabbit-coding Aug 25, 2026
081dfad
fix(freecad): tilt-driven nozzle petal state; retire stale iris STL
Stab-Rabbit-coding Aug 25, 2026
6951d4c
fixed the fuselage
Stab-Rabbit-coding Aug 25, 2026
0c323a4
fix(mesh): repair non-manifold sleeve/fin STLs blocking clean FreeCAD…
Stab-Rabbit-coding Aug 26, 2026
3b3ff6c
docs(structural): nose-high skid re-derivation finds a real rod-sitin…
Stab-Rabbit-coding Aug 26, 2026
db3c876
docs(structural): supersede tensile-proxy allowable with real flexura…
Stab-Rabbit-coding Aug 26, 2026
8581b69
fix(landing-gear): close LG-26 rod-bore mis-siting; nose-high FOS to …
Stab-Rabbit-coding Aug 26, 2026
4ab29c9
fix(bom): specify CF-PETG at 20% fiber fraction, not a bare "CF-PETG"
Stab-Rabbit-coding Aug 26, 2026
0b04b77
docs(plans): update avionics finish plan; add EMI/RF design-and-test …
Stab-Rabbit-coding Aug 26, 2026
8073e52
fix(lint): remove f-prefix from wing_spar_carrythrough.py strings lac…
Stab-Rabbit-coding Aug 26, 2026
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
4 changes: 3 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,9 @@ both via Commo.

- Read this file and the matching subsystem `AGENTS.md` before starting a task; check
`TODO.md` and recent git history for context; verify any citation you use against
`REFERENCES.md`.
`REFERENCES.md`. `docs/solutions/` holds documented solutions to past problems (bugs,
design patterns, workflow lessons), organized by category with YAML frontmatter
(`module`, `tags`, `problem_type`) — worth a search when working in an area it covers.
- New standards citation: look it up by REF-ID first; if absent, add it to `REFERENCES.md`
with a validated URL and exact section, then cite the REF-ID. Never guess a section number.
- Keep `PROJECT_INDEX.md` current for active files; when a file is archived, move its entry to
Expand Down
9 changes: 5 additions & 4 deletions ARCHIVE_INDEX.md

Large diffs are not rendered by default.

47 changes: 28 additions & 19 deletions PROJECT_INDEX.md

Large diffs are not rendered by default.

139 changes: 136 additions & 3 deletions REFERENCES.md

Large diffs are not rendered by default.

17 changes: 6 additions & 11 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@
- [ ] Verify 4130 / 17-4 PH / 7075 allowables vs MMPDS/AMS (REF-MAT-*)
- [ ] Add 4130 corrosion-finish spec (zinc/cad plate) to BOM/build guide
- [ ] Verify AK7455 off-axis geometry + pinout vs datasheet (REF-SENSOR-*)
- [ ] ASTM D3039/D695 coupon test: CF-PLATE-2MM bending allowable (thwarts
built at FOS 8.5/8.7 vs the conservative 300 MPa stand-in only)

### 0.10 Update and correct documentation touching every non-archived file.

Expand Down Expand Up @@ -86,9 +88,10 @@ numeric order.)*

→ detail: `airframe/fuselage-mid/WBS.md` §1.1.1 (3/3)

- [ ] ★ CARGO-01 payload won't fit past the wing spar (BLOCKER)
- [ ] CARGO-02 shell bores Ø12.3 for a spar the wing retired (8.3)
- [ ] ★ CARGO-03c coupon-test CF-PETG: >=15MPa tenon, else 2nd spar
- [ ] CARGO-03c follow-up: coupon-test CF-PETG fusion/bearing (>=15MPa unlocks
the `enlarged_tenon` alternative) — the default two-rod tie-rod couple
is BUILT and does not block on this (`airframe/fuselage-mid/WBS.md`
§1.1.1.2 CARGO-03c, 2026-08-24)
- [ ] head_shell24.stl
- [ ] cargo_sect_shell24.stl
- [ ] Cargo gondola shell
Expand Down Expand Up @@ -133,13 +136,6 @@ numeric order.)*

→ detail: `airframe/wings-nacelles/WBS.md` §1.1.2

- [ ] ★ WING-01 S1223 section self-intersects at x/c 0.742 (BLOCKER)
- [ ] SPAR-01 spars stop at the wall; CF thwarts fore/aft of bay
- [ ] SPAR-02 DS3225 24.5 vs 25 kgf·cm req (re-derive); RAIL-2 2.3A
- [ ] Re-render + re-bake both wings — Rev S1b tip OML + Rev S1c Hall
(THICKNESS_SCALE_TIP 1.25→1.45, thickness-only section scaling); baked wing
STLs and docs/img/wing_rev_r1a_sections.png are stale

#### 1.1.3 — Nacelles
→ detail: `airframe/wings-nacelles/WBS.md` §1.1.3

Expand Down Expand Up @@ -259,7 +255,6 @@ numeric order.)*
- [ ] LG-13 Define wire-end retention detail at bay bosses
- [ ] LG-02 Bay mounting integration: backing plates, flank conform…
- [ ] Assess foot grip on concrete/asphalt
- [ ] LG-03 CF rod channel in middle_canonical_shell24.scad rear skid…
- [ ] LG-06 Elastic bench check: quarter-AUW fixture, 1.5 ft drop
- [ ] LG-07 Confirm avionics enclosure shock rating
- [ ] LG-11 Coupon-test CF-PETG
Expand Down
31 changes: 25 additions & 6 deletions WBS.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,8 @@ see docs/WBS.md §0.10.2.)*
- [x] Access panel frames + covers (24" Rev R)
- [x] 49 MHz (Part 15 §15.235) wire posts
- [x] Verify head-cargo mating boss positions in slicer — SUPERSEDED,…
- [ ] ★ CARGO-01 payload won't fit past the wing spar (BLOCKER)
- [ ] CARGO-02 shell bores Ø12.3 for a spar the wing retired (8.3)
- [x] ★ CARGO-01 payload won't fit past the wing spar (BLOCKER)
- [x] CARGO-02 shell bores Ø12.3 for a spar the wing retired (8.3)
- [x] ★ CARGO-03 wing root mortise now penetrates — CLOSED
- [x] ★ CARGO-03b tenon/mortise on one datum — CLOSED
- [ ] ★ CARGO-03c coupon gates tenon vs second spar (15 MPa)
Expand Down Expand Up @@ -293,9 +293,9 @@ see docs/WBS.md §0.10.2.)*
- [x] EDF cableway added
- [x] Fuselage spar-interface mismatched — station RESOLVED (Rev S1b)
(spar DIAMETER Ø12.3 vs 8.3 still open — see §1.1.1 CARGO-02)
- [ ] ★ WING-01 S1223 section self-intersects at x/c 0.742 (BLOCKER)
- [ ] SPAR-01 spars stop at the wall; CF thwarts fore/aft of bay
- [ ] SPAR-02 DS3225 24.5 vs 25 kgf·cm req (re-derive); RAIL-2 2.3A
- [x] ★ WING-01 S1223 section self-intersects at x/c 0.742 (BLOCKER)
- [x] SPAR-01 spars stop at the wall; CF thwarts fore/aft of bay
- [x] SPAR-02 DS3225 torque re-derived (aero+inertia only, gravity nulled by CG pivot) -- DS3225 clears at ~7.3% margin, no part change; 6 V tilt-servo rail resized to 2.3A/servo (RAIL-2 is unrelated -- winch/Observer rail, corrected citation)
- [x] SPAR-04 Hall tip jog crosses the spar bore — CLOSED

#### 1.1.3 — Nacelles
Expand Down Expand Up @@ -360,7 +360,7 @@ see docs/WBS.md §0.10.2.)*
- [ ] Assess foot grip on concrete/asphalt
- [x] Rev R1.4 corner V-brace (landing_leg_assy.scad) is retired
- [x] Rev R4 closed-ring wire fuse (wire_loop_fuse.scad) is retired
- [ ] LG-03 CF rod channel in middle_canonical_shell24.scad rear skid
- [x] LG-03 CF rod channel in rear skid arms (superseded by LG-26)
- [x] landing_legs_hull_r1.stl is orphaned
- [ ] LG-06 Elastic bench check: quarter-AUW fixture, 1.5 ft drop
- [ ] LG-07 Confirm avionics enclosure shock rating
Expand All @@ -374,6 +374,8 @@ see docs/WBS.md §0.10.2.)*
*(closed 2026-08-09 — 4 ft adopted)*
- [ ] LG-18 Mass-reduction pass (leg frame / bay / thigh)
- [ ] LG-19 Styling refinement pass vs REF-CAD-002 (cosmetic)
- [x] LG-25 Fore bay frame vs U5 tie-rod boss: 12mm proud (relieved boss)
- [x] LG-26 Rear skid CF-rod bore misses the skid tube (fixed)
- [ ] Render overview SVGs using FreeCAD TechDraw

#### 1.1.5 — Non-Printable Component Placeholders
Expand Down Expand Up @@ -1087,6 +1089,23 @@ BOM tables (not checkbox tasks) — referenced, not duplicated here:
- [x] rear_shell24_2mm_repaired.stl — 15 bodies, all wt=True
- [x] middle_shell24_2mm_repaired.stl — 10 bodies, all wt=True
- [x] dorsal_antenna_fin.stl — 3 bodies, all wt=True
- **MESH FIX 2026-08-25** (surfaced by `airframe/freecad/assembly/
SerenityAssembly.FCStd` failing to open cleanly — "mesh data
structure has some defects"): re-measured, the published file
actually carried 7 bodies — the 3 real ones this line recorded, plus
4 degenerate zero-area single-triangle fragments not caught by a
per-body watertight check (each fragment IS trivially "watertight"
alone; the whole-file `trimesh.is_watertight` was False). Two of the
3 real bodies also had inverted (negative-volume) winding. Fixed:
dropped the 4 degenerate fragments, corrected winding
(`trimesh.fix_normals`), unioned the 3 real bodies via `manifold3d`
(same primitive as the sleeve fix above) — result is 1 body, 22
faces (was 56 total across all 7), fully watertight, volume 2800 mm³
matching the largest single real body exactly (the smaller box and
the mast were both fully contained within its footprint — genuine
duplicate/leftover fragments, not distinct features; visually
re-verify this reads as the intended flat blade fin, not a
mistakenly-collapsed multi-part design, before next print).
- [x] cargo_sect_shell24.stl — 190 bodies, all wt=True

### 6.3 — Rev S Checkpoint (2026-07-04)
Expand Down
36 changes: 33 additions & 3 deletions airframe/FreeCAD-scripts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ AIRFRAME := $(ROOT)/..
SCAD := $(AIRFRAME)/openscad
STLS := $(AIRFRAME)/stls
SCRIPT := $(ROOT)/serenity_assembly.py
OUTPUT := $(AIRFRAME)/Serenity-Assembled.FCStd
OUTPUT := $(AIRFRAME)/freecad/assembly/SerenityAssembly.FCStd

# ---- OpenSCAD flags -------------------------------------------
# --hardwarnings: treat parameter warnings as errors
Expand All @@ -71,13 +71,22 @@ FUSELAGE_STLS := \
# (bevel housing, bevel pair, Pinion A, Nozzle Drive Pinion, sector gear) is
# DELETED and archived (airframe/archive/); replaced by the spar-crank pushrod
# (nacelle_pushrod_crank.stl). See docs/NOZZLE_DRIVE_TRADE.md.
# Rev T3 (2026-08-09, airframe/wings-nacelles/WBS.md SS1.1.3.1): the nozzle
# flaps shingled into master+seal pairs, and the combined "asm" preview
# split into two named-endpoint renders (FLAP_PHI = PHI_CLOSED / PHI_OPEN)
# so serenity_assembly.py can pick the one matching each nacelle's
# configured tilt (see nozzle_iris_stl() there). The old single
# nacelle_nozzle_iris.stl (no suffix, always PHI_CLOSED) is superseded by
# -closed.stl and no longer built here or imported by the assembly.
NACELLE_STLS := \
$(STLS)/nacelles/edf_stator_sleeve.stl \
$(STLS)/nacelles/edf_aft_spider_sleeve.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_iris.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_iris-closed.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_iris-open.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_throat.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_ring.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_flap.stl \
$(STLS)/nacelles/nozzles/nacelle_nozzle_flap_seal.stl \
$(STLS)/nacelles/nacelle_pushrod_crank.stl

# -- Wings (SCAD-sourced part-local prints; the port/stbd wing
Expand Down Expand Up @@ -150,10 +159,20 @@ $(STLS)/nacelles/edf_aft_spider_sleeve.stl: \
-o $@
@echo "[stl] $@"

$(STLS)/nacelles/nozzles/nacelle_nozzle_iris.stl: \
$(STLS)/nacelles/nozzles/nacelle_nozzle_iris-closed.stl: \
$(SCAD)/nacelles/nacelle_nozzle_iris.scad
@mkdir -p $(dir $@)
$(OPENSCAD) $(SCAD_FLAGS) \
-D 'FLAP_PHI=PHI_CLOSED' \
$(SCAD)/nacelles/nacelle_nozzle_iris.scad \
-o $@
@echo "[stl] $@"

$(STLS)/nacelles/nozzles/nacelle_nozzle_iris-open.stl: \
$(SCAD)/nacelles/nacelle_nozzle_iris.scad
@mkdir -p $(dir $@)
$(OPENSCAD) $(SCAD_FLAGS) \
-D 'FLAP_PHI=PHI_OPEN' \
$(SCAD)/nacelles/nacelle_nozzle_iris.scad \
-o $@
@echo "[stl] $@"
Expand Down Expand Up @@ -187,6 +206,17 @@ $(STLS)/nacelles/nozzles/nacelle_nozzle_flap.stl: \
-o $@
@echo "[stl] $@"

# Rev T3 (2026-08-09) seal flap -- 4 per nozzle, lapped 0.2 mm radially
# outboard of the 4 master flaps (PRINT-NACELLE-FLAP-MASTER/-SEAL, 4+4).
$(STLS)/nacelles/nozzles/nacelle_nozzle_flap_seal.stl: \
$(SCAD)/nacelles/nacelle_nozzle_iris.scad
@mkdir -p $(dir $@)
$(OPENSCAD) $(SCAD_FLAGS) \
-D 'RENDER_PART="flap_seal"' \
$(SCAD)/nacelles/nacelle_nozzle_iris.scad \
-o $@
@echo "[stl] $@"

# Rev T (2026-07-18, Option B): the tilt-to-nozzle gear train (Pinion A,
# Nozzle Drive Pinion, sector gear, bevel pair, bevel housing) is DELETED and
# archived; the nozzle spar-crank pushrod replaces it (RENDER_PART="crank"
Expand Down
Loading
Loading