Penalize vision solver based on projected size
This makes the distance much more accurate.
Also, use standard deviation in pixels to compute confidence.
Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Change-Id: I53f16100065a2bb75b31e78af057326163265d8e
diff --git a/y2022/vision/camera_reader.cc b/y2022/vision/camera_reader.cc
index 637ad0a..2be2ef1 100644
--- a/y2022/vision/camera_reader.cc
+++ b/y2022/vision/camera_reader.cc
@@ -98,8 +98,8 @@
CvBlobsToFbs(blob_result.unfiltered_blobs, &builder);
const auto blob_stats_offset =
BlobStatsToFbs(blob_result.blob_stats, &builder);
- const auto filtered_centroids_offset =
- CvPointsToFbs(blob_result.filtered_centroids, &builder);
+ const auto filtered_stats_offset =
+ BlobStatsToFbs(blob_result.filtered_stats, &builder);
const Point centroid_fbs =
Point{blob_result.centroid.x, blob_result.centroid.y};
@@ -107,12 +107,12 @@
blob_result_builder.add_filtered_blobs(filtered_blobs_offset);
blob_result_builder.add_unfiltered_blobs(unfiltered_blobs_offset);
blob_result_builder.add_blob_stats(blob_stats_offset);
- blob_result_builder.add_filtered_centroids(filtered_centroids_offset);
+ blob_result_builder.add_filtered_stats(filtered_stats_offset);
blob_result_builder.add_centroid(¢roid_fbs);
blob_result_offset = blob_result_builder.Finish();
}
- target_estimator_.Solve(blob_result.filtered_centroids, std::nullopt);
+ target_estimator_.Solve(blob_result.filtered_stats, std::nullopt);
const auto camera_calibration_offset =
aos::RecursiveCopyFlatBuffer(camera_calibration_, builder.fbb());