saltylab-firmware/chassis/sensor_rail_BOM.md
sl-mechanical 3992b80bcb feat(mechanical): universal sensor mount rail system (Issue #138)
Add 2020 T-slot quick-swap sensor rail for SaltyLab/Rover/Tank variants:
- sensor_rail.scad: 2020 T-slot profile, T-nut, thumbscrew, end cap, index
  pins, stem/post/tank clamp adapters
- sensor_rail_brackets.scad: universal T-nut base + RPLIDAR A1M8, D435i,
  IMX219, UWB anchor, cable clip brackets (tool-free M3 thumbscrew retention)
- sensor_rail_BOM.md: purchased hardware, print settings, export commands

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 09:46:27 -05:00

116 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sensor Rail BOM — Issue #138
**Agent:** sl-mechanical | **Date:** 2026-03-01
Universal 2020 T-slot sensor mount rail system.
Compatible with SaltyLab (stem), SaltyRover (square posts), SaltyTank (uprights).
---
## Purchased Hardware
| # | Description | Spec | Qty (per robot) | Notes |
|---|-------------|------|-----------------|-------|
| H1 | 2020 T-slot aluminium extrusion | 20×20 mm, 200 mm length | 12 | OpenBuilds V-Slot or MISUMI HFS5-2020. Order pre-cut or cut with mitre saw. |
| H2 | M5×10 BHCS | Stainless | 4 | Rail-to-adapter attachment (M5 T-nuts in rail) |
| H3 | M5 T-nut (drop-in) | For 2020 slot | 4 | Off-the-shelf; used for adapter attachment |
| H4 | M3×16 SHCS | Stainless | N | One per sensor bracket (thumbscrew + clamping) |
| H5 | M3 hex nut | DIN 934, stainless | N | One per bracket T-nut (press-fit in pocket) |
| H6 | M3×6 BHCS | Stainless | 2N | Bracket arm-to-base plate (2 per bracket) |
| H7 | M4×30 SHCS | Stainless | 2 | Stem adapter clamping bolts |
| H8 | M4 hex nut | DIN 934, stainless | 2 | Stem adapter nut pockets |
| H9 | M4×12 BHCS | Stainless | 4 | Post adapter clamping |
| H10 | M4×12 BHCS | Stainless | 4 | Tank clamp frame attachment |
| H11 | M3×8 SHCS | Stainless | 4 | RPLIDAR platform bolts |
| H12 | 1/4-20 UNC hex nut | Zinc or SS | 1 | D435i tripod nut (captured in bracket) |
| H13 | M2×6 SHCS | Stainless | 4 | IMX219 PCB mounting |
| H14 | M3×8 SHCS | Stainless | 4 | UWB PCB mounting |
| H15 | M5×6 set screw | Cup point, SS | 2 | Optional rail end cap retention |
*N = number of brackets installed; typical per robot: 35.*
---
## Printed Parts (PETG unless noted)
| Part | File | Qty | Print settings | Mass est. |
|------|------|-----|----------------|-----------|
| T-nut base | sensor_rail_brackets.scad `base_stl` | N brackets | 5 perims, 60% infill | ~6 g |
| RPLIDAR bracket | sensor_rail_brackets.scad `rplidar_stl` | 1 | 4 perims, 40% infill | ~18 g |
| D435i bracket | sensor_rail_brackets.scad `d435i_stl` | 1 | 4 perims, 40% infill | ~14 g |
| IMX219 bracket | sensor_rail_brackets.scad `imx219_stl` | 14 | 4 perims, 40% infill | ~8 g |
| UWB bracket | sensor_rail_brackets.scad `uwb_stl` | 14 | 4 perims, 40% infill | ~10 g |
| Cable clip | sensor_rail_brackets.scad `cable_clip_stl` | 610 | 3 perims, 20% infill | ~2 g |
| Rail end cap | sensor_rail.scad `end_cap_stl` | 2 | 5 perims, 40% infill | ~3 g |
| Index pin set (×4) | sensor_rail.scad `index_pin_stl` | 1 set | 4 perims, 40% infill | ~4 g |
| Thumbscrew wheel | sensor_rail.scad (thumbscrew_wheel) | N | 4 perims, 30% infill | ~1.5 g |
| Stem adapter half | sensor_rail.scad `stem_adapter_stl` | 2 | 5 perims, 60% infill | ~22 g |
| Post adapter | sensor_rail.scad `post_adapter_stl` | 12 | 5 perims, 60% infill | ~28 g |
| Tank clamp | sensor_rail.scad `tank_clamp_stl` | 12 | 5 perims, 60% infill | ~20 g |
---
## Rail Length Reference
| Robot variant | Recommended rail length | Notes |
|---------------|------------------------|-------|
| SaltyLab | 200 mm | On Ø25 mm stem; 1 rail |
| SaltyRover | 200 mm | On rear sensor mast posts |
| SaltyTank | 150200 mm | On tank side uprights or top bar |
---
## Mass Summary (typical install: 1 rail + 3 brackets + 8 clips)
| Item | Mass |
|------|------|
| 200 mm 2020 Al extrusion | ~110 g |
| 3× bracket assemblies (base + arm) | ~60 g |
| 8× cable clips | ~16 g |
| 1× adapter (stem) | ~44 g |
| Hardware (bolts/nuts) | ~25 g |
| **Total** | **~255 g** |
---
## Export Commands
```bash
# Rail profile DXF (spec for extrusion supplier)
openscad sensor_rail.scad -D 'RENDER="rail_2d"' -o sensor_rail_profile.dxf
# Printable rail section (prototype)
openscad sensor_rail.scad -D 'RENDER="rail_section_stl"' -o sensor_rail_200.stl
# Adapters
openscad sensor_rail.scad -D 'RENDER="stem_adapter_stl"' -o sensor_rail_stem_adapter.stl
openscad sensor_rail.scad -D 'RENDER="post_adapter_stl"' -o sensor_rail_post_adapter.stl
openscad sensor_rail.scad -D 'RENDER="tank_clamp_stl"' -o sensor_rail_tank_clamp.stl
openscad sensor_rail.scad -D 'RENDER="end_cap_stl"' -o sensor_rail_end_cap.stl
openscad sensor_rail.scad -D 'RENDER="index_pin_stl"' -o sensor_rail_index_pins.stl
# Brackets
openscad sensor_rail_brackets.scad -D 'RENDER="base_stl"' -o srb_tnut_base.stl
openscad sensor_rail_brackets.scad -D 'RENDER="rplidar_stl"' -o srb_rplidar.stl
openscad sensor_rail_brackets.scad -D 'RENDER="d435i_stl"' -o srb_d435i.stl
openscad sensor_rail_brackets.scad -D 'RENDER="imx219_stl"' -o srb_imx219.stl
openscad sensor_rail_brackets.scad -D 'RENDER="uwb_stl"' -o srb_uwb.stl
openscad sensor_rail_brackets.scad -D 'RENDER="cable_clip_stl"' -o srb_cable_clip.stl
```
---
## Assembly Notes
1. **Rail purchase**: Order OpenBuilds V-Slot 2020 or MISUMI HFS5-2020 in desired length.
Specify M5 tapped centre bore at both ends. Index holes optional (can drill manually at 25 mm pitch).
2. **T-nut bases**: Press M3 hex nut into pocket before inserting into rail.
Insert T-nut tongue into T-groove from end of rail before fitting end caps.
3. **Thumbscrew retention**: Thread M3×16 SHCS through thumbwheel, then through bracket arm, into T-nut.
Tighten hand-tight (¼ turn from snug). No tools required.
4. **Indexed positioning**: Insert Ø4.9 mm index pin through rail M5 cross-hole and bracket index pocket for repeatable 25 mm grid positioning.
5. **Adapter installation**:
- *Stem*: clamp 2 halves around Ø25 mm stem with M4×30 bolts; torque 1.5 N·m.
- *Post*: slide C-clamp around 20×20 post; tighten M4×12 bolts; torque 1.2 N·m.
- *Tank*: slide clamp onto 6 mm frame plate edge; tighten M4×12 bolts.
6. **Cable clips**: Push cable into C-channel from front. Snap into T-groove. No fasteners needed.