# SaltyBot Chassis — Bill of Materials
**Task:** bd-1iy5 / prototype-baseplate
**Rev:** C — 2026-02-28 (vertical stem architecture; batteries on mast carousel)
**Agent:** sl-mechanical

---

## ⚠ Axle Measurement Update (Rev B)

PR #7 (`chassis_frame.scad`) used placeholder values. The table below records the
**caliper-verified** hub motor axle dimensions. All new designs must use these.

| Feature | Measured | PR #7 placeholder | Delta |
|---------|----------|-------------------|-------|
| Axle base diameter (round, near hub) | **16.11 mm** | 14 mm | +2.11 mm |
| D-cut shaft OD | **15.95 mm** | — (not modelled) | new |
| D-cut flat chord | **13.00 mm** | — | new |
| Total axle protrusion | **65.5 mm** | ~60 mm est. | +5.5 mm |
| Base section length | **15.0 mm** | — | new |
| D-cut section length | **43.35 mm** | — | new |
| Tip / shoulder | **3.0 mm** | — | new |
| Bearing seat collar OD | **37.8 mm** | — | new |
| Tire OD | **254 mm** (10×2.125") | 170 mm motor OD only | — |
| Axle CL height above ground | **127 mm** | 310 mm (wrong) | −183 mm |

`chassis_frame.scad` should be updated in a follow-on task to match Rev B values.

---

## Structural / Fabricated Parts

### Prototype Base Plate (`prototype_baseplate.scad`) — Rev C

> Batteries are removed from the base plate. Plate is now compact (680×130mm).
> Stem socket replaces battery tray. See Part B (stem clamp) below.

| # | Part | Qty | Material | Cut size | Notes |
|---|------|-----|----------|----------|-------|
| 1 | Base plate | 1 | 6mm 5052-H32 Al **or** 8mm acrylic | 680×130mm blank | `RENDER="plate_2d"` → DXF |
| 2 | Dropout clamp — lower | 2 | 8mm 6061-T6 Al | 90×70mm blank | Round bore Ø16.51mm; `RENDER="clamp_lower_2d"` |
| 3 | Dropout clamp — upper | 2 | 8mm 6061-T6 Al | 90×70mm blank | D-cut bore; `RENDER="clamp_upper_2d"` |
| 4 | Stem flange ring | 2 | 6mm Al or acrylic | Ø82mm disc | One above + one below plate; `RENDER="stem_flange_2d"` |
| 5 | Vertical stem tube | 1 | 38.1mm OD × 1.5mm wall 6061-T6 Al | 1050mm length | 1.5" EMT conduit is a drop-in alternative |
<<<<<<< HEAD
| 6 | MCU standoff M3×6mm nylon | 4 | Nylon | — | ESP32 BALANCE / IO board isolation (dimensions TBD) |
=======
| 6 | FC standoff M3×6mm nylon | 4 | Nylon | — | ESP32-S3 BALANCE vibration isolation |
>>>>>>> 291dd68 (feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only)
| 7 | Ø4mm × 16mm alignment pin | 8 | Steel dowel | — | Dropout clamp-to-plate alignment |

### Battery Stem Clamp (`stem_battery_clamp.scad`) — Part B

| # | Part | Qty | Material | Notes |
|---|------|-----|----------|-------|
| 8 | Collar half | 2 | PETG FDM (5 perimeters, 40% infill) | Print flat-side-down; mirror 2nd in slicer. Bore Ø38.6mm |
| 9 | Radial arm | 4 | 4mm 5052-H32 Al (laser-cut) **or** PETG FDM | `RENDER="arm_2d"` for DXF with `ARM_THICK=4`; or print at 8mm |
| 10 | Battery cradle | 4 | PETG FDM (4 perimeters, 30% infill) | U-channel, open top; holds 1 pack per cradle |
| 11 | M6×60 SHCS | 4 | SS | 2 collar clamping bolts × 2 sides |
| 12 | M6 hex nut | 4 | SS | Captured in collar nut pockets |
| 13 | M6×12 set screw | 2 | SS, cup-point | 1 per collar half for height lock |
| 14 | M4×20 SHCS | 8 (16 for 4) | SS | Arm-to-collar bolts (2 per arm) |
| 15 | M4×16 SHCS | 8 (16 for 4) | SS | Cradle-to-arm bolts (2 per cradle) |
| 16 | M4 hex nut | 16 (32 for 4) | SS | Nuts for items 14 + 15 |
| 17 | Velcro strap 25mm × 600mm | 4–8 | — | 1–2 per battery pack through cradle slots |

### Full Chassis (`chassis_frame.scad`) — Rev A (placeholder values — pending Rev B update)

| # | Part | Qty | Material | Notes |
|---|------|-----|----------|-------|
| 6 | Main deck plate | 1 | 6mm 5052 aluminium plate, 640×220mm | CNC router or waterjet; all holes per `chassis_frame.scad` |
| 7 | Longitudinal rib (front) | 1 | 4mm 5052 aluminium, 600×40mm | Laser-cut; press-fit into deck slots |
| 8 | Longitudinal rib (rear)  | 1 | 4mm 5052 aluminium, 600×40mm | Same file, symmetric |
| 9 | Motor fork bracket (L) | 1 | 8mm 6061 aluminium | **Update fork slot to Ø16.51mm before cutting** |
| 10 | Motor fork bracket (R) | 1 | 8mm 6061 aluminium | Mirror of item 9 |
| 11 | Battery tray | 1 | 3mm PETG FDM or 3mm aluminium fold | `chassis_frame.scad` — `battery_tray()` module |
| 12 | FC mount plate / standoffs | 1 set | PETG or nylon FDM | Includes 4× M3 nylon standoffs, 6mm height |
| 13 | Jetson Orin Nano Super mount plate | 1 | 4mm 5052 aluminium or 4mm PETG FDM | B01 58×58mm hole pattern |
| 14 | Front bumper bracket | 1 | 5mm PETG FDM | Saddle clamps for 22mm EMT conduit |
| 15 | Rear bumper bracket | 1 | 5mm PETG FDM | Mirror of item 14 |

---

## Motors

| # | Part | Qty | Source / Spec | Notes |
|---|------|-----|---------------|-------|
| 16 | Hoverboard hub motor | 2 | 10×2.125" pneumatic tire, 36V nominal, ~350W | Axle: Ø16.11mm base / Ø15.95mm D-cut / 13mm flat; bearing seat Ø37.8mm — **all caliper-verified** |
| 17 | Motor hall-sensor cable extension | 2 | 6-pin JST-PH 300mm | Route through deck cable slot |
| 18 | Axle lock nut | 4 | M16×1.5 or thread-matched to actual axle tip | Confirm thread at tip before ordering; calipers show Ø≈10mm at tip |

---

## Electronics Mounts

> ⚠️ **ARCHITECTURE CHANGE (2026-04-03):** ESP32 BALANCE (ESP32) is retired.
> Replaced by **ESP32 BALANCE** + **ESP32 IO**. Board dimensions and hole patterns TBD — await spec from max.

| # | Part | Qty | Spec | Notes |
|---|------|-----|------|-------|
<<<<<<< HEAD
| 13 | ESP32 BALANCE board | 1 | TBD — mount pattern TBD | PID balance loop; replaces ESP32 BALANCE |
| 13b | ESP32 IO board | 1 | TBD — mount pattern TBD | Motor/sensor/comms I/O |
| 14 | Nylon M3 standoff 6mm | 4 | F/F nylon | ESP32 board isolation |
| 15 | Anti-vibration grommet M3 | 4 | Ø6mm silicone | Under ESP32 mount pads |
| 16 | Jetson Orin module | 1 | 69.6×45mm module + carrier | 58×58mm M3 carrier hole pattern |
=======
| 13 | ESP32-S3 ESP32-S3 BALANCE FC | 1 | 36×36mm PCB, 30.5×30.5mm M3 mount | Oriented USB-C port toward front |
| 14 | Nylon M3 standoff 6mm | 4 | F/F nylon | FC vibration isolation |
| 15 | Anti-vibration grommet M3 | 4 | Ø6mm silicone | Under FC mount pads |
| 16 | Jetson Orin Nano Super B01 module | 1 | 69.6×45mm module + carrier | 58×58mm M3 carrier hole pattern |
>>>>>>> 291dd68 (feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only)
| 17 | Nylon M3 standoff 8mm | 4 | F/F nylon | Jetson board standoffs |

---

## Battery (Vertical Stem Mount — Rev C)

> Batteries mount VERTICALLY on the stem carousel, **not** on the base plate.
> Each pack stands upright (420mm tall) in a cradle at the end of a radial arm.

| # | Part | Qty | Spec | Notes |
|---|------|-----|------|-------|
| 18 | Battery pack | 2–4 | 24V, **420×88×56 mm** each (caliper-verified) | Snap into battery cradle from above |
| 19 | BMS board | 1 | Matched to cell chemistry | Mount to stem or base plate underside; run wiring down stem |

### Battery stem clamp — configuration guide

| Config | Arm count | Carousel weight | Balance | Notes |
|--------|-----------|-----------------|---------|-------|
| 2-pack | 2 arms, 180° apart | ~1.4 kg | ✅ Symmetric | Minimum configuration |
| 4-pack | 4 arms, 90° apart  | ~2.8 kg | ✅ Symmetric | Maximum practical config |
| 3-pack | 3 arms, 120° apart | ~2.1 kg | ⚠ Asymmetric mass | Needs counter-balance or avoid |

### CG height tuning

Slide entire carousel up/down the stem with M6 collar bolts loosened. Tighten at desired height. Typical balance point (initial estimate): batteries centred at 450–600 mm above base plate. Adjust in ≈50 mm increments during commissioning.

---

## Bumper Rail

| # | Part | Qty | Spec | Notes |
|---|------|-----|------|-------|
| 21 | 3/4" EMT conduit | 2 | 22mm OD, 660mm length | Front and rear bumper rail; bent or straight |
| 22 | Conduit saddle clamp M4 | 6 | 3D-printed integral to bracket (items 9/10) | Back-up: standard pipe clamp 22mm |

---

## Fasteners

| # | Part | Qty | Spec | Use |
|---|------|-----|------|-----|
| 20 | M5×16 SHCS | 16 | ISO 4762, SS | Dropout clamp bolts (4 per clamp × 4) |
| 21 | M5×20 SHCS | 8  | ISO 4762, SS | Stem flange bolts (4 per flange × 2) |
| 22 | M5 hex nut | 24 | ISO 4032, SS | |
| 23 | M4×20 SHCS | 16 | ISO 4762, SS | Arm-to-collar (2 per arm × 4 arms × 2) |
| 24 | M4×16 SHCS | 16 | ISO 4762, SS | Cradle-to-arm (2 per cradle × 4 arms × 2) |
| 25 | M4 hex nut  | 32 | ISO 4032, SS | |
| 26 | M6×60 SHCS  | 4  | ISO 4762, SS | Collar clamping bolts |
| 27 | M6 hex nut  | 4  | ISO 4032, SS | Captured in collar pockets |
| 28 | M6×12 set screw | 2 | ISO 4026, SS cup-point | Stem height lock (1 per collar half) |
| 29 | M3×10 SHCS | 12 | ISO 4762, SS | ESP32 mount + miscellaneous |
| 30 | M3×6 BHCS  | 4  | ISO 4762, SS | ESP32 board bolts (qty TBD pending board spec) |
| 31 | Axle lock nut (match axle tip thread) | 4 | Flanged, confirm thread | 2 per motor |
| 32 | Flat washer M5 | 32 | SS | |
| 33 | Flat washer M4 | 32 | SS | |
| 34 | Ø4×16 dowel pin | 8 | Steel | Dropout clamp alignment |

---

## Tools Required for Assembly

- Torque wrench (M14 axle nuts: 35–40 N·m; M5: 4 N·m)
- M2.5 / M3 / M4 / M5 hex drivers
- Thread locker (Loctite 243 blue for all structural fasteners)
- Dial caliper — verify motor OD, axle flat before machining fork slot

---

## Estimated Masses

| Assembly | Est. mass |
|----------|-----------|
| Aluminium deck + ribs | ~1.1 kg |
| Motor forks (×2 Al) | ~0.4 kg |
| Motors (×2) | ~3.6 kg |
| Battery (6S 4Ah LiPo) | ~0.7 kg |
| Electronics (FC + Jetson + wiring) | ~0.5 kg |
| Bumpers + brackets | ~0.3 kg |
| Fasteners | ~0.2 kg |
| **Total estimate** | **~6.8 kg** |
