2026: OpenSCAD robot and remote, physical joint limits, model in Unity

hardware/openscad/ rebuilds the broken Fusion models as OpenSCAD:
body (top/bottom plate, standoffs, battery bay, switch), legs (coxa
bracket, femur link, tibia, horn adapters, TPU socks, servo cables),
the whole robot, and the remote (shell, lid, Nextion 3.5", JH-D400X-R4
sticks, 18650 UPS board, IMU, Teensy 4.0, USB-C breakout). Every part
was checked by slicing against the original STEP solids; the original's
bugs are fixed and listed in PLANNING.md.

The robot now uses a hexagon leg layout (corner legs 60 deg round from
the mid legs; the corner coxa brackets need turning on their splines).
Physical limits from a collision sweep of the model are in Config.h:
per-leg coxa limits and LEG_CLEARANCE_MM 56 (a leg is 55.2 mm wide at
the joints); the sim API exports them (version 7). sim_smoke passes.

Unity loads the model (export_unity.py -> Resources/OpenScadModel,
OpenScadModel.cs builds a new rig in place of the old scene's robot).
The PCB model's mounting holes now use the exact EasyEDA grid. README
shows renders of both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-11-14 12:14:32 +01:00
1 parent b1c94e4149
commit 91b5b99fd5
42 files changed
+1560 -20

No files matched your search

@@ -68,8 +68,9 @@ y_mm = (3330.7087 - y_eda) * 0.254
- Outline: 46.0 × 89.0 mm, black soldermask, 1.6 mm FR4 (the OBJ's 2.54 mm
"slab" is just the export; the physical board is standard).
- Four M3 clearance holes (⌀ 4 mm), 5 mm in from each edge (hole grid
35.78 × 78.96 mm).
- Four M3 clearance holes (⌀ 4 mm) at (5.00, 5.04), (40.78, 5.04),
(5.00, 84.00), (40.78, 84.00): hole grid 35.78 × 78.96 mm, centred at
(22.89, 44.52), slightly off the board centre (23, 44.5).
- Component placements (pad-group centres from the EasyEDA JSON — these
are the exact (x, y) the SCAD uses). All in mm from the board's
bottom-left corner.
@@ -21,7 +21,10 @@ CORNER_R = 1.0;
/* [Mounting holes] */
HOLE_DIA = 4.0; // M3 clearance
HOLE_INSET = 5.0;
// Exact EasyEDA HOLE positions; the right/bottom insets are 5.22/5.04 mm,
// not 5, so the grid is 35.78 x 78.96 mm (the body's PCB bosses use it).
HOLES = [[5.00, 5.04], [40.78, 5.04], [5.00, 84.00], [40.78, 84.00]];
HOLE_GRID_CENTER = [22.89, 44.52];
/* [Rendering] */
SHOW_COMPONENTS = true;
@@ -55,9 +58,7 @@ module board_outline_2d() {
}
module mounting_holes_2d() {
for (x = [HOLE_INSET, BOARD_W - HOLE_INSET],
y = [HOLE_INSET, BOARD_H - HOLE_INSET])
translate([x, y]) circle(d = HOLE_DIA);
for (h = HOLES) translate(h) circle(d = HOLE_DIA);
}
module pcb() {