Make swerve_control_loops use continuous controller & zeroing
This updates the per-module control code to make use of the continuous
control loops and to actually zero the modules so that we can do simple
data collection.
Future TODOs:
* Update the control loop to use the static flatbuffers API.
Change-Id: I40c41fb207cbee9ddc3c31d4b5b023da468964d8
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/y2024_swerve/BUILD b/y2024_swerve/BUILD
index e432358..2357c6e 100644
--- a/y2024_swerve/BUILD
+++ b/y2024_swerve/BUILD
@@ -32,6 +32,7 @@
"//aos/starter:irq_affinity",
":wpilib_interface",
":swerve_publisher",
+ "//y2024_swerve/control_loops:swerve_control_loops",
"//frc971/can_logger",
"//aos/network:message_bridge_client",
"//aos/network:message_bridge_server",
diff --git a/y2024_swerve/control_loops/BUILD b/y2024_swerve/control_loops/BUILD
index 67fa349..0417af9 100644
--- a/y2024_swerve/control_loops/BUILD
+++ b/y2024_swerve/control_loops/BUILD
@@ -1,5 +1,21 @@
load("//tools/build_rules:js.bzl", "ts_project")
+cc_binary(
+ name = "swerve_control_loops",
+ srcs = [
+ "swerve_control_loops_main.cc",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//aos:init",
+ "//aos/events:shm_event_loop",
+ "//aos/time",
+ "//frc971/constants:constants_sender_lib",
+ "//frc971/control_loops/swerve:swerve_control_loops",
+ "//y2024_swerve/constants:constants_fbs",
+ ],
+)
+
ts_project(
name = "swerve_plotter",
srcs = ["swerve_plotter.ts"],
diff --git a/y2024_swerve/control_loops/swerve_control_loops_main.cc b/y2024_swerve/control_loops/swerve_control_loops_main.cc
new file mode 100644
index 0000000..813744a
--- /dev/null
+++ b/y2024_swerve/control_loops/swerve_control_loops_main.cc
@@ -0,0 +1,30 @@
+#include "aos/events/shm_event_loop.h"
+#include "aos/init.h"
+#include "frc971/constants/constants_sender_lib.h"
+#include "frc971/control_loops/swerve/swerve_control_loops.h"
+#include "y2024_swerve/constants/constants_generated.h"
+
+using frc971::control_loops::swerve::SwerveControlLoops;
+
+int main(int argc, char **argv) {
+ ::aos::InitGoogle(&argc, &argv);
+
+ aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+ aos::configuration::ReadConfig("aos_config.json");
+
+ frc971::constants::WaitForConstants<y2024_swerve::Constants>(
+ &config.message());
+
+ ::aos::ShmEventLoop event_loop(&config.message());
+
+ frc971::constants::ConstantsFetcher<y2024_swerve::Constants> constants(
+ &event_loop);
+
+ SwerveControlLoops swerve_control_loops(
+ &event_loop, constants.constants().common()->rotation(),
+ constants.constants().robot()->swerve_zeroing(), "/drivetrain");
+
+ event_loop.Run();
+
+ return 0;
+}