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>
166 lines
7.7 KiB
Markdown
166 lines
7.7 KiB
Markdown
# 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 | 1–2 | 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 | 4–8 | 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 | 4–8 | 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
|
||
|
||
```bash
|
||
# 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
|
||
```
|