How boosterrobotics/robocup_demo works
Booster RoboCup Demo runs a perception-to-action match workflow: vision recognizes field objects and estimates their robot-relative positions; the GameController adapter converts referee broadcasts to ROS topics; brain combines those inputs, selects match behavior, and commands the robot. Calibration and visualization are additional product capabilities. The README documents the main program boundaries; source excerpts and the index show selected internal ownership, but do not establish every ROS topic or runtime connection, so those links are omitted where evidence is absent.
Main entry points: brain.cpp Match decision · vision_node.cpp Vision node · game_controller_node.cpp GameController adapter · robot_client.cpp Motion commands
Components 22
Vision and calibration
- Vision node
src/vision/src/vision_node.cpp - Object detection
src/vision/src/model/detector.cc - Segmentation
src/vision/src/model/segmentor.cc - Pose estimation
src/vision/src/pose_estimator/pose_estimator.cpp - Camera calibration
src/vision/src/calibration/calibration_node.cpp - Detection converter
src/detection_converter/scripts/detection_converter_node.py
Match inputs
- GameController adapter
src/game_controller/src/game_controller_node.cpp
Brain and behavior
- Brain node
src/brain/src/main.cpp - Match decision
src/brain/src/brain.cpp - Behavior tree
src/brain/src/brain_tree.cpp - Brain configuration
src/brain/src/brain_config.cpp - Runtime state
src/brain/src/brain_data.cpp - Robot localization
src/brain/src/locator.cpp - Team communication
src/brain/src/brain_communication.cpp - Match visualization
src/brain/src/visualization_publisher.cpp - Coordinate utilities
src/brain/include/utils/math.h - Brain utilities
src/brain/include/utils/misc.h - Logging utilities
src/brain/include/utils/print.h
Robot interface
- Motion commands
src/brain/src/robot_client.cpp
Other components
- Camera streams
- Referee broadcast
- Booster robot
Connections 21
- Camera streams → Vision node: provides images
- Vision node → Object detection: detects objects
- Vision node → Segmentation: segments field
- Vision node → Pose estimation: estimates positions
- Vision node → Match decision: supplies visual data
- Referee broadcast → GameController adapter: broadcasts packets
- GameController adapter → Match decision: publishes game data
- Brain node → Match decision: constructs
src/brain/src/main.cpp - Match decision → Behavior tree: ticks behavior
- Match decision → Brain configuration: uses configuration
- Match decision → Runtime state: uses runtime state
- Match decision → Robot localization: uses localization
- Match decision → Team communication: uses communication
- Match decision → Match visualization: publishes markers
- Match decision → Motion commands: issues actions
- Motion commands → Booster robot: sends motion commands
- Camera calibration → Pose estimation: uses estimator
src/vision/src/calibration/calibration_node.cpp - Vision node → Camera streams: reads camera data
- Coordinate utilities → Match decision: supports calculations
src/brain/src/brain.cpp - Brain utilities → Match decision: supports utilities
src/brain/src/brain.cpp - Logging utilities → Match decision: formats output
src/brain/src/brain.cpp