# 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 ```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.