saltylab-firmware/chassis/ISSUE_505_CHARGING_DOCK_24V_DESIGN.md
sl-mechanical 5cea0812d5 feat: Add Issue #505 - 24V Charging Dock Hardware Design
- Design specification: 24V DC power delivery (upgraded from 5V Issue #159)
- ArUco marker ID 42 (15cm frame) for precision alignment
- Spring-loaded contact pads with V-channel guide rails
- Comprehensive BOM for 24V PSU, wiring, LED status circuit
- Compatible with docking node #489 (ROS2 integration)
- 3D-printable PETG frame (base, back wall, guide rails, brackets)
- Electrical: 240W Mean Well IRM-240-24 PSU, 20A current capacity
- Safety: Fused output, varistor protection, soft-start capable
- Integration: MQTT status reporting, GPIO LED control (Jetson Orin NX)

Files:
- ISSUE_505_CHARGING_DOCK_24V_DESIGN.md: Complete design spec (mechanical, electrical, assembly)
- charging_dock_505_BOM.csv: Procurement list with sourcing info

Next: CAD implementation (charging_dock_505.scad, receiver variant)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-06 10:30:44 -05:00

24 KiB
Raw Blame History

Issue #505: 24V Charging Dock Hardware Design

Agent: sl-mechanical Status: In Progress Date Started: 2026-03-06 Related Issues: #159 (5V dock), #489 (docking node)


Design Overview

Upgraded charging dock system for 24V DC power delivery with improved reliability, higher power capacity, and integrated ArUco marker (ID 42) for precision alignment.

Key Specifications

Parameter Specification Notes
Voltage 24 V DC Upgrade from 5V (Issue #159)
Power capacity 480 W (20 A @ 24V) Supports battery charging + auxiliary systems
Contact type Spring-loaded brass pads (Ø12 mm, 2 pads) 20 mm CL-to-CL spacing
Alignment method V-channel rails + ArUco marker ID 42 Precision ±15 mm tolerance
Docking nodes Compatible with Issue #489 (ROS2 docking node) MQTT status reporting
Frame material PETG (3D-printable) All parts exportable as STL
Contact height 35 mm above dock floor (configurable per robot) Same as Issue #159

Subsystem Design

A. Power Distribution

PSU Selection (24V upgrade)

Primary: Mean Well IRM-240-24 or equivalent

  • 240W / 10A @ 24V, open frame
  • Input: 100-240V AC 50/60Hz
  • Output: 24V ±5% regulated
  • Recommended alternatives:
    • HLK-240M24 (Hi-Link, 240W, compact)
    • RECOM R-120-24 (half-power option, 120W)
    • TDK-Lambda DRB-240-24 (industrial grade)

Specifications:

  • PCB-mount or chassis-mount (via aluminum bracket)
  • 2× PG7 cable glands for AC input + 24V output
  • Thermal shutdown at 70°C (add heatsink if needed)

Power Delivery Cables

Component Spec Notes
PSU to pogo pins 12 AWG silicone wire (red/black) 600V rated, max 20A
Cable gland exits PG7, M20 thread, 5-8 mm cable IP67 rated
Strain relief Silicone sleeve, 5 mm ID 150 mm sections at terminations
Crimp terminals M3/M4 ring lug, 12 AWG Solder + crimped (both)

Contact Resistance & Safety

  • Target contact resistance: <50 mΩ (brass pad to pogo pin)
  • Transient voltage suppression: Varistor (MOV) across 24V rail (14-28V clamping)
  • Inrush current limiting: NTC thermistor (10Ω @ 25°C) or soft-start relay
  • Over-current protection: 25A fuse (slow-blow) on PSU output

B. Mechanical Structure

Dock Base Plate

Material: PETG (3D-printed) Dimensions: 300 × 280 × 12 mm (L×W×H) Ballast: 8× M20 hex nuts (4 pockets, 2 nuts per pocket) = ~690 g stabilization

Features:

  • 4× M4 threaded inserts (deck mounting)
  • 4× ballast pockets (underside, 32×32×8 mm each)
  • Wiring channel routing (10×10 mm), PSU mounting rails
  • Cable exit slot with strain relief

Back Wall / Pogo Housing

Material: PETG Dimensions: 250 × 85 × 10 mm (W×H×T) Contact face: 2× pogo pin bores (Ø5.7 mm, 20 mm deep)

Features:

  • Pogo pin spring pre-load: 4 mm travel (contact engage at ~3 mm approach)
  • LED status bezel mount (4× 5 mm LED holes)
  • Smooth contact surface (0.4 mm finish to reduce arcing)

V-Guide Rails (Left & Right)

Material: PETG Function: Self-aligning funnel for robot receiver plate

Geometry:

  • V-channel depth: 15 mm (±7.5 mm from centerline)
  • Channel angle: 60° (Vee angle) for self-centering
  • Guide length: 250 mm (front edge to back wall)
  • 2.5 mm wall thickness (resists impact deformation)

Design goal: Robot can approach ±20 mm off-center; V-rails funnel it to ±5 mm at dock contact.

ArUco Marker Frame

Design: 15 cm × 15 cm frame (150×150 mm outer), marker ID 42

Frame mounting:

  • Material: PETG (3D-printed frame + acrylic cover)
  • Marker insertion: Side-slot, captures 100×100 mm laminated ArUco label
  • Position: Dock entrance, 1.5 m height for camera visibility
  • Lighting: Optional white LED ring around frame for contrast

Marker specs:

  • Dictionary: cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_250)
  • Marker ID: 42 (uint8, fits DICT_4X4_250: 0-249)
  • Printed size: 100×100 mm
  • Media: Glossy photo paper + 80 µm lamination (weather protection)

PSU Bracket

Material: PETG Attachment: 4× M4 SHCS to base rear, bolts through PSU flanges

Features:

  • Mounting pads for PSU feet
  • Cable routing guides (AC input + 24V output)
  • Thermal airflow clearance (30 mm minimum)
  • Optional DIN-rail adapter (for rackmount variant)

LED Status Bezel

Material: PETG Function: 4× LED indicator display (charging state feedback)

LEDs & Resistors:

LED Color State Vf (typ) Resistor Notes
L1 Red SEARCHING 2.0 V 180 Ω No robot contact
L2 Yellow ALIGNED 2.1 V 180 Ω Contact made, BMS pre-charge
L3 Blue CHARGING 3.2 V 100 Ω Active charging
L4 Green FULL 2.1 V 180 Ω Trickle/float mode

Current calculation (for 24V rail):

  • Red/Yellow/Green: R = (24 Vf) / 0.020 ≈ 1000 Ω (use 1.0 kΩ 1/4W)
  • Blue: R = (24 3.2) / 0.020 = 1040 Ω (use 1.0 kΩ)

Control:

  • Jetson Orin NX GPIO output (via I2C LED driver or direct GPIO)
  • Pulldown resistor (10 kΩ) on each GPIO if using direct drive
  • Alternative: TP4056 analog output pins (if in feedback path)

C. Robot Receiver (Mating Interface)

Cross-variant compliance: Same receiver design works for SaltyLab, SaltyRover, SaltyTank with different mounting interfaces.

Contact Pads

  • Material: Bare brass (10-12 mm OD, 2 mm thick)
  • Pressing: 0.1 mm interference fit into PETG housing
  • Polarity marking: "+" slot on right side (+X), "-" unmarked on left
  • Solder lug: M3 ring lug on rear face (connects to robot BMS)

V-Nose Guide

  • Profile: Chamfered 14° V-nose (30 mm wide)
  • Function: Mates with dock V-rails for alignment funnel

Mounting Variants

Robot Mount Type Fastener Height Adjustment
SaltyLab Stem collar (split, 2×) M4 × 16 SHCS (2×) Tune via firmware offset
SaltyRover Deck flange (bolt-on) M4 × 16 SHCS (4×) 20 mm shim if needed
SaltyTank Skid plate (bolt-on) M4 × 16 SHCS (4×) 55 mm ramp shim recommended

3D-Printable Parts (STL Exports)

All parts print in PETG, 0.2 mm layer height, 40-60% infill:

Part File Qty Infill Est. Mass Notes
Dock base charging_dock_505.scad (base_stl) 1 60% ~420 g Print on large bed (300×280 mm)
Back wall + pogo charging_dock_505.scad (back_wall_stl) 1 40% ~140 g Smooth face finish required
V-rail left charging_dock_505.scad (guide_rail_stl) 1 50% ~65 g Mirror for right side in slicer
V-rail right (mirror of left) 1 50% ~65 g
ArUco frame charging_dock_505.scad (aruco_frame_stl) 1 30% ~35 g Slot accepts 100×100 mm marker
PSU bracket charging_dock_505.scad (psu_bracket_stl) 1 40% ~45 g
LED bezel charging_dock_505.scad (led_bezel_stl) 1 40% ~15 g
Receiver (Lab) charging_dock_receiver_505.scad (lab_stl) 1 60% ~32 g Stem collar variant
Receiver (Rover) charging_dock_receiver_505.scad (rover_stl) 1 60% ~36 g Deck flange variant
Receiver (Tank) charging_dock_receiver_505.scad (tank_stl) 1 60% ~42 g Extended nose variant

Bill of Materials (BOM)

Electrical Components

Power Supply & Wiring

# Description Spec Qty Unit Cost Total Source
E1 PSU — 24V 10A Mean Well IRM-240-24 or Hi-Link HLK-240M24 1 ~$4060 ~$50 Digi-Key, Amazon
E2 12 AWG silicone wire Red + black, 600V rated, 5 m spool 1 ~$15 ~$15 McMaster-Carr, AliExpress
E3 PG7 cable gland M20 thread, IP67, 58 mm cable 2 ~$3 ~$6 AliExpress, Heilind
E4 Varistor (MOV) 1828V, 1 kA 1 ~$1 ~$1 Digi-Key
E5 Fuse — 25A T25 slow-blow, 5×20 mm 1 ~$0.50 ~$0.50 Digi-Key
E6 Fuse holder 5×20 mm inline, 20A rated 1 ~$2 ~$2 Amazon
E7 Crimp ring terminals M3, 12 AWG, tin-plated 8 ~$0.20 ~$1.60 Heilind, AliExpress
E8 Strain relief sleeve 5 mm ID silicone, 1 m 1 ~$5 ~$5 McMaster-Carr

Pogo Pins & Contacts

# Description Spec Qty Unit Cost Total Source
C1 Pogo pin assembly Spring-loaded, Ø5.5 mm OD, 20 mm, 20A rated, 4 mm travel 2 ~$812 ~$20 Preci-Dip, Jst, AliExpress
C2 Brass contact pad Ø12 × 2 mm, H68 brass, bare finish 2 ~$3 ~$6 Metal supplier (Metals USA, OnlineMetals)
C3 Solder lug — M3 Copper ring, tin-plated 4 ~$0.40 ~$1.60 Heilind, Amazon

LED Status Circuit

# Description Spec Qty Unit Cost Total Source
L1 5 mm LED — Red 2.0 V, 20 mA, diffuse 1 ~$0.30 ~$0.30 Digi-Key
L2 5 mm LED — Yellow 2.1 V, 20 mA, diffuse 1 ~$0.30 ~$0.30 Digi-Key
L3 5 mm LED — Blue 3.2 V, 20 mA, diffuse 1 ~$0.50 ~$0.50 Digi-Key
L4 5 mm LED — Green 2.1 V, 20 mA, diffuse 1 ~$0.30 ~$0.30 Digi-Key
R1R4 Resistor — 1 kΩ 1/4W Metal film, 1% tolerance 4 ~$0.10 ~$0.40 Digi-Key
J1 Pin header 2.54 mm 1×6 right-angle 1 ~$0.50 ~$0.50 Digi-Key

Current Sensing (Optional)

# Description Spec Qty Unit Cost Total Source
S1 INA219 I2C shunt monitor 16-bit, I2C addr 0x40, 26V max 1 ~$5 ~$5 Adafruit, Digi-Key
S2 SMD resistor — 0.1 Ω 1206, 1W 1 ~$1 ~$1 Digi-Key

Mechanical Hardware

# Description Spec Qty Unit Cost Total Source
M1 M20 hex nut Steel DIN 934, ~86 g 8 ~$0.80 ~$6.40 Grainger, Home Depot
M2 M4 × 16 SHCS Stainless A4 DIN 912 16 ~$0.30 ~$4.80 Grainger
M3 M4 × 10 BHCS Stainless A4 DIN 7380 8 ~$0.25 ~$2.00 Grainger
M4 M4 heat-set insert Brass, threaded, M4 20 ~$0.15 ~$3.00 McMaster-Carr
M5 M3 × 16 SHCS Stainless, LED bezel 4 ~$0.20 ~$0.80 Grainger
M6 M3 hex nut DIN 934 4 ~$0.10 ~$0.40 Grainger
M7 M8 × 40 BHCS Zinc-plated, floor anchors (optional) 4 ~$0.50 ~$2.00 Grainger
M8 Rubber foot Ø20 × 5 mm, self-adhesive 4 ~$0.80 ~$3.20 Amazon

ArUco Marker & Frame

# Description Spec Qty Unit Cost Total Source
A1 ArUco marker print 100×100 mm, ID=42, DICT_4X4_250, glossy photo paper 2 ~$1.50 ~$3.00 Print locally or AliExpress
A2 Lamination pouch A4, 80 µm thick 2 ~$0.40 ~$0.80 Amazon, Staples
A3 Acrylic cover sheet Clear, 3 mm, 150×150 mm 1 ~$3 ~$3.00 McMaster-Carr

Consumables & Assembly

# Description Spec Qty Unit Cost Total Source
X1 Solder wire 63/37 Sn/Pb or lead-free, 1 m 1 ~$3 ~$3.00 Digi-Key
X2 Flux paste No-clean, 25 mL 1 ~$4 ~$4.00 Digi-Key
X3 Loctite 243 Thread-locker (medium strength), 10 mL 1 ~$4 ~$4.00 Grainger
X4 Epoxy adhesive Two-part, 25 mL 1 ~$6 ~$6.00 Home Depot

Assembly Procedure

Phase 1: Preparation

  1. Print all PETG parts (see STL export list above)

    • Base: 0.3 mm layer, 60% infill (heavy/stable)
    • Back wall: 0.2 mm, 40% infill
    • Rails & brackets: 0.2 mm, 40-50% infill
    • Support removal: slow, avoid pogo bore damage
  2. Prepare ballast nuts

    • Sort 8× M20 hex nuts (stack in 4 pockets, 2 per pocket)
    • Optional: fill pockets with epoxy to prevent rattling
  3. Press brass contact pads

    • Apply 0.1 mm interference press-fit into receiver housing bores
    • Use arbor press @ ~2 tons force
    • Or use slow manual press (avoid chipping brass edges)

Phase 2: Base Assembly

  1. Install heat-set M4 inserts into base plate

    • Back wall attach points (3×)
    • Guide rail attach points (4× each side)
    • ArUco mast feet (4×)
    • PSU bracket mount (4×)
    • Use soldering iron (350°C) or insert tool, press vertically
  2. Ballast installation

    • Insert M20 hex nuts into base pockets (from underside)
    • Verify pockets are flush, no protrusions into wiring channel
    • Optional: epoxy-lock nuts with 5-minute epoxy
  3. Install pogo pins into back wall

    • Press spring-loaded pins from front face into Ø5.7 mm bores (20 mm deep)
    • Flange seats against counterbore shoulder at 1.5 mm depth
    • Apply small drop of Loctite 243 to bore wall (prevents rotation)

Phase 3: Electrical Assembly

  1. Solder wires to pogo pin terminals

    • 12 AWG red wire → POGO+ pin
    • 12 AWG black wire → POGO- pin
    • Solder both in & out of lug for redundancy
    • Add ~50 mm strain relief sleeve over each joint
  2. Route pogo wires through base wiring channel

    • Guide down channel (10×10 mm trough)
    • Exit through cable gland slot on rear
  3. Assemble PSU bracket

    • Bolt Mean Well IRM-240-24 (or equivalent) to bracket pads
    • 4× M4 fasteners through bracket to base rear
    • Orient PSU exhaust away from dock (for ventilation)
  4. Connect 24V wiring

    • Pogo+ wire (red) → PSU V+ terminal
    • Pogo- wire (black) → PSU COM/GND terminal
    • Observe polarity strictly (reverse = short circuit)
  5. Install power protection

    • Fuse holder in-line on PSU V+ output (25A slow-blow)
    • Varistor (MOV, 1828V) across V+/COM rails (clamp transients)
    • Optional: NTC thermistor (10Ω @ 25°C) in series for soft-start
  6. Wire AC mains input (if not pre-assembled)

    • Route AC input through cable gland on PSU bracket
    • Connect to PSU AC terminals (L, N, PE if applicable)
    • Ensure all connections are soldered + crimped

Phase 4: LED Assembly

  1. Install LED bezel into back wall

    • 4× 5 mm LEDs press-fit into bezel holes (bodies recessed ~2 mm)
    • Solder resistors (1 kΩ 1/4W) to LED anodes on rear
    • Connect all LED cathodes to common GND line (black wire to PSU COM)
    • Wire LED control lines to Jetson Orin NX GPIO (via I2C expander if needed)
  2. Connect LED header

    • 2.54 mm pin header (1×6) plugs into LED control harness
    • Pin 1: LED1 (red, SEARCHING)
    • Pin 2: LED2 (yellow, ALIGNED)
    • Pin 3: LED3 (blue, CHARGING)
    • Pin 4: LED4 (green, FULL)
    • Pins 56: GND, +24V (power for LED feedback monitoring)

Phase 5: Mechanical Assembly

  1. Bolt back wall to base

    • 3× M4×16 SHCS from underside of base
    • Tighten to ~5 Nm (snug, don't overtighten plastic)
    • Back wall should be perpendicular to base (verify with level)
  2. Attach V-guide rails

    • Left rail: 4× M4 fasteners into base inserts (front & rear attach)
    • Right rail: Mirror (flip STL in slicer) or manually mirror geometry
    • Verify V-channels are parallel & symmetrical (±2 mm tolerance)
  3. Mount ArUco marker frame

    • Bolt 4× M4×10 fasteners to frame feet (attach to base front)
    • Insert laminated 100×100 mm ArUco marker (ID 42) into frame slot
    • Verify marker is flat & centered (no curl or shadow)
  4. Attach rubber feet (or floor anchors)

    • 4× self-adhesive rubber feet on base underside corners
    • OR drill M8 holes through base (optional: permanent floor mounting)

Phase 6: Robot Receiver Assembly

  1. Assemble robot receiver (per variant)

    • SaltyLab: 2-piece stem collar (M4×16 clamps Ø25 mm stem)
    • SaltyRover: Single flange piece (4× M4 to deck underbelly)
    • SaltyTank: Single piece w/ extended nose (4× M4 to skid plate)
  2. Press brass pads into receiver

    • Ø12 mm pads press into 0.1 mm interference bores
    • Apply Loctite 603 retaining compound to bore before pressing
    • Manual arbor press @ ~1-2 tons force; pads should be proud 0.2 mm
  3. Solder receiver wires

    • 12 AWG wires (red/black) solder to M3 solder lugs on pad rear
    • Route wires through wire channel on mount face
    • Terminate to robot BMS/charging PCB input

Wiring Diagram (24V System)

┌─────────────────────────────────────────────────────────────┐
│                       MAINS INPUT (AC)                       │
│                        110/220 V AC                          │
└────────────┬────────────────────────────────────────────────┘
             │
             ▼
      ┌──────────────┐
      │  IRM-240-24  │  24V / 10A out (240W)
      │   PSU        │  ±5% regulated, open-frame
      └──┬───────┬───┘
    +24V │       │ GND
         │       │
    ┌────┴┐   ┌─┴────┐
    │ [F] │   │ [F]  │  Fuse holder (25A slow-blow)
    │     │   │      │
    │ +24 │   │ GND  │  12 AWG silicone wire to back wall
    │     │   │      │
    └────┬┘   └─┬────┘
         │     │
    +24V│     │GND
        ▼     ▼
    ┌─────────────────┐
    │  Back wall      │
    │  ┌───────────┐  │
    │  │  POGO+    │  │ Spring-loaded contact pin (+24V)
    │  │  POGO-    │  │ Spring-loaded contact pin (GND)
    │  └────┬──────┘  │
    │       │         │
    │ ┌─────┴─────┐   │
    │ │  LED 1-4  │   │ Red, Yellow, Blue, Green indicators
    │ │  Resistors│   │ 1 kΩ limiting resistors (×4)
    │ │  [GPIO]   │   │ Control from Jetson Orin NX I2C
    │ └───────────┘   │
    └─────┬───────────┘
          │
     ═════╧════════ DOCK / ROBOT AIR GAP (≤50 mm) ═════════════
          │
          ▼
    ┌──────────────────┐
    │  Robot Receiver  │
    │  ┌────────────┐  │
    │  │ Contact +  │  │ Brass pad (Ø12×2 mm) [+24V]
    │  │ Contact -  │  │ Brass pad (Ø12×2 mm) [GND]
    │  └──┬──┬──────┘  │
    │     │  │         │
    │   12 AWG wires   │ Red/black to BMS
    │     │  │         │
    │  ┌──▼──▼──┐      │
    │  │ Robot  │      │
    │  │ BMS    │      │
    │  │Battery │      │ Charging current: 015A (typical)
    │  └────────┘      │
    └──────────────────┘

OPTIONAL — CURRENT SENSING (Diagnostic)
         │ +24V
    ┌────┴────┐
    │[INA219] │ I2C current monitor (0.1Ω sense resistor)
    │ I2C 0x40│ Jetson reads dock current → state machine
    └────┬────┘
         │ GND

LED STATE MACHINE CONTROL (from docking_node.py):
    State          GPIO/Signal    LED Output
    ─────────────────────────────────────────
    SEARCHING      GPIO H         Red LED ON (20 mA, 1 kΩ)
    ALIGNED        GPIO H         Yellow LED ON (pre-charge active)
    CHARGING       GPIO H         Blue LED ON (>1 A charging)
    FULL/COMPLETE  GPIO H         Green LED ON (float mode)

    GPIO driven via Jetson Orin NX I2C LED driver (e.g., PCA9685)
    or direct GPIO if firmware implements bitbang logic.

Integration with ROS2 Docking Node (#489)

Docking node location: ./jetson/ros2_ws/src/saltybot_docking/docking_node.py

MQTT Topics

Status reporting (outbound):

saltybot/docking/status  → { state, robot_id, contact_voltage, charge_current }
saltybot/docking/led     → { red, yellow, blue, green }  [0=OFF, 1=ON, blink_hz]

Command subscriptions (inbound):

saltybot/docking/reset   → trigger dock reset (clear fault)
saltybot/docking/park    → move robot out of dock (e.g., after full charge)

Firmware Integration

State machine (4 states):

  1. SEARCHING — No robot contact; dock waits for approach (ArUco marker detection via Jetson camera)
  2. ALIGNED — Contact made (BMS pre-charge active); dock supplies trickle current (~100 mA) while robot capacitors charge
  3. CHARGING — Main charge active; dock measures current via INA219, feedback to BMS
  4. FULL — Target voltage reached (≥23.5 V, <100 mA draw); dock holds float voltage

Current sensing feedback:

  • INA219 I2C shunt on 24V rail monitors dock-to-robot current
  • Jetson polls at 10 Hz; state transitions trigger LED updates & MQTT publish
  • Hysteresis prevents flickering (state valid for ≥2 sec)

Testing Checklist

  • Electrical safety

    • 24V output isolated from mains AC (< 2.5 kV isolation @ 60 Hz)
    • Fuse 25A blocks short-circuit (verify blow @ >30 A)
    • Varistor clamps transient overvoltage (check 28V limit)
    • All crimps are soldered + crimped (pull test: no slippage @ 10 lbf)
  • Mechanical

    • Base level on 4 rubber feet (no rocking)
    • V-rails parallel within ±2 mm across 250 mm length
    • Back wall perpendicular to base (level ±1°)
    • Pogo pins extend 4 mm from back wall face (spring preload correct)
  • Contact alignment

    • Robot receiver pads contact pogo pins with ≥3 mm contact face overlap
    • Contact resistance < 50 mΩ (measure with multimeter on lowest ohm scale during light press)
    • No visible arcing or pitting (inspect pads after 10 charge cycles)
  • Power delivery

    • 24V output at PSU: 23.524.5 V (under load)
    • 24V at pogo pins: ≥23.5 V (< 0.5 V droop @ 10 A)
    • Robot receives 24V ± 1 V (measure at BMS input)
  • LED status

    • Red (SEARCHING) steady on before robot approach
    • Yellow (ALIGNED) turns on when pads make contact
    • Blue (CHARGING) turns on when charge current > 500 mA
    • Green (FULL) turns on when current drops < 100 mA (float mode)
  • ArUco marker

    • Marker ID 42 is readable by Jetson camera from 1.5 m @ 90° angle
    • No glare or shadow on marker (add diffuse lighting if needed)
    • Marker detected by cv2.aruco in < 100 ms
  • MQTT integration

    • Dock publishes status every 5 sec (or on state change)
    • LED state matches reported dock state
    • Current sensing (INA219) reads within ±2% of true dock current

Firmware/Software Requirements

Jetson Orin NX (Docking controller)

Python dependencies:

pip install opencv-contrib-python  # ArUco marker detection
pip install adafruit-circuitpython-ina219  # Current sensing
pip install rclpy  # ROS2
pip install paho-mqtt  # MQTT status reporting

Key Python modules:

  • cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_250) → ArUco ID 42 detection
  • Adafruit_INA219 → I2C current monitoring @ 0x40
  • GPIO library → LED control (via I2C LED driver or direct GPIO)

ROS2 node: saltybot_docking/docking_node.py (already present, Issue #489)

  • Subscribes to /docking/approach_request
  • Publishes to /docking/status, /docking/led_state
  • MQTT gateway for legacy systems

Files to Commit

New files for Issue #505:

chassis/
├── charging_dock_505.scad              [Main dock 24V design]
├── charging_dock_receiver_505.scad     [Robot receiver 24V variant]
├── ISSUE_505_CHARGING_DOCK_24V_DESIGN.md  [This file]
├── charging_dock_505_BOM.csv           [Excel-friendly BOM export]
└── charging_dock_505_WIRING_DIAGRAM.md [Detailed wiring guide]

docs/
└── Issue_505_Assembly_Guide.md  [Step-by-step assembly photos + text]

Revision History

Date Version Changes
2026-03-06 1.0 Initial design (24V upgrade from Issue #159)

Next Steps

  1. Design specification (this document)
  2. OpenSCAD CAD files (charging_dock_505.scad, charging_dock_receiver_505.scad)
  3. BOM export (CSV format for procurement)
  4. 3D-printed prototype testing
  5. Electrical integration with Jetson docking node
  6. ArUco marker calibration & documentation
  7. PR submission & merge to main

Designer: sl-mechanical Date: 2026-03-06 Status: Design Specification Complete — Awaiting CAD Implementation