Central engineering reference and operations manual for the MRDT Autonomy Software.
View the Project on GitHub MissouriMRDT/Autonomy_Software
Return to RoveSoDocs Guides for Today, Tomorrow, and Forever.
During competitive missions, the rover must autonomously locate, identify, and drive toward fiducial markers (AR Tags) mounted on target posts across the course.
TagDetector Pipeline (TagDetector.cpp)The TagDetector class inherits from AutonomyThread<void> and executes continuous image processing on incoming frames from its assigned camera:
[Camera Frame Input]
|
+-----------------------------------+
| |
v v
[OpenCV ArUco Detection] [LibTorch YOLO Tag Fallback]
- Dictionary: DICT_4X4_50 - Model: TAGDETECT_TORCH_MODEL (.pt)
- Sub-pixel Corner Refinement - Bounding Box & Confidence Score
- Decode Marker ID & Corners - Distant / Glare Detection
| |
+-----------------+-----------------+
|
v
[Bounding Box Tracking]
- KCF / CSRT Tracker Updates
- BBOX_MIN_LIFETIME_THRESHOLD Filter
- BBOX_MIN_SCREEN_PERCENTAGE Filter
|
v
[TagDetectionUtility::EstimatePose]
- Trigonometric Distance Calculation
- Optical Yaw Angle Extraction
|
v
[tagdetectutils::ArucoTag Struct]
cv::aruco::DICT_4X4_50 matching official URC specifications.cv::aruco::CORNER_REFINE_SUBPIX to pinpoint tag corner vertices at sub-pixel accuracy.constants::TAGDETECT_MAINCAM_DETECT_INVERTED_MARKER to detect markers in harsh shadow or backlighting.When distance exceeds 10 meters, dust occludes corners, or direct sunlight washes out the tag face, classical ArUco fails to detect the geometric square.
yolomodel::pytorch::PyTorchInterpreter).Visual noise and random terrain patterns can produce instantaneous false positive detections.
TagDetectionChecker::IdentifyTargetMarker(), its bounding box must occupy at least constants::BBOX_MIN_SCREEN_PERCENTAGE of the camera image and persist for at least constants::BBOX_MIN_LIFETIME_THRESHOLD (typically 0.5 seconds).TagDetectionUtilty.hpp)Knowing a tag exists in frame is insufficient; the control system requires the straight-line distance and the horizontal yaw angle between the camera optical axis and the marker:
constants::ARUCO_TAG_SIDE_LENGTH (default 0.20 meters).Inside ApproachingMarkerState:
Event::eReachedMarker to transition to eVerifyingMarker.