saltylab-firmware/chassis/rover_chassis_r2_BOM.md
sl-mechanical 2fa72e169e feat: SaltyRover chassis Rev 2 — 4-wheel rover with spring suspension (#109)
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>
2026-03-02 08:42:44 -05:00

12 KiB
Raw Blame History

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.scaddeck_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.scadpivot_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.scadcsi_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.scadd435i_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 (M2M8) 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):

openscad saltyrover_chassis_r2.scad &