Add 2022 trajectory generator
Signed-off-by: Milind Upadhyay <milind.upadhyay@gmail.com>
Change-Id: I4075a2825920e00de1c882b992b40841da758a9e
diff --git a/y2022/BUILD b/y2022/BUILD
index 640058b..43a2e71 100644
--- a/y2022/BUILD
+++ b/y2022/BUILD
@@ -18,6 +18,7 @@
"//aos/network:message_bridge_server",
"//y2022/actors:binaries",
"//y2022/control_loops/drivetrain:drivetrain",
+ "//y2022/control_loops/drivetrain:trajectory_generator",
"//y2022/control_loops/superstructure:superstructure",
],
target_compatible_with = ["@platforms//os:linux"],
diff --git a/y2022/control_loops/drivetrain/BUILD b/y2022/control_loops/drivetrain/BUILD
index a1f1e47..661aee9 100644
--- a/y2022/control_loops/drivetrain/BUILD
+++ b/y2022/control_loops/drivetrain/BUILD
@@ -130,3 +130,18 @@
"//y2022/control_loops/localizer:localizer_output_fbs",
],
)
+
+cc_binary(
+ name = "trajectory_generator",
+ srcs = [
+ "trajectory_generator_main.cc",
+ ],
+ target_compatible_with = ["@platforms//os:linux"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":drivetrain_base",
+ "//aos:init",
+ "//aos/events:shm_event_loop",
+ "//frc971/control_loops/drivetrain:trajectory_generator",
+ ],
+)
diff --git a/y2022/control_loops/drivetrain/trajectory_generator_main.cc b/y2022/control_loops/drivetrain/trajectory_generator_main.cc
new file mode 100644
index 0000000..c2837dd
--- /dev/null
+++ b/y2022/control_loops/drivetrain/trajectory_generator_main.cc
@@ -0,0 +1,39 @@
+#include <sys/resource.h>
+#include <sys/time.h>
+
+#include "aos/events/shm_event_loop.h"
+#include "aos/init.h"
+#include "frc971/control_loops/drivetrain/trajectory_generator.h"
+#include "y2022/control_loops/drivetrain/drivetrain_base.h"
+
+using ::frc971::control_loops::drivetrain::TrajectoryGenerator;
+
+DEFINE_bool(skip_renicing, false,
+ "If true, skip renicing the trajectory generator.");
+
+int main(int argc, char *argv[]) {
+ ::aos::InitGoogle(&argc, &argv);
+
+ aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+ aos::configuration::ReadConfig("config.json");
+
+ ::aos::ShmEventLoop event_loop(&config.message());
+ TrajectoryGenerator generator(
+ &event_loop, ::y2022::control_loops::drivetrain::GetDrivetrainConfig());
+
+ event_loop.OnRun([]() {
+ if (FLAGS_skip_renicing) {
+ LOG(WARNING) << "Ignoring request to renice to -20 due to "
+ "--skip_renicing.";
+ } else {
+ errno = 0;
+ setpriority(PRIO_PROCESS, 0, -20);
+ PCHECK(errno == 0)
+ << ": Renicing to -20 failed, use --skip_renicing to skip renicing.";
+ }
+ });
+
+ event_loop.Run();
+
+ return 0;
+}