Split aprilrobotics into a library
This will allow the mapping class to instantiate a
AprilRoboticsDetector with the log reader event loop.
Also made this code compatible with x86.
Signed-off-by: milind-u <milind.upadhyay@gmail.com>
Change-Id: Ie05bc947710fa1a456fd08db1e1d40ffb9f71119
diff --git a/third_party/apriltag/BUILD b/third_party/apriltag/BUILD
index e4acc96..b11e34f 100644
--- a/third_party/apriltag/BUILD
+++ b/third_party/apriltag/BUILD
@@ -1,3 +1,5 @@
+load("@//tools/build_rules:select.bzl", "compiler_select")
+
cc_library(
name = "apriltag",
srcs = [
@@ -69,18 +71,23 @@
"tagStandard41h12.h",
"tagStandard52h13.h",
],
- copts = [
- "-Wno-unused-parameter",
- "-Wno-cast-qual",
+ copts = compiler_select({
+ "clang": [
+ "-Wno-cast-align",
+ "-Wno-incompatible-pointer-types-discards-qualifiers",
+ ],
+ "gcc": [
+ "-Wno-discarded-qualifiers",
+ "-Wno-shift-negative-value",
+ ],
+ }) + [
"-Wno-sign-compare",
+ "-Wno-cast-qual",
+ "-Wno-unused-parameter",
"-Wno-unused-variable",
- "-Wno-cast-align",
- "-Wno-incompatible-pointer-types-discards-qualifiers",
"-Wno-format-nonliteral",
],
includes = ["."],
- target_compatible_with = [
- "@platforms//cpu:arm64",
- ],
+ target_compatible_with = ["@platforms//os:linux"],
visibility = ["//visibility:public"],
)
diff --git a/y2023/vision/BUILD b/y2023/vision/BUILD
index 25ae2b9..55390e4 100644
--- a/y2023/vision/BUILD
+++ b/y2023/vision/BUILD
@@ -98,8 +98,8 @@
],
)
-cc_binary(
- name = "aprilrobotics",
+cc_library(
+ name = "aprilrobotics_lib",
srcs = [
"aprilrobotics.cc",
"aprilrobotics.h",
@@ -119,3 +119,17 @@
"//third_party/apriltag",
],
)
+
+cc_binary(
+ name = "aprilrobotics",
+ srcs = [
+ "aprilrobotics_main.cc",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//y2023:__subpackages__"],
+ deps = [
+ ":aprilrobotics_lib",
+ "//aos:init",
+ "//aos/events:shm_event_loop",
+ ],
+)
diff --git a/y2023/vision/aprilrobotics.cc b/y2023/vision/aprilrobotics.cc
index f8a8e38..3bf0adf 100644
--- a/y2023/vision/aprilrobotics.cc
+++ b/y2023/vision/aprilrobotics.cc
@@ -1,7 +1,5 @@
#include "y2023/vision/aprilrobotics.h"
-DEFINE_string(config, "aos_config.json", "Path to the config file to use.");
-
DEFINE_bool(
debug, false,
"If true, dump a ton of debug and crash on the first valid detection.");
@@ -167,31 +165,5 @@
return results;
}
-void AprilViewerMain() {
- aos::FlatbufferDetachedBuffer<aos::Configuration> config =
- aos::configuration::ReadConfig(FLAGS_config);
-
- aos::ShmEventLoop event_loop(&config.message());
-
- AprilRoboticsDetector detector(&event_loop, "/camera");
-
- detector.SetWorkerpoolAffinities();
-
- event_loop.SetRuntimeAffinity(aos::MakeCpusetFromCpus({5}));
-
- struct sched_param param;
- param.sched_priority = 21;
- PCHECK(sched_setscheduler(0, SCHED_FIFO, ¶m) == 0);
-
- event_loop.Run();
-}
-
} // namespace vision
} // namespace y2023
-
-int main(int argc, char **argv) {
- aos::InitGoogle(&argc, &argv);
- y2023::vision::AprilViewerMain();
-
- return 0;
-}
diff --git a/y2023/vision/aprilrobotics.h b/y2023/vision/aprilrobotics.h
index f36f3eb..6aafd75 100644
--- a/y2023/vision/aprilrobotics.h
+++ b/y2023/vision/aprilrobotics.h
@@ -3,7 +3,6 @@
#include "aos/events/event_loop.h"
#include "aos/events/shm_event_loop.h"
-#include "aos/init.h"
#include "aos/network/team_number.h"
#include "aos/realtime.h"
#include "frc971/vision/calibration_generated.h"
diff --git a/y2023/vision/aprilrobotics_main.cc b/y2023/vision/aprilrobotics_main.cc
new file mode 100644
index 0000000..67b853f
--- /dev/null
+++ b/y2023/vision/aprilrobotics_main.cc
@@ -0,0 +1,34 @@
+#include "aos/events/shm_event_loop.h"
+#include "aos/init.h"
+#include "y2023/vision/aprilrobotics.h"
+
+DEFINE_string(config, "aos_config.json", "Path to the config file to use.");
+
+namespace y2023::vision {
+void AprilViewerMain() {
+ aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+ aos::configuration::ReadConfig(FLAGS_config);
+
+ aos::ShmEventLoop event_loop(&config.message());
+
+ AprilRoboticsDetector detector(&event_loop, "/camera");
+
+ detector.SetWorkerpoolAffinities();
+
+ event_loop.SetRuntimeAffinity(aos::MakeCpusetFromCpus({5}));
+
+ struct sched_param param;
+ param.sched_priority = 21;
+ PCHECK(sched_setscheduler(0, SCHED_FIFO, ¶m) == 0);
+
+ event_loop.Run();
+}
+
+} // namespace y2023::vision
+
+int main(int argc, char **argv) {
+ aos::InitGoogle(&argc, &argv);
+ y2023::vision::AprilViewerMain();
+
+ return 0;
+}