How hmarthens1/rpi4-robot-board works
This repository provides a Raspberry Pi robot-board driver plus ROS 2 status, command, and vision nodes. The principal control workflow is a ROS client sending a command to the command node, which applies safety checks and drives board, arm, or GPIO hardware; status reports battery and sonar readings. A separate camera workflow produces lane and object-detection outputs. Python CLI and library access the same board capabilities. Some subsystem details are documented but unsampled, so their internal links are omitted.
Main entry points: command_node.cpp Command node · vision_node.cpp Vision node · cli.py Board CLI · status_node.cpp Status node
Components 25
Python board driver
- Board CLI
robot_board/cli.py - Board driver
robot_board/board.py - GPIO peripherals
robot_board/peripherals.py - Sonar driver
robot_board/sonar.py - Mecanum mixer
robot_board/mecanum.py
ROS board control
- Command node
ros2/robot_status/src/command_node.cpp - Status node
ros2/robot_status/src/status_node.cpp - Board driver
ros2/robot_status/src/board.cpp - I2C transport
ros2/robot_status/src/i2c.cpp - GPIO peripherals
ros2/robot_status/src/peripherals.cpp - Sonar driver
ros2/robot_status/src/sonar.cpp - Arm kinematics
ros2/robot_status/src/arm.cpp
ROS vision
- Vision node
ros2/robot_vision/src/vision_node.cpp - Lane detection
ros2/robot_vision/src/lane.cpp - Lane seeker
ros2/robot_vision/src/lane_seeker.cpp - YOLOX detection
ros2/robot_vision/src/yolox.cpp
Other components
- Robot operator
- Board hardware
- GPIO hardware
- Sonar module
- ROS clients
- Command results
- Status topics
- USB camera
- Vision topics
Connections 26
- Robot operator → Board CLI: runs commands
README.md - Board CLI → Board driver: reads battery
robot_board/cli.py - Board CLI → GPIO peripherals: tests peripherals
robot_board/cli.py - Board CLI → Sonar driver: reads distance
robot_board/cli.py - Board driver → Board hardware: I2C controls
README.md - GPIO peripherals → GPIO hardware: drives GPIO
robot_board/peripherals.py - Sonar driver → Sonar module: I2C reads
README.md - Mecanum mixer → Board driver: mixes wheel speeds
README.md - ROS clients → Command node: sends commands
README.md - Command node → Board driver: commands motors
ros2/robot_status/src/command_node.cpp - Command node → GPIO peripherals: controls LEDs
ros2/robot_status/src/command_node.cpp - Command node → Sonar driver: checks clearance
ros2/robot_status/src/command_node.cpp - Command node → Arm kinematics: solves arm moves
ros2/robot_status/src/command_node.cpp - Command node → Command results: publishes results
README.md - Board driver → I2C transport: transfers board data
- Sonar driver → I2C transport: transfers sonar data
- Status node → Board driver: reads battery
README.md - Status node → Sonar driver: reads range
README.md - Status node → Status topics: publishes status
README.md - ROS clients → Status node: subscribes topics
README.md - USB camera → Vision node: supplies frames
ros2/robot_vision/src/vision_node.cpp - Vision node → Lane detection: detects lanes
ros2/robot_vision/src/vision_node.cpp - Vision node → Lane seeker: updates seeking
ros2/robot_vision/src/vision_node.cpp - Vision node → YOLOX detection: detects objects
ros2/robot_vision/src/vision_node.cpp - Vision node → Vision topics: publishes vision
ros2/robot_vision/src/vision_node.cpp - ROS clients → Vision node: configures vision
ros2/robot_vision/src/vision_node.cpp