Move geometry lib to frc971/vision
Going to use for target mapping. Previously used this for 2022 vision.
Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Change-Id: Ifd9d13d3f9b0ea1aac42fb6c96ef2a5062b9f637
diff --git a/frc971/vision/BUILD b/frc971/vision/BUILD
index ca35f7c..65d236d 100644
--- a/frc971/vision/BUILD
+++ b/frc971/vision/BUILD
@@ -86,3 +86,28 @@
"@org_tuxfamily_eigen//:eigen",
],
)
+
+cc_library(
+ name = "geometry_lib",
+ hdrs = [
+ "geometry.h",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//aos/util:math",
+ "//third_party:opencv",
+ "@com_github_google_glog//:glog",
+ ],
+)
+
+cc_test(
+ name = "geometry_test",
+ srcs = [
+ "geometry_test.cc",
+ ],
+ deps = [
+ ":geometry_lib",
+ "//aos/testing:googletest",
+ ],
+)
diff --git a/y2022/vision/geometry.h b/frc971/vision/geometry.h
similarity index 96%
rename from y2022/vision/geometry.h
rename to frc971/vision/geometry.h
index c27eb4d..e3527f5 100644
--- a/y2022/vision/geometry.h
+++ b/frc971/vision/geometry.h
@@ -1,11 +1,11 @@
-#ifndef Y2022_VISION_GEOMETRY_H_
-#define Y2022_VISION_GEOMETRY_H_
+#ifndef FRC971_VISION_GEOMETRY_H_
+#define FRC971_VISION_GEOMETRY_H_
#include "aos/util/math.h"
#include "glog/logging.h"
#include "opencv2/core/types.hpp"
-namespace y2022::vision {
+namespace frc971::vision {
// Linear equation in the form y = mx + b
struct SlopeInterceptLine {
@@ -131,6 +131,6 @@
}
};
-} // namespace y2022::vision
+} // namespace frc971::vision
-#endif // Y2022_VISION_GEOMETRY_H_
+#endif // FRC971_VISION_GEOMETRY_H_
diff --git a/y2022/vision/geometry_test.cc b/frc971/vision/geometry_test.cc
similarity index 96%
rename from y2022/vision/geometry_test.cc
rename to frc971/vision/geometry_test.cc
index 0a5a759..19e54c4 100644
--- a/y2022/vision/geometry_test.cc
+++ b/frc971/vision/geometry_test.cc
@@ -1,4 +1,4 @@
-#include "y2022/vision/geometry.h"
+#include "frc971/vision/geometry.h"
#include <cmath>
@@ -6,7 +6,7 @@
#include "glog/logging.h"
#include "gtest/gtest.h"
-namespace y2022::vision::testing {
+namespace frc971::vision::testing {
TEST(GeometryTest, SlopeInterceptLine) {
// Test a normal line
@@ -108,4 +108,4 @@
}
}
-} // namespace y2022::vision::testing
+} // namespace frc971::vision::testing
diff --git a/y2022/vision/BUILD b/y2022/vision/BUILD
index 6325234..233465e 100644
--- a/y2022/vision/BUILD
+++ b/y2022/vision/BUILD
@@ -121,7 +121,6 @@
":blob_detector_lib",
":calibration_data",
":calibration_fbs",
- ":geometry_lib",
":target_estimate_fbs",
":target_estimator_lib",
"//aos:flatbuffer_merge",
@@ -217,31 +216,6 @@
)
cc_library(
- name = "geometry_lib",
- hdrs = [
- "geometry.h",
- ],
- target_compatible_with = ["@platforms//os:linux"],
- visibility = ["//y2022:__subpackages__"],
- deps = [
- "//aos/util:math",
- "//third_party:opencv",
- "@com_github_google_glog//:glog",
- ],
-)
-
-cc_test(
- name = "geometry_test",
- srcs = [
- "geometry_test.cc",
- ],
- deps = [
- ":geometry_lib",
- "//aos/testing:googletest",
- ],
-)
-
-cc_library(
name = "blob_detector_lib",
srcs = [
"blob_detector.cc",
@@ -252,9 +226,9 @@
target_compatible_with = ["@platforms//os:linux"],
visibility = ["//y2022:__subpackages__"],
deps = [
- ":geometry_lib",
"//aos/network:team_number",
"//aos/time",
+ "//frc971/vision:geometry_lib",
"//third_party:opencv",
],
)
@@ -276,6 +250,7 @@
"//aos/logging",
"//aos/time",
"//frc971/control_loops:quaternion_utils",
+ "//frc971/vision:geometry_lib",
"//third_party:opencv",
"//y2022:constants",
"@com_google_absl//absl/strings:str_format",
diff --git a/y2022/vision/blob_detector.cc b/y2022/vision/blob_detector.cc
index 2f90513..3893ed6 100644
--- a/y2022/vision/blob_detector.cc
+++ b/y2022/vision/blob_detector.cc
@@ -6,10 +6,10 @@
#include "aos/network/team_number.h"
#include "aos/time/time.h"
+#include "frc971/vision/geometry.h"
#include "opencv2/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc.hpp"
-#include "y2022/vision/geometry.h"
DEFINE_bool(
use_outdoors, true,
@@ -140,7 +140,7 @@
constexpr double kMaxBlobAngle = M_PI - kMinBlobAngle;
std::vector<std::vector<cv::Point>> blob_circle;
std::vector<BlobStats> blob_circle_stats;
- Circle circle;
+ frc971::vision::Circle circle;
// If we see more than this number of blobs after filtering based on
// color/size, the circle fit may detect noise so just return no blobs.
@@ -165,9 +165,10 @@
filtered_blobs[j], filtered_blobs[k], filtered_blobs[l]};
std::vector<BlobStats> current_stats{filtered_stats[j], filtered_stats[k],
filtered_stats[l]};
- const std::optional<Circle> current_circle =
- Circle::Fit({current_stats[0].centroid, current_stats[1].centroid,
- current_stats[2].centroid});
+ const std::optional<frc971::vision::Circle> current_circle =
+ frc971::vision::Circle::Fit({current_stats[0].centroid,
+ current_stats[1].centroid,
+ current_stats[2].centroid});
// Make sure that a circle could be created from the points
if (!current_circle) {
diff --git a/y2022/vision/target_estimator.cc b/y2022/vision/target_estimator.cc
index 1447d81..9bbaf75 100644
--- a/y2022/vision/target_estimator.cc
+++ b/y2022/vision/target_estimator.cc
@@ -4,7 +4,7 @@
#include "aos/time/time.h"
#include "ceres/ceres.h"
#include "frc971/control_loops/quaternion_utils.h"
-#include "geometry.h"
+#include "frc971/vision/geometry.h"
#include "opencv2/core/core.hpp"
#include "opencv2/core/eigen.hpp"
#include "opencv2/features2d.hpp"
@@ -156,9 +156,9 @@
CHECK_GE(blob_stats_.size(), 3) << "Expected at least 3 blobs";
- const auto circle =
- Circle::Fit({blob_stats_[0].centroid, blob_stats_[1].centroid,
- blob_stats_[2].centroid});
+ const auto circle = frc971::vision::Circle::Fit({blob_stats_[0].centroid,
+ blob_stats_[1].centroid,
+ blob_stats_[2].centroid});
CHECK(circle.has_value());
max_blob_area_ = 0.0;