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.
The ObjectDetector class (src/vision/objects/ObjectDetector.cpp) detects and tracks non-fiducial competition props, including mallets, rock picks, and water bottles.
Unlike fiducial markers with geometric patterns, natural ground props require convolutional neural networks for robust classification under variable desert lighting.
[Raw Camera Image] (cv::Mat, 1280x720)
|
v
[Preprocessing] (yolomodel::pytorch::PyTorchInterpreter)
- Resize / Letterbox to 640x640
- Normalize channels to [0.0, 1.0]
- Convert to CUDA FloatTensor [1, 3, 640, 640]
|
v
[Inference on GPU] (LibTorch torch::jit::load)
- Model: OBJECTDETECT_TORCH_MODEL (.torchscript)
- BMP v6 (Baseline): v8s_x640_150epochs_augment/best.torchscript
- BMP v7 (Tucumcari): v8s_x640_100epochs_augment/best_tucumcari_arugmented_model.torchscript
|
v
[Post-Processing]
- Confidence Filter (OBJECTDETECT_MAINCAM_TORCH_CONFIDENCE)
- Non-Maximum Suppression (cv::dnn::NMSBoxes)
|
v
[Tracking & Temporal Validation]
- OpenCV CSRT / KCF MultiTracker
- BBOX_MIN_LIFETIME_THRESHOLD Filter
- BBOX_MIN_SCREEN_PERCENTAGE Filter
|
v
[3D Point Cloud Geolocation]
- GeolocateBox() against ZED Point Cloud
|
v
[objectdetectutils::Object Struct]
bmp_v6/v8s_x640_150epochs_augment/best.torchscript):
YOLOv8s trained for 150 epochs with standard photometric augmentation.bmp_v7/v8s_x640_100epochs_augment/best_tucumcari_arugmented_model.torchscript):
YOLOv8s trained for 100 epochs with specialized desert terrain data augmentation specifically captured for the Tucumcari competition site, optimizing detection under extreme midday sunlight and shadows.The system detects three primary competition classes:
manifest::Autonomy::AUTONOMYWAYPOINTTYPES::MALLET).manifest::Autonomy::AUTONOMYWAYPOINTTYPES::WATERBOTTLE).manifest::Autonomy::AUTONOMYWAYPOINTTYPES::ROCKPICK).When evaluating detections in ObjectDetectionChecker::IdentifyTargetObject():
constants::BBOX_MIN_LIFETIME_THRESHOLD to eliminate transient false positives.Because competition props vary in dimensions and orientation, estimating distance via 2D pinhole trigonometry is prone to error. The ObjectDetector resolves physical location by pairing 2D bounding boxes with the ZED 3D point cloud:
geoloc::GeolocateBox() along with the synchronized CV_32FC4 point cloud matrix and the fused rover pose.GeolocateBox() queries a 5x5 neighborhood around $(u_c, v_c)$, sorts the depth values, and computes the 20th percentile surface depth to isolate the object face from the desert ground behind it.geoops::Waypoint.During mission execution:
eNavigating or eSearchPattern, ObjectDetectionChecker monitors for target detections.Event::eObjectSeen and transitions to eApproachingObject.constants::APPROACH_OBJECT_PROXIMITY_THRESHOLD.Event::eReachedObject, transitioning to eVerifyingObject to halt, confirm the detection hit-rate over time, and signal the C2 station.