How macrobomaster/cv works
This repository is a robotics-vision and field-control stack. Its principal runtime workflow turns camera frames into plate detections and tracked targets, combines those with localization and occupancy estimates, then plans chassis motion and computes gimbal aim and firing commands. Separate daemons provide tag-based localization, navigation, state-driven goals, and communications; the tree also contains auto-aim model training and synthetic-data generation. The excerpts support key message flows, but not every daemon’s wiring, so uncertain links are omitted.
Main entry points: navd.py Path planning · camerad.py Camera daemon · slamd.py Field localization · plated.py Plate tracking
Components 25
Perception
- Camera daemon
cv/system/camerad/camerad.py - Auto-aim inference
cv/system/autoaimd/autoaimd.py - Plate tracking
cv/system/plated/plated.py - AprilTag detection
cv/system/tagd/tagd.py - Camera occupancy
cv/system/occupancyd/occupancyd.py - Ground projection
cv/occupancy/ipm.py
Localization and Navigation
- Field localization
cv/system/slamd/slamd.py - Pose filter
cv/slam/filter.py - Path planning
cv/system/navd/navd.py - Grid planner
cv/nav/planner.py - Occupancy grid
cv/nav/occupancy.py
Robot Control
- Aim and fire
cv/system/decisiond/decisiond.py - Gimbal control
cv/system/gimbald/gimbald.py - Robot state machine
cv/system/stated/stated.py - Device communications
cv/system/commsd/commsd.py
Runtime Infrastructure
- Service supervisor
cv/system/core/supervisor.py - Message bus
cv/system/core/messaging.py - Shared frame ring
cv/system/common/frame_ring.py
Model Training
- Auto-aim model
cv/autoaim/model.py - Auto-aim training
cv/autoaim/train.py - Synthetic scenes
cv/autoaim/syndata/__init__.py
Other components
- Camera hardware
- Robot sensors
- Robot actuators
- Operator
Connections 29
- Camera hardware → Camera daemon: captures
- Camera daemon → Shared frame ring: writes frames
- Camera daemon → Auto-aim inference: publishes frames
- Auto-aim inference → Auto-aim model: runs inference
- Auto-aim inference → Plate tracking: publishes detections
- Camera daemon → Camera occupancy: publishes frames
- Camera daemon → AprilTag detection: provides frames
- AprilTag detection → Field localization: provides tag detections
- Robot sensors → Field localization: provides motion data
- Field localization → Pose filter: updates pose
- Field localization → Plate tracking: publishes pose
- Field localization → Camera occupancy: publishes pose
- Camera occupancy → Ground projection: projects contacts
- Camera occupancy → Path planning: publishes occupancy
- Plate tracking → Aim and fire: publishes target
- Plate tracking → Path planning: provides obstacles
- Operator → Robot state machine: sets mode
- Robot state machine → Path planning: sends goals
- Path planning → Grid planner: plans route
- Path planning → Occupancy grid: updates grid
- Path planning → Robot actuators: commands chassis
- Aim and fire → Gimbal control: sends setpoints
- Aim and fire → Robot actuators: commands firing
- Gimbal control → Robot actuators: commands gimbal
- Gimbal control → Aim and fire: publishes state
- Device communications → Robot actuators: dispatches commands
- Service supervisor → Message bus: starts services
- Synthetic scenes → Auto-aim training: generates samples
- Auto-aim training → Auto-aim model: trains weights