Add a catapult MPC solver in C++ which runs fast enough
Change-Id: Ieccddb951dce287fbdd74d75916896e97360c50b
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/y2022/control_loops/superstructure/catapult/BUILD b/y2022/control_loops/superstructure/catapult/BUILD
new file mode 100644
index 0000000..289dfde
--- /dev/null
+++ b/y2022/control_loops/superstructure/catapult/BUILD
@@ -0,0 +1,68 @@
+genrule(
+ name = "genrule_catapult",
+ outs = [
+ "catapult_plant.h",
+ "catapult_plant.cc",
+ "integral_catapult_plant.h",
+ "integral_catapult_plant.cc",
+ ],
+ cmd = "$(location //y2022/control_loops/python:catapult) $(OUTS)",
+ target_compatible_with = ["@platforms//os:linux"],
+ tools = [
+ "//y2022/control_loops/python:catapult",
+ ],
+)
+
+cc_library(
+ name = "catapult_plants",
+ srcs = [
+ "catapult_plant.cc",
+ "integral_catapult_plant.cc",
+ ],
+ hdrs = [
+ "catapult_plant.h",
+ "integral_catapult_plant.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//frc971/control_loops:state_feedback_loop",
+ ],
+)
+
+cc_library(
+ name = "catapult",
+ srcs = [
+ "catapult.cc",
+ ],
+ hdrs = [
+ "catapult.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":catapult_plants",
+ "//aos:realtime",
+ "//third_party/osqp-cpp",
+ ],
+)
+
+cc_test(
+ name = "catapult_test",
+ srcs = [
+ "catapult_test.cc",
+ ],
+ deps = [
+ ":catapult",
+ "//aos/testing:googletest",
+ ],
+)
+
+cc_binary(
+ name = "catapult_main",
+ srcs = [
+ "catapult_main.cc",
+ ],
+ deps = [
+ ":catapult",
+ "//aos:init",
+ ],
+)