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>
5.7 KiB
5.7 KiB
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 | 1–2 | 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: 3–5.
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 |
1–4 | 4 perims, 40% infill | ~8 g |
| UWB bracket | sensor_rail_brackets.scad uwb_stl |
1–4 | 4 perims, 40% infill | ~10 g |
| Cable clip | sensor_rail_brackets.scad cable_clip_stl |
6–10 | 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 |
1–2 | 5 perims, 60% infill | ~28 g |
| Tank clamp | sensor_rail.scad tank_clamp_stl |
1–2 | 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 | 150–200 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
# 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
- 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).
- 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.
- Thumbscrew retention: Thread M3×16 SHCS through thumbwheel, then through bracket arm, into T-nut. Tighten hand-tight (¼ turn from snug). No tools required.
- Indexed positioning: Insert Ø4.9 mm index pin through rail M5 cross-hole and bracket index pocket for repeatable 25 mm grid positioning.
- 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.
- Cable clips: Push cable into C-channel from front. Snap into T-groove. No fasteners needed.