Add basic line-following drivetrain
Works by drawing a Nth degree polynomial to guide us to the target and
guiding a lateral controller to follow it given a speed provided by the
driver.
Change-Id: I94fd31666769ca398b66f04665f39e01cee00627
diff --git a/frc971/control_loops/drivetrain/BUILD b/frc971/control_loops/drivetrain/BUILD
index e332cfe..7dedc71 100644
--- a/frc971/control_loops/drivetrain/BUILD
+++ b/frc971/control_loops/drivetrain/BUILD
@@ -101,6 +101,43 @@
)
cc_library(
+ name = "line_follow_drivetrain",
+ srcs = [
+ "line_follow_drivetrain.cc",
+ ],
+ hdrs = [
+ "line_follow_drivetrain.h",
+ ],
+ deps = [
+ ":drivetrain_config",
+ ":drivetrain_queue",
+ "//aos:math",
+ "//aos/util:math",
+ "//frc971/control_loops:c2d",
+ "//frc971/control_loops:dlqr",
+ "//frc971/control_loops:pose",
+ "//third_party/eigen",
+ ],
+)
+
+cc_test(
+ name = "line_follow_drivetrain_test",
+ srcs = ["line_follow_drivetrain_test.cc"],
+ linkstatic = True,
+ restricted_to = ["//tools:k8"],
+ deps = [
+ ":drivetrain_config",
+ ":drivetrain_test_lib",
+ ":line_follow_drivetrain",
+ ":trajectory",
+ "//aos/testing:googletest",
+ "//aos/testing:test_shm",
+ "//third_party/matplotlib-cpp",
+ "@com_github_gflags_gflags//:gflags",
+ ],
+)
+
+cc_library(
name = "ssdrivetrain",
srcs = [
"ssdrivetrain.cc",
@@ -221,6 +258,7 @@
":down_estimator",
":drivetrain_queue",
":gear",
+ ":line_follow_drivetrain",
":localizer",
":polydrivetrain",
":splinedrivetrain",