feat(mechanical): universal charging dock station (Issue #159) #163

Merged
sl-jetson merged 1 commits from sl-mechanical/issue-159-charging-dock into main 2026-03-02 10:26:06 -05:00
Collaborator

Summary

  • charging_dock.scad: dock station — weighted base (4× ballast pockets for M20 hex nuts + floor anchor holes), back wall with 2× high-current (5 A) spring-loaded pogo pin housing + wiring channel, V-funnel guide rails (±20 mm alignment tolerance, 10.8° half-angle), ArUco 100×100 mm marker mast (15° tilt toward robot), IRM-30-5 PSU bracket, 4-LED status bezel (Searching/Aligned/Charging/Full)
  • charging_dock_receiver.scad: robot-side contact plate — Ø12 mm brass pad press-fit housing with V-nose self-alignment; 3 variants: SaltyLab stem split-collar, SaltyRover deck belly flange (M4), SaltyTank skid-plate mount (M4)
  • charging_dock_BOM.md: full hardware list, ASCII wiring diagram with INA219 current-sense LED state detection, pogo height cross-variant shim table (Lab: direct fit, Rover: 20 mm ramp, Tank: 55 mm ramp), 14-step assembly sequence

Key design decisions

  • Static dock, variant-specific receivers: one dock body; robot installs the matching receiver. Cross-variant height accommodation via printed ramp shims.
  • V-guide geometry: ±20 mm lateral tolerance, gentle 10.8° taper — reliable self-centering without jamming
  • ArUco ID=0 DICT_4X4_50: standard dictionary for OpenCV; laminated 100×100 mm paper insert into frame slot (tool-free replacement)
  • INA219 current sensing: detects dock state (Searching/Aligned/Charging/Full) from pogo current without MCU in dock — Jetson reads via I2C
  • Ballast: 8× M20 steel hex nuts = ~690 g; combined with printed base ~1.6 kg total dock mass — stable on any surface

Test plan

  • Render all RENDER modes in OpenSCAD — verify no geometry errors
  • Print dock base, verify M20 ballast pockets accept hex nuts flush
  • Print back wall, verify pogo pin press-fit bore (Ø5.7 mm) accepts 5.5 mm pogo with 0.1 mm clearance
  • Print left + mirrored right guide rail, verify entry gap = 70 mm, exit gap = 32 mm
  • Print SaltyRover receiver, verify pad-to-pad distance = 20 mm with caliper
  • Press brass pad into receiver, verify 0.2 mm proud of face
  • Drive rover test chassis into dock — confirm pogo contact on both pads
  • ArUco: verify OpenCV detects ID=0 from 1.5 m at 30° approach angle

Closes #159

🤖 Generated with Claude Code

## Summary - `charging_dock.scad`: dock station — weighted base (4× ballast pockets for M20 hex nuts + floor anchor holes), back wall with 2× high-current (5 A) spring-loaded pogo pin housing + wiring channel, V-funnel guide rails (±20 mm alignment tolerance, 10.8° half-angle), ArUco 100×100 mm marker mast (15° tilt toward robot), IRM-30-5 PSU bracket, 4-LED status bezel (Searching/Aligned/Charging/Full) - `charging_dock_receiver.scad`: robot-side contact plate — Ø12 mm brass pad press-fit housing with V-nose self-alignment; 3 variants: SaltyLab stem split-collar, SaltyRover deck belly flange (M4), SaltyTank skid-plate mount (M4) - `charging_dock_BOM.md`: full hardware list, ASCII wiring diagram with INA219 current-sense LED state detection, pogo height cross-variant shim table (Lab: direct fit, Rover: 20 mm ramp, Tank: 55 mm ramp), 14-step assembly sequence ## Key design decisions - **Static dock, variant-specific receivers**: one dock body; robot installs the matching receiver. Cross-variant height accommodation via printed ramp shims. - **V-guide geometry**: ±20 mm lateral tolerance, gentle 10.8° taper — reliable self-centering without jamming - **ArUco ID=0 DICT_4X4_50**: standard dictionary for OpenCV; laminated 100×100 mm paper insert into frame slot (tool-free replacement) - **INA219 current sensing**: detects dock state (Searching/Aligned/Charging/Full) from pogo current without MCU in dock — Jetson reads via I2C - **Ballast**: 8× M20 steel hex nuts = ~690 g; combined with printed base ~1.6 kg total dock mass — stable on any surface ## Test plan - [ ] Render all RENDER modes in OpenSCAD — verify no geometry errors - [ ] Print dock base, verify M20 ballast pockets accept hex nuts flush - [ ] Print back wall, verify pogo pin press-fit bore (Ø5.7 mm) accepts 5.5 mm pogo with 0.1 mm clearance - [ ] Print left + mirrored right guide rail, verify entry gap = 70 mm, exit gap = 32 mm - [ ] Print SaltyRover receiver, verify pad-to-pad distance = 20 mm with caliper - [ ] Press brass pad into receiver, verify 0.2 mm proud of face - [ ] Drive rover test chassis into dock — confirm pogo contact on both pads - [ ] ArUco: verify OpenCV detects ID=0 from 1.5 m at 30° approach angle Closes #159 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sl-mechanical added 1 commit 2026-03-02 10:15:40 -05:00
Universal 5 V/5 A charging dock for SaltyLab/Rover/Tank robots:
- charging_dock.scad: weighted base (ballast pockets, floor anchors),
  back wall with 2× 5 A pogo pin housing + wiring channel, V-guide
  funnel rails (±20 mm alignment tolerance), ArUco marker mast (100×100 mm,
  15° tilt), PSU bracket (IRM-30-5), 4-LED status bezel
  (Searching/Aligned/Charging/Full)
- charging_dock_receiver.scad: 3-variant robot-side contact plate with
  Ø12 mm brass pad press-fit, V-nose self-alignment; SaltyLab stem
  collar, SaltyRover deck flange, SaltyTank skid-plate mount
- charging_dock_BOM.md: hardware list, ASCII wiring diagram, INA219
  current-sense LED state logic, pogo height cross-variant shim table,
  assembly sequence, export commands

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-jetson merged commit cc67e33003 into main 2026-03-02 10:26:05 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#163
No description provided.