saltylab-firmware/chassis/payload_bay_BOM.md
sl-mechanical 796e343b78 feat(mechanical): modular payload bay system (Issue #170)
Dovetail rail + tool-free swappable payload modules for all variants:
- payload_bay_rail.scad: 50×12 mm 60° dovetail rail (DXF for CNC Al bar),
  spring ball detent (Ø6 mm, 50 mm pitch), continuous safety-lock groove
  (M4 thumbscrew), 4-pin pogo connector housing (GND/5V/12V/UART),
  lab/rover/tank deck adapter plates
- payload_bay_modules.scad: universal _module_base() (male tongue, detent
  bore, 4× Ø4 mm target pads, lock bore) + 3 example modules: cargo tray
  (200×100 mm, Velcro slots, bungee cord slots), camera boom (120 mm mast +
  80 mm arm, 2020-rail-compatible head, 3-position tilt), cup holder
  (Ø80 mm tapered, 8-slot flex grip). Includes copy-paste module template.
- payload_bay_BOM.md: hardware list, CNC spec (dovetail dimensions, surface
  finish, connector pocket), load analysis (2 kg rated with Al rail + lock),
  module developer guide with constraints table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 10:38:07 -05:00

7.7 KiB
Raw Permalink Blame History

Payload Bay BOM — Issue #170

Agent: sl-mechanical | Date: 2026-03-01

Modular dovetail payload rail system. Tool-free slide-and-click module swapping. Cross-variant: SaltyLab, SaltyRover, SaltyTank (same rail profile).


A. Rail Hardware

# Description Spec Qty (per robot) Notes
R1 Aluminium bar stock 50×12 mm, 6061-T6, 200 mm length 12 Preferred over printed rail for 2 kg load rating. CNC mill or route dovetail slot per payload_rail.dxf profile.
R2 M4×10 FHCS Stainless, countersunk 48 Rail to adapter plate (or direct to deck); FHCS sits flush below rail bottom face
R3 M4 heat-set insert M4×5.7 L, Ø5.6 OD 48 Into deck adapter plate
R4 Detent ball bearing Ø6 mm, chrome steel (GCr15) 2 per module Module spring detent; standard bearing ball
R5 Detent spring Ø5.5 mm OD, 12 mm free length, ~2 N/mm 2 per module Lee Spring LC 055A 06 S or equivalent; behind ball in plunger
R6 M4 thumbscrew (knurled) M4×12, knurled head Ø14 mm 1 per module Safety lock; threads into M4 nut pressed into module side
R7 M4 hex nut DIN 934, stainless 1 per module Captured in module body for thumbscrew

B. Power + Data Connector

# Description Spec Qty (per rail) Notes
C1 Pogo pin P75-E2 style, Ø2 mm, 6 mm travel, rated 2 A 4 Rail-side spring contacts. AliExpress "P75-E2 pogo pin" or Mill-Max 0906 series.
C2 Brass target pad Ø4 × 1.5 mm disc 4 per module Module-side contact pads. Machine from Ø4 mm brass rod or order PCB pads. Press-fit with Loctite 603.
C3 JST-XH 2.54 mm header 4-pin, right-angle 1 per rail Rail-side connector to power harness
C4 JST-XH housing + crimps 4-pin female 1 per robot Wires from robot PSU (5 V, 12 V, GND, UART)
C5 20 AWG silicone wire Red / black / yellow / white, 300 mm each 4 Rail connector to robot bus
C6 Connector housing payload_connector_stl 1 Press-fit into rail pocket

Pin Map

Pin Signal Wire colour Max current
1 GND Black Return
2 +5 V Red 2 A
3 +12 V Yellow 2 A
4 UART (3.3 V) White 0.5 A

UART note: Half-duplex (single wire). Module firmware connects to Jetson Orin NX UART2. Use RS-485 transceiver if module cable > 500 mm or multi-drop needed.

C. Deck Adapters

Part File Qty Print Mass est.
SaltyLab adapter payload_bay_rail.scad lab_adapter_stl 1 PETG, 5 perims, 60% infill ~30 g
SaltyRover adapter payload_bay_rail.scad rover_adapter_stl 1 PETG, 5 perims, 60% infill ~35 g
SaltyTank adapter payload_bay_rail.scad tank_adapter_stl 1 PETG, 5 perims, 60% infill ~35 g

D. Printed Parts

Part File Qty Print Mass est.
Rail section (prototype) payload_bay_rail.scad rail_stl 1 PETG, 5 perims, 60% infill, 0.2 mm layer ~85 g
Connector housing payload_bay_rail.scad connector_stl 1 PETG, 5 perims, 100% infill ~4 g
Detent plunger payload_bay_rail.scad detent_plunger_stl 2 per module PETG, 5 perims, 80% infill ~2 g each
Module base (universal) payload_bay_modules.scad base_stl N PETG, 5 perims, 60% infill ~18 g
Cargo tray (200 mm) payload_bay_modules.scad cargo_tray_stl 1 PETG, 4 perims, 30% infill ~180 g
Camera boom payload_bay_modules.scad camera_boom_stl 1 PETG, 5 perims, 50% infill ~95 g
Cup holder payload_bay_modules.scad cup_holder_stl 1 PETG, 4 perims, 25% infill ~55 g

Dovetail Rail — CNC Specification

For aluminium production rail (preferred over printed for 2 kg rating):

Material: 6061-T6 aluminium
Stock: 50 mm × 12 mm flat bar, length to suit (200 mm, 300 mm, 400 mm)

Dovetail slot (top face, centred):
  Slot open width at top:    37.2 mm
  Slot width at bottom:      28.0 mm
  Slot depth:                 8.0 mm
  Wall angle from vertical:  30.0° (60° included angle)
  Surface finish: Ra 1.6 µm (smooth for low-friction sliding)

Detent dimples (slot floor):
  Diameter: 4.9 mm (ball seats in)
  Depth: 1.5 mm
  Pitch: 50 mm
  First dimple: 25 mm from each end

Safety-lock groove (both side faces, continuous):
  Groove diameter: 4.5 mm
  Depth: 1.5 mm
  Z position: RAIL_T/2 - DOVE_H/2 = 8 mm from top face
  (CNC with Ø4 mm ball-nose end mill, single pass at Z = -4 mm from top)

Mounting holes (bottom face, countersunk):
  Diameter: 4.3 mm (M4 clearance)
  C/sink: Ø8 mm × 82° (M4 FHCS)
  Pitch: 50 mm
  First hole: 25 mm from each end

Connector pocket (slot floor, centred in rail length):
  Width: 26 mm (X), Depth: 8.4 mm (Y), Height: 7 mm (Z into slot floor)
  Tolerance: +0.2 / 0 mm (press-fit housing)

DXF cross-section: export payload_rail.dxf for supplier drawing.

Load Analysis

Mode Load Safety factor Method
Static payload (detent only) 0.5 kg 2× Ball detent retention force ~10 N
Static payload (thumbscrew locked) 2.0 kg 2× Dovetail shear area ~800 mm² Al
Dynamic (robot motion, 2 m/s²) 2.0 kg 1.5× Inertial force = 2 kg × 2 m/s² = 4 N; detent holds 10 N
Dovetail shear (PETG printed) 1.2 kg 1.5× PETG tensile ~50 MPa; recommend Al rail for rated 2 kg

⚠ For 2 kg payload: use machined aluminium rail. Printed PETG rail is prototype/light-duty only (<0.8 kg payload).


Module Developer Guide

Adding a new module in 5 steps

  1. Copy the template at the bottom of payload_bay_modules.scad.
  2. Set MY_LEN — must be a multiple of 50 mm (detent pitch) for repeatable positioning.
  3. Call _module_base(MY_LEN, n_detents) as the first statement in your module.
  4. Build payload geometry starting at Z = 0 (rail top face). Keep total height ≤ 200 mm for robot clearance under doorways.
  5. Verify connector alignment — when module is slid to its operating position, the 4 target pads on the tongue bottom must align with CONN_Y on the rail (default: 100 mm from rail entry end). Adjust conn_offset if needed.

Constraints

Parameter Limit
Module length Min 60 mm, max 400 mm
Module height above rail Max 200 mm (clearance)
Payload mass ≤ 2 kg (Al rail + thumbscrew locked)
Module width Max 120 mm (robot shoulder clearance)
Connector draw Max 2 A per power pin (5 V or 12 V)

Export Commands

# Rail DXF (for CNC / waterjet machining)
openscad payload_bay_rail.scad -D 'RENDER="rail_2d"'            -o payload_rail_profile.dxf

# Rail STL (PETG prototype)
openscad payload_bay_rail.scad -D 'RENDER="rail_stl"'           -o payload_rail_200mm.stl

# Rail accessories
openscad payload_bay_rail.scad -D 'RENDER="connector_stl"'      -o payload_connector.stl
openscad payload_bay_rail.scad -D 'RENDER="detent_plunger_stl"' -o payload_detent_plunger.stl

# Deck adapters
openscad payload_bay_rail.scad -D 'RENDER="lab_adapter_stl"'    -o payload_adapter_lab.stl
openscad payload_bay_rail.scad -D 'RENDER="rover_adapter_stl"'  -o payload_adapter_rover.stl
openscad payload_bay_rail.scad -D 'RENDER="tank_adapter_stl"'   -o payload_adapter_tank.stl

# Example modules
openscad payload_bay_modules.scad -D 'RENDER="cargo_tray_stl"'  -o payload_cargo_tray.stl
openscad payload_bay_modules.scad -D 'RENDER="camera_boom_stl"' -o payload_camera_boom.stl
openscad payload_bay_modules.scad -D 'RENDER="cup_holder_stl"'  -o payload_cup_holder.stl
openscad payload_bay_modules.scad -D 'RENDER="target_pad_2d"'   -o payload_target_pad.dxf