Port over sympy physics solving to c++ using symengine
This is pretty much a direct port from commit bd8c69964c6ef7e6331d192c6e648132690136c8.
Signed-off-by: justinT21 <jjturcot@gmail.com>
Change-Id: I43508858fb92dd124dd2cb994bfb250e4fac2170
diff --git a/frc971/control_loops/swerve/BUILD b/frc971/control_loops/swerve/BUILD
index ccba681..4fd73d2 100644
--- a/frc971/control_loops/swerve/BUILD
+++ b/frc971/control_loops/swerve/BUILD
@@ -1,3 +1,4 @@
+load("@aspect_bazel_lib//lib:run_binary.bzl", "run_binary")
load("//aos:config.bzl", "aos_config")
load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
@@ -96,3 +97,52 @@
target_compatible_with = ["@platforms//os:linux"],
deps = ["//frc971/input:aos_config"],
)
+
+cc_library(
+ name = "motors",
+ hdrs = [
+ "motors.h",
+ ],
+ deps = [
+ "@symengine",
+ ],
+)
+
+cc_binary(
+ name = "generate_physics",
+ srcs = [
+ "generate_physics.cc",
+ ],
+ deps = [
+ ":motors",
+ "//aos:init",
+ "//aos/util:file",
+ "@com_github_google_glog//:glog",
+ "@com_google_absl//absl/strings",
+ "@com_google_absl//absl/strings:str_format",
+ "@symengine",
+ ],
+)
+
+run_binary(
+ name = "dynamics_codegen",
+ outs = [
+ "dynamics.cc",
+ "dynamics.h",
+ ],
+ args = [
+ "--output_base=$(BINDIR)/",
+ "--cc_output_path=$(location :dynamics.cc)",
+ "--h_output_path=$(location :dynamics.h)",
+ ],
+ tool = ":generate_physics",
+)
+
+cc_library(
+ name = "dynamics",
+ srcs = ["dynamics.cc"],
+ hdrs = ["dynamics.h"],
+ deps = [
+ "@org_tuxfamily_eigen//:eigen",
+ ],
+)