Provide 2023 target selector
This should let us do the exact same logic as y2019. This means that the
driver has to control drivetrain velocity directly (not, e.g.,
position), but is a logical first step.
This has an extremely initial tuning that should work sanely.
Does not support going backwards yet.
Change-Id: I29675be6e6d73106563f4abc6e823a1ffcb39946
Signed-off-by: James Kuszmaul <jabukuszmaul@gmail.com>
diff --git a/y2023/control_loops/drivetrain/BUILD b/y2023/control_loops/drivetrain/BUILD
index 416d6d9..32b8c15 100644
--- a/y2023/control_loops/drivetrain/BUILD
+++ b/y2023/control_loops/drivetrain/BUILD
@@ -81,6 +81,7 @@
visibility = ["//visibility:public"],
deps = [
":drivetrain_base",
+ ":target_selector",
"//aos:init",
"//aos/events:shm_event_loop",
"//frc971/control_loops/drivetrain:drivetrain_lib",
@@ -131,3 +132,32 @@
gen_reflections = 1,
visibility = ["//visibility:public"],
)
+
+cc_library(
+ name = "target_selector",
+ srcs = ["target_selector.cc"],
+ hdrs = ["target_selector.h"],
+ deps = [
+ ":target_selector_hint_fbs",
+ "//aos/containers:sized_array",
+ "//aos/events:event_loop",
+ "//frc971/constants:constants_sender_lib",
+ "//frc971/control_loops:pose",
+ "//frc971/control_loops/drivetrain:localizer",
+ "//frc971/input:joystick_state_fbs",
+ "//y2023/constants:constants_fbs",
+ ],
+)
+
+cc_test(
+ name = "target_selector_test",
+ srcs = ["target_selector_test.cc"],
+ data = ["//y2023:aos_config"],
+ deps = [
+ ":target_selector",
+ "//aos/events:simulated_event_loop",
+ "//aos/testing:googletest",
+ "//frc971/input:joystick_state_fbs",
+ "//y2023/constants:simulated_constants_sender",
+ ],
+)