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>
12 KiB
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:
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:
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:
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:
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:
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:
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:
- Switch deck from 6 mm Al → 5 mm Al saves ~0.19 kg ✓
- Or: enlarge lightening holes from Ø55 → Ø65 mm (saves ~0.12 kg)
- Electronics bay in 2 mm wall PETG (saves ~0.06 kg) Recommend option 1: change
DECK_T = 5.0insaltyrover_chassis_r2.scadand re-verify with waterjet quotation.
Assembly Sequence
1. Fabrication
- Export DXF and send deck plate to waterjet / CNC. Specify 6 mm (or 5 mm) 5052-H32 Al.
- Export and print all STL parts (settings per table above).
- Source springs, fasteners, and hub motors per BOM.
2. Deck preparation
- Deburr all deck holes. Tap stem-collar M4 holes if using threaded standoffs.
- Press or thread M3 rivet-nuts into deck at battery-tray rail positions (from
rover_battery_tray.scad). - Apply stem collar with 4× M4×16 FHCS; Loctite 243.
3. Pivot bracket installation
- Slide pivot bracket through deck M3 slots (under-deck side first).
- Fit M3 washers + nyloc nuts; snug but do not torque — leave adjustable.
- Set all 4 brackets to nominal Y position (motor corner fore-aft CL).
- Torque M3 bolts to 1.2 N·m once alignment is confirmed (step 6).
4. Suspension arm assembly
- Drop spring into bracket spring-guide boss (compress by hand).
- Slide trailing arm pivot boss over pivot bolt M8×50.
- Fit IGUS bushing in pivot bore (if used).
- Fit M8 washer + nyloc nut; torque to 6 N·m.
- Snap retainer cap onto arm axle slot; thread 2× M3×12 by hand.
5. Motor installation
- Slide hub motor axle into arm dropout slot.
- Fit clamp plate (from
rover_motor_mount.scad); tighten M4 bolts 1.5 N·m. - Thread axle lock nut; apply Loctite 243; torque to 30 N·m.
- Route phase cables + hall wires through deck phase pass-through hole.
6. Geometry check and bracket torque
- Set robot on flat surface; check that all 4 wheels contact ground.
- Measure axle-to-ground on each corner. Nominal: 127 mm ± 5 mm.
- Adjust pivot bracket fore-aft position if needed to correct height.
- Torque all M3 bracket bolts to 1.2 N·m.
7. Electronics bay + wiring
- Thread ESC/VESC harnesses through bay floor cable pass-throughs.
- Place electronics bay body on deck; fasten 10× M3×12 SHCS.
- Mount FC on bay standoffs: anti-vibration grommets + M3×8 SHCS.
- Mount Jetson Orin on bay standoffs: M3×8 SHCS.
- Route USB/UART cables internally; cable-tie to bay walls.
- Fit lid (with RPLIDAR tower stub); 4× M3×8 BHCS at corners.
8. Sensor installation
- RPLIDAR A1M8: Fit anti-vibration ring (
rplidar_mount.scad) on tower top. Bolt RPLIDAR with 4× M3×30 SHCS through ring. - D435i: Bolt to front bracket arm using captured 1/4-20 nut. Confirm 8° downward tilt; tighten firmly.
- 4× CSI cameras: Plug CSI flex into Jetson CSI ports. Thread M2×6 SHCS into each corner bracket PCB holes.
- 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 persensor_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):
openscad saltyrover_chassis_r2.scad &