New chassis design files for the SaltyRover rough-terrain variant: • saltyrover_chassis_r2.scad — Deck plate (500×480×6mm Al, laser-cut DXF), 4× M3-adjustable pivot brackets, 4× CSI corner camera mounts (45° outward, 20° down), D435i front bracket (8° tilt), stem collar. All RENDER modes for STL and DXF export included. • rover_spring_arm.scad — Trailing-arm spring suspension (×4). Pivot on M8 bolt; captured 14mm OD compression spring (50mm free, ~5 N/mm); open-end axle dropout slot with retainer cap. Provides 25mm bump + 15mm droop travel. Bearing-seat recess for caliper-verified 37.8mm collar OD. • rover_electronics_bay.scad — PETG electronics bay (240×200×80mm internal). FC standoffs 30.5×30.5mm M3 and Jetson Orin 58×49mm M3 — shared SaltyLab swappable pattern. Ventilation slots all 4 walls + lid. Lid integrates 100mm RPLIDAR A1M8 tower (58mm BC, matched to rplidar_mount.scad). Split-print halves for 220mm beds included. • rover_chassis_r2_BOM.md — Full BOM, mass estimate (frame ~2.15kg; reduce to <2kg by setting DECK_T=5), assembly sequence, critical dimensions. Sensor positions: RPLIDAR top-centre on bay lid, D435i front, 4× IMX219 at deck corners. Shares 30.5mm FC + 58mm Jetson + Ø25mm stem patterns with SaltyLab for swappable electronics. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
329 lines
12 KiB
Markdown
329 lines
12 KiB
Markdown
# SaltyRover Chassis Rev 2 — BOM & Assembly Notes
|
||
**Issue: #109 Agent: sl-mechanical Date: 2026-03-01**
|
||
|
||
---
|
||
|
||
## Overview
|
||
|
||
Rev 2 adds spring suspension, an enclosed electronics bay, and corner CSI cameras
|
||
to the SaltyRover platform (originally designed in issue #73).
|
||
Sensor head, RPLIDAR, D435i, and vertical stem are **shared with SaltyLab** — no changes.
|
||
|
||
```
|
||
Top view (schematic):
|
||
|
||
+Y (forward)
|
||
│
|
||
[CSI] ┌────┴────┐ [CSI]
|
||
◉──┤ ├──◉ ← front axles (suspension arms)
|
||
│ [Orin] │
|
||
│ [ Bay ] │
|
||
│ [RPLIDAR tower]
|
||
│ [ FC ] │
|
||
◉──┤ ├──◉ ← rear axles (suspension arms)
|
||
[CSI] └────┬────┘ [CSI]
|
||
│
|
||
D435i →
|
||
|
||
Deck footprint: 500 × 480 mm (Y × X)
|
||
Track (axle C/C): 540 mm
|
||
Wheelbase (axle C/C): 340 mm
|
||
Ground clearance: 55 mm (static sag; 30 mm at full compression)
|
||
Overall width (tyre edge to tyre edge): ~810 mm
|
||
Overall height (deck to RPLIDAR top): ~317 mm
|
||
```
|
||
|
||
---
|
||
|
||
## File Index
|
||
|
||
| File | Description | Part | Qty |
|
||
|------|-------------|------|-----|
|
||
| `saltyrover_chassis_r2.scad` | Deck plate + pivot brackets + sensor brackets | Laser cut + 3D print | See below |
|
||
| `rover_spring_arm.scad` | Spring suspension trailing arm + retainer cap | 3D print | 4× arm + 4× cap |
|
||
| `rover_electronics_bay.scad` | Electronics bay body + lid (with RPLIDAR tower) | 3D print | 1× body + 1× lid |
|
||
| `rover_motor_mount.scad` | Motor axle L-bracket (Rev 1, unchanged) | 3D print or CNC | 4× |
|
||
| `rover_battery_tray.scad` | Under-deck battery slide tray (Rev 1) | 3D print | 1× |
|
||
| `rover_stem_adapter.scad` | Stem-to-deck collar adapter (Rev 1) | 3D print | 1× |
|
||
| `rplidar_mount.scad` | RPLIDAR anti-vibration ring (shared) | 3D print | 1× |
|
||
| `realsense_mount.scad` | D435i bracket (integrated into chassis r2) | — | — |
|
||
| `imx219_mount.scad` | IMX219 radial arm on sensor_head (unchanged) | — | — |
|
||
|
||
---
|
||
|
||
## Part A — Deck Plate (`saltyrover_chassis_r2.scad` → `deck_2d`)
|
||
|
||
| # | Spec | Qty | Notes |
|
||
|---|------|-----|-------|
|
||
| A1 | 6 mm 5052-H32 aluminium, 500×480 mm blank | 1 | Waterjet or CNC router. 6 mm preferred (vs 8 mm Rev 1) for weight target. |
|
||
| A1-alt | 8 mm PETG FDM, split in two halves, joined with M5 lap bolts | 1 | Prototype only — expect 1.5× weight, 0.5× stiffness |
|
||
|
||
**Deck plate weight estimate:** 6 mm Al, ~50% lightening → **≈ 1.15 kg** ✓
|
||
|
||
Export DXF:
|
||
```bash
|
||
openscad saltyrover_chassis_r2.scad -D 'RENDER="deck_2d"' -o saltyrover_r2_deck.dxf
|
||
```
|
||
|
||
---
|
||
|
||
## Part B — Pivot Brackets (`saltyrover_chassis_r2.scad` → `pivot_bracket_stl`)
|
||
|
||
Each bracket provides: M8 pivot for suspension arm + spring guide boss + M3 adjustment slots.
|
||
|
||
| # | RENDER | Qty | Material | Settings |
|
||
|---|--------|-----|----------|----------|
|
||
| B1 | `pivot_bracket_stl` | 4 | PETG or PC | 5 perims, 60% gyroid |
|
||
| B1-alt | `pivot_bracket_2d` | 4 | 8 mm 6061-T6 Al | CNC router / waterjet |
|
||
|
||
CNC export:
|
||
```bash
|
||
openscad saltyrover_chassis_r2.scad -D 'RENDER="pivot_bracket_2d"' -o rover_pivot_bracket.dxf
|
||
```
|
||
|
||
**Fasteners — Bracket to Deck:**
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| B-f1 | M3×16 SHCS | 8 | Bracket to deck (2× per bracket) through slotted deck holes |
|
||
| B-f2 | M3 nyloc nut | 8 | Under-deck retention (accessible from below before deck install) |
|
||
| B-f3 | M3 flat washer | 16 | Both sides |
|
||
|
||
**Fasteners — Suspension pivot:**
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| B-f4 | M8×50 SHCS | 4 | Pivot pin (bracket clevis → trailing arm) |
|
||
| B-f5 | M8 nyloc nut | 4 | Pivot retention |
|
||
| B-f6 | M8 flat washer | 8 | Both sides of clevis |
|
||
| B-f7 | Flanged IGUS GFI-0810-10 bushing | 4 | Pivot arm bearing (optional, reduces wear) |
|
||
|
||
---
|
||
|
||
## Part C — Spring Suspension Arms (`rover_spring_arm.scad`)
|
||
|
||
| # | RENDER | Qty | Material | Settings |
|
||
|---|--------|-----|----------|----------|
|
||
| C1 | `arm_stl` | 4 | PC (Polycarbonate) recommended; PETG acceptable | 5 perims, 60% gyroid infill |
|
||
| C2 | `retainer_stl` | 4 | PETG | 4 perims, 40% infill |
|
||
|
||
Export:
|
||
```bash
|
||
openscad rover_spring_arm.scad -D 'RENDER="arm_stl"' -o rover_spring_arm.stl
|
||
openscad rover_spring_arm.scad -D 'RENDER="retainer_stl"' -o rover_spring_retainer.stl
|
||
```
|
||
|
||
**Compression Springs (×4):**
|
||
|
||
| # | Spec | Qty | Notes |
|
||
|---|------|-----|-------|
|
||
| C-s1 | OD 14 mm, wire Ø 1.5 mm, free length 50 mm, spring rate ~5 N/mm | 4 | Lee Spring LCI 014M 05 S or equivalent |
|
||
| C-s2 | *(Stiffer alternative)* OD 14 mm, rate ~8 N/mm | 4 | For heavier payloads >3 kg |
|
||
|
||
**Retainer fasteners:**
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| C-f1 | M3×12 SHCS | 8 | Retainer cap to arm (2× per arm; self-taps into PETG) |
|
||
|
||
---
|
||
|
||
## Part D — Electronics Bay (`rover_electronics_bay.scad`)
|
||
|
||
| # | RENDER | Qty | Material | Settings |
|
||
|---|--------|-----|----------|----------|
|
||
| D1 | `bay_stl` | 1 | PETG | 4 perims, 30% gyroid |
|
||
| D1-alt | `front_half` + `rear_half` | 1+1 | PETG | For 220 mm bed printers (split at Y=0 centreline) |
|
||
| D2 | `lid_stl` | 1 | PETG | 4 perims, 30% gyroid |
|
||
|
||
Export:
|
||
```bash
|
||
openscad rover_electronics_bay.scad -D 'RENDER="bay_stl"' -o rover_elec_bay.stl
|
||
openscad rover_electronics_bay.scad -D 'RENDER="lid_stl"' -o rover_elec_bay_lid.stl
|
||
# For 220 mm beds:
|
||
openscad rover_electronics_bay.scad -D 'RENDER="front_half"' -o rover_elec_bay_front.stl
|
||
openscad rover_electronics_bay.scad -D 'RENDER="rear_half"' -o rover_elec_bay_rear.stl
|
||
```
|
||
|
||
**Bay-to-deck fasteners:**
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| D-f1 | M3×12 SHCS | 10 | Bay body to deck through floor flanges |
|
||
| D-f2 | M3 flat washer | 10 | Under head |
|
||
| D-f3 | M3×8 BHCS | 4 | Lid retention (corner screws self-tap into bay rim) |
|
||
|
||
**Electronics internal (FC + Jetson standoffs — built into bay body):**
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| D-f4 | M3×8 SHCS | 8 | FC mount to bay standoffs (4×) + Jetson to bay standoffs (4×) |
|
||
| D-f5 | M3 flat washer | 8 | Under heads |
|
||
| D-f6 | Anti-vibration M3 grommet | 4 | FC isolation (silicone, M3, same as rplidar_mount.scad) |
|
||
|
||
---
|
||
|
||
## Part E — CSI Corner Camera Brackets (`saltyrover_chassis_r2.scad` → `csi_mount_stl`)
|
||
|
||
| # | RENDER | Qty | Material | Settings |
|
||
|---|--------|-----|----------|----------|
|
||
| E1 | `csi_mount_stl` | 4 | PETG | 4 perims, 30% infill |
|
||
|
||
Export:
|
||
```bash
|
||
openscad saltyrover_chassis_r2.scad -D 'RENDER="csi_mount_stl"' -o rover_csi_mount.stl
|
||
```
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| E-f1 | M2×6 SHCS | 8 | CSI camera PCB to bracket (2× per camera) |
|
||
| E-f2 | M3×8 SHCS | 8 | Bracket to deck (2× per bracket) |
|
||
| E-c1 | 200 mm CSI FPC flat cable | 4 | IMX219 to Jetson (extended) |
|
||
|
||
---
|
||
|
||
## Part F — D435i Front Bracket (`saltyrover_chassis_r2.scad` → `d435i_mount_stl`)
|
||
|
||
| # | RENDER | Qty | Material | Settings |
|
||
|---|--------|-----|----------|----------|
|
||
| F1 | `d435i_mount_stl` | 1 | PETG | 5 perims, 40% infill |
|
||
|
||
Export:
|
||
```bash
|
||
openscad saltyrover_chassis_r2.scad -D 'RENDER="d435i_mount_stl"' -o rover_d435i_mount.stl
|
||
```
|
||
|
||
| # | Spec | Qty | Use |
|
||
|---|------|-----|-----|
|
||
| F-f1 | 1/4-20 UNC hex nut | 1 | Captured in bracket face for D435i tripod socket |
|
||
| F-f2 | M4×14 SHCS | 2 | Bracket to deck front face |
|
||
|
||
---
|
||
|
||
## Mass Estimate — Frame Only (excl. motors, electronics, battery)
|
||
|
||
| Assembly | Material | Est. mass |
|
||
|----------|----------|-----------|
|
||
| Deck plate | 6 mm Al, lightened | ~1.15 kg |
|
||
| Pivot brackets × 4 | PETG | ~0.22 kg |
|
||
| Spring arms × 4 | PC | ~0.28 kg |
|
||
| Spring retainer caps × 4 | PETG | ~0.04 kg |
|
||
| Springs × 4 | Steel | ~0.04 kg |
|
||
| Electronics bay body | PETG | ~0.12 kg |
|
||
| Electronics bay lid + RPLIDAR tower | PETG | ~0.08 kg |
|
||
| CSI brackets × 4 | PETG | ~0.04 kg |
|
||
| D435i bracket × 1 | PETG | ~0.03 kg |
|
||
| Fasteners (M2–M8) | Stainless | ~0.15 kg |
|
||
| **Frame total** | | **~2.15 kg** |
|
||
|
||
> ⚠ Target: <2 kg frame. Current estimate is 0.15 kg over.
|
||
> Options to reduce:
|
||
> 1. Switch deck from 6 mm Al → 5 mm Al saves ~0.19 kg ✓
|
||
> 2. Or: enlarge lightening holes from Ø55 → Ø65 mm (saves ~0.12 kg)
|
||
> 3. Electronics bay in 2 mm wall PETG (saves ~0.06 kg)
|
||
> Recommend option 1: change `DECK_T = 5.0` in `saltyrover_chassis_r2.scad`
|
||
> and re-verify with waterjet quotation.
|
||
|
||
---
|
||
|
||
## Assembly Sequence
|
||
|
||
### 1. Fabrication
|
||
1. Export DXF and send deck plate to waterjet / CNC. Specify 6 mm (or 5 mm) 5052-H32 Al.
|
||
2. Export and print all STL parts (settings per table above).
|
||
3. Source springs, fasteners, and hub motors per BOM.
|
||
|
||
### 2. Deck preparation
|
||
1. Deburr all deck holes. Tap stem-collar M4 holes if using threaded standoffs.
|
||
2. Press or thread M3 rivet-nuts into deck at battery-tray rail positions (from `rover_battery_tray.scad`).
|
||
3. Apply stem collar with 4× M4×16 FHCS; Loctite 243.
|
||
|
||
### 3. Pivot bracket installation
|
||
1. Slide pivot bracket through deck M3 slots (under-deck side first).
|
||
2. Fit M3 washers + nyloc nuts; snug but do not torque — leave adjustable.
|
||
3. Set all 4 brackets to nominal Y position (motor corner fore-aft CL).
|
||
4. Torque M3 bolts to 1.2 N·m once alignment is confirmed (step 6).
|
||
|
||
### 4. Suspension arm assembly
|
||
1. Drop spring into bracket spring-guide boss (compress by hand).
|
||
2. Slide trailing arm pivot boss over pivot bolt M8×50.
|
||
3. Fit IGUS bushing in pivot bore (if used).
|
||
4. Fit M8 washer + nyloc nut; torque to 6 N·m.
|
||
5. Snap retainer cap onto arm axle slot; thread 2× M3×12 by hand.
|
||
|
||
### 5. Motor installation
|
||
1. Slide hub motor axle into arm dropout slot.
|
||
2. Fit clamp plate (from `rover_motor_mount.scad`); tighten M4 bolts 1.5 N·m.
|
||
3. Thread axle lock nut; apply Loctite 243; torque to 30 N·m.
|
||
4. Route phase cables + hall wires through deck phase pass-through hole.
|
||
|
||
### 6. Geometry check and bracket torque
|
||
1. Set robot on flat surface; check that all 4 wheels contact ground.
|
||
2. Measure axle-to-ground on each corner. Nominal: 127 mm ± 5 mm.
|
||
3. Adjust pivot bracket fore-aft position if needed to correct height.
|
||
4. Torque all M3 bracket bolts to 1.2 N·m.
|
||
|
||
### 7. Electronics bay + wiring
|
||
1. Thread ESC/VESC harnesses through bay floor cable pass-throughs.
|
||
2. Place electronics bay body on deck; fasten 10× M3×12 SHCS.
|
||
3. Mount FC on bay standoffs: anti-vibration grommets + M3×8 SHCS.
|
||
4. Mount Jetson Orin on bay standoffs: M3×8 SHCS.
|
||
5. Route USB/UART cables internally; cable-tie to bay walls.
|
||
6. Fit lid (with RPLIDAR tower stub); 4× M3×8 BHCS at corners.
|
||
|
||
### 8. Sensor installation
|
||
1. **RPLIDAR A1M8**: Fit anti-vibration ring (`rplidar_mount.scad`) on tower top.
|
||
Bolt RPLIDAR with 4× M3×30 SHCS through ring.
|
||
2. **D435i**: Bolt to front bracket arm using captured 1/4-20 nut.
|
||
Confirm 8° downward tilt; tighten firmly.
|
||
3. **4× CSI cameras**: Plug CSI flex into Jetson CSI ports.
|
||
Thread M2×6 SHCS into each corner bracket PCB holes.
|
||
4. **Stem + sensor head**: Press stem through deck collar bore.
|
||
Fit stem adapter (`rover_stem_adapter.scad`); clamp at 550 mm height.
|
||
Attach sensor_head to stem top as per `sensor_head_assembly.md`.
|
||
|
||
### 9. Final checks
|
||
- [ ] All wheels spin freely without catching wiring
|
||
- [ ] Suspension compresses and rebounds on each corner
|
||
- [ ] RPLIDAR scans 360° without obstruction (check deck edge clearance)
|
||
- [ ] D435i USB connected and streaming
|
||
- [ ] CSI cameras initialised on Jetson boot (`v4l2-ctl --list-devices`)
|
||
- [ ] FC armed and IMU reading correctly
|
||
- [ ] E-stop functional
|
||
|
||
---
|
||
|
||
## Motors (unchanged from Rev 1)
|
||
|
||
| # | Part | Qty | Spec |
|
||
|---|------|-----|------|
|
||
| M1 | Hub motor | 4 | 10×2.125" pneumatic, 36 V, ~350 W; axle OD 16.11 mm (caliper) |
|
||
| M2 | Phase cable extension | 4 | 3-wire 12 AWG, 300 mm, XT30 to VESC |
|
||
| M3 | Hall cable extension | 4 | 6-pin JST-PH, 300 mm |
|
||
|
||
---
|
||
|
||
## Critical Dimensions
|
||
|
||
| Dimension | Nominal | Tolerance |
|
||
|-----------|---------|-----------|
|
||
| Track (axle C/C) | 540 mm | ±2 mm |
|
||
| Wheelbase (axle C/C) | 340 mm | ±2 mm |
|
||
| Axle CL height | 127 mm | ±3 mm |
|
||
| Pivot bracket M3 slot pitch | 32 mm | ±0.3 mm |
|
||
| FC hole pattern | 30.5×30.5 mm | ±0.2 mm |
|
||
| Jetson hole pattern | 58×49 mm | ±0.2 mm |
|
||
| Stem bore | Ø25.5 mm | +0.3/0 |
|
||
| Spring guide boss OD | Ø14 mm | ±0.1 mm |
|
||
|
||
---
|
||
|
||
## OpenSCAD Version Requirement
|
||
|
||
Requires **OpenSCAD 2021.01 or newer** (for `linear_extrude` + `minkowski` with `$fn` in difference).
|
||
|
||
Render command (full assembly):
|
||
```bash
|
||
openscad saltyrover_chassis_r2.scad &
|
||
```
|