How brnomarsrover/power-distribution-board works
This repository combines a power-distribution board design, its Pico firmware, and a ROS 2 driver. The principal workflow measures branch voltages and currents, monitors limits, emits versioned serial telemetry/events, then parses and republishes them as ROS topics and diagnostics; ROS commands can travel back to the board. Hardware, firmware, and driver relationships are documented in the README. Firmware and ROS source excerpts are partial, so uncertain internal call links are omitted.
Main entry points: powerboard_node.py Powerboard node · Functions.cpp Measurement and control · PowerBoard.kicad_sch Power board · serial_line_reader.py Serial line reader
Components 16
Board hardware
- Power board
kicad/PowerBoard.kicad_sch - PCB layout
kicad/PowerBoard.kicad_pcb - INA238 monitors
Board firmware
- Firmware sketch
firmware/PowerBoard/PowerBoard.ino - Measurement and control
firmware/PowerBoard/Functions.cpp - INA238 driver
firmware/PowerBoard/INA238.cpp - Branch state
firmware/PowerBoard/Globals.cpp - Board configuration
firmware/PowerBoard/Config.cpp
ROS 2 driver
- Powerboard node
ros2/powerboard/powerboard/powerboard_node.py - Battery estimate
ros2/powerboard/powerboard/powerboard_node.py - Rail topics
ros2/powerboard/powerboard/powerboard_node.py - Diagnostics
ros2/powerboard/powerboard/powerboard_node.py - Event topic
ros2/powerboard/powerboard/powerboard_node.py
Serial interface
- JSON protocol
firmware/PowerBoard/Functions.cpp - Serial line reader
ros2/powerboard/powerboard/serial_line_reader.py
Other components
- ROS user
Connections 19
- Power board → PCB layout: laid out as
README.md - Power board → INA238 monitors: includes
README.md - Firmware sketch → Measurement and control: runs
- Measurement and control → INA238 driver: reads sensors
firmware/PowerBoard/Functions.cpp - Measurement and control → Branch state: updates state
firmware/PowerBoard/Functions.cpp - Measurement and control → Board configuration: uses settings
firmware/PowerBoard/Functions.cpp - Measurement and control → JSON protocol: emits frames
firmware/PowerBoard/Functions.cpp - JSON protocol → Serial line reader: sends telemetry
README.md - Powerboard node → Serial line reader: polls and writes
ros2/powerboard/powerboard/powerboard_node.py - Powerboard node → JSON protocol: parses and commands
README.md - Powerboard node → Battery estimate: estimates battery
ros2/powerboard/powerboard/powerboard_node.py - Powerboard node → Rail topics: publishes rails
ros2/powerboard/powerboard/powerboard_node.py - Powerboard node → Diagnostics: publishes status
ros2/powerboard/powerboard/powerboard_node.py - Powerboard node → Event topic: publishes events
README.md - ROS user → Powerboard node: subscribes commands
README.md - Battery estimate → ROS user: publishes battery
README.md - Rail topics → ROS user: publishes arrays
README.md - Diagnostics → ROS user: publishes diagnostics
README.md - Event topic → ROS user: publishes events
README.md