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

5.7 KiB
Raw Blame History

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

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