blob: 3755ab4c93cffaade1125f5649f34e8dd0e3887a [file] [log] [blame]
justinT21446e4f62024-06-16 22:36:10 -07001load("@aspect_bazel_lib//lib:run_binary.bzl", "run_binary")
Nikolai Sohmers8412fe52024-06-09 18:01:18 -07002load("//aos:config.bzl", "aos_config")
James Kuszmauld938d332024-05-15 20:47:19 -07003load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
4
Nikolai Sohmers69ecb912024-06-08 14:06:22 -07005package(default_visibility = ["//visibility:public"])
6
7static_flatbuffer(
8 name = "swerve_drivetrain_goal_fbs",
9 srcs = ["swerve_drivetrain_goal.fbs"],
10)
11
12static_flatbuffer(
13 name = "swerve_drivetrain_status_fbs",
14 srcs = ["swerve_drivetrain_status.fbs"],
15 deps = ["//frc971/control_loops:profiled_subsystem_fbs"],
16)
17
James Kuszmauld938d332024-05-15 20:47:19 -070018static_flatbuffer(
19 name = "swerve_drivetrain_output_fbs",
20 srcs = ["swerve_drivetrain_output.fbs"],
James Kuszmauld938d332024-05-15 20:47:19 -070021 deps = ["//frc971/control_loops:can_talonfx_fbs"],
22)
23
24static_flatbuffer(
Nikolai Sohmers3f2a5072024-06-08 14:05:59 -070025 name = "swerve_drivetrain_can_position_fbs",
26 srcs = ["swerve_drivetrain_can_position.fbs"],
Nikolai Sohmers3f2a5072024-06-08 14:05:59 -070027 deps = ["//frc971/control_loops:can_talonfx_fbs"],
28)
29
30static_flatbuffer(
James Kuszmauld938d332024-05-15 20:47:19 -070031 name = "swerve_drivetrain_position_fbs",
32 srcs = ["swerve_drivetrain_position.fbs"],
James Kuszmauld938d332024-05-15 20:47:19 -070033 deps = ["//frc971/control_loops:control_loops_fbs"],
34)
35
Austin Schuh999a19e2024-05-04 14:52:39 -070036py_binary(
37 name = "simulation",
38 srcs = [
39 "simulation.py",
40 ],
41 deps = [
42 "//frc971/control_loops/python:controls",
43 "@pip//matplotlib",
44 "@pip//numpy",
45 "@pip//pygobject",
46 "@pip//sympy",
47 ],
48)
Nikolai Sohmers8412fe52024-06-09 18:01:18 -070049
50cc_library(
51 name = "swerve_control_loops",
52 srcs = ["swerve_control_loops.cc"],
53 hdrs = ["swerve_control_loops.h"],
54 target_compatible_with = ["@platforms//os:linux"],
55 deps = [
56 ":swerve_drivetrain_can_position_fbs",
57 ":swerve_drivetrain_goal_fbs",
58 ":swerve_drivetrain_output_fbs",
59 ":swerve_drivetrain_position_fbs",
60 ":swerve_drivetrain_status_fbs",
61 "//frc971/control_loops:control_loop",
62 ],
63)
64
65cc_test(
66 name = "swerve_control_test",
67 srcs = ["swerve_control_test.cc"],
68 data = [
69 ":aos_config",
70 ],
71 target_compatible_with = ["@platforms//os:linux"],
72 deps = [
73 ":swerve_control_loops",
74 ":swerve_drivetrain_can_position_fbs",
75 ":swerve_drivetrain_goal_fbs",
76 ":swerve_drivetrain_output_fbs",
77 ":swerve_drivetrain_position_fbs",
78 ":swerve_drivetrain_status_fbs",
79 "//aos/events:shm_event_loop",
80 "//aos/testing:googletest",
81 "//frc971/control_loops:control_loop_test",
82 "//frc971/control_loops:state_feedback_loop",
83 "//frc971/control_loops:team_number_test_environment",
84 ],
85)
86
87aos_config(
88 name = "aos_config",
89 src = "swerve.json",
90 flatbuffers = [
91 ":swerve_drivetrain_goal_fbs",
92 ":swerve_drivetrain_output_fbs",
93 ":swerve_drivetrain_position_fbs",
94 ":swerve_drivetrain_can_position_fbs",
95 ":swerve_drivetrain_status_fbs",
96 ],
97 target_compatible_with = ["@platforms//os:linux"],
98 deps = ["//frc971/input:aos_config"],
99)
justinT21446e4f62024-06-16 22:36:10 -0700100
101cc_library(
102 name = "motors",
103 hdrs = [
104 "motors.h",
105 ],
106 deps = [
107 "@symengine",
108 ],
109)
110
111cc_binary(
112 name = "generate_physics",
113 srcs = [
114 "generate_physics.cc",
115 ],
116 deps = [
117 ":motors",
118 "//aos:init",
119 "//aos/util:file",
Austin Schuh99f7c6a2024-06-25 22:07:44 -0700120 "@com_google_absl//absl/log",
121 "@com_google_absl//absl/log:check",
justinT21446e4f62024-06-16 22:36:10 -0700122 "@com_google_absl//absl/strings",
123 "@com_google_absl//absl/strings:str_format",
124 "@symengine",
125 ],
126)
127
128run_binary(
Austin Schuh27694fa2024-07-20 16:29:49 -0700129 name = "dynamics_codegen_cc",
justinT21446e4f62024-06-16 22:36:10 -0700130 outs = [
131 "dynamics.cc",
132 "dynamics.h",
justinT21942892b2024-07-02 22:33:50 -0700133 "dynamics.py",
Austin Schuh0f881092024-06-28 15:36:48 -0700134 "numpy_dynamics.py",
justinT21446e4f62024-06-16 22:36:10 -0700135 ],
136 args = [
137 "--output_base=$(BINDIR)/",
138 "--cc_output_path=$(location :dynamics.cc)",
139 "--h_output_path=$(location :dynamics.h)",
Austin Schuh0f881092024-06-28 15:36:48 -0700140 "--py_output_path=$(location :numpy_dynamics.py)",
141 "--casadi_py_output_path=$(location :dynamics.py)",
justinT21446e4f62024-06-16 22:36:10 -0700142 ],
143 tool = ":generate_physics",
144)
145
Austin Schuh27694fa2024-07-20 16:29:49 -0700146run_binary(
147 name = "dynamics_codegen_nocaster",
148 outs = [
149 "nocaster_dynamics.py",
150 ],
151 args = [
152 "--caster=0.0",
153 "--output_base=$(BINDIR)/",
154 "--casadi_py_output_path=$(location :nocaster_dynamics.py)",
155 ],
156 tool = ":generate_physics",
157)
158
159run_binary(
160 name = "dynamics_codegen_bigcaster",
161 outs = [
162 "bigcaster_dynamics.py",
163 ],
164 args = [
165 "--caster=0.05",
166 "--output_base=$(BINDIR)/",
167 "--casadi_py_output_path=$(location :bigcaster_dynamics.py)",
168 ],
169 tool = ":generate_physics",
170)
171
justinT21446e4f62024-06-16 22:36:10 -0700172cc_library(
justinT2107d41ed2024-07-31 21:12:31 -0700173 name = "eigen_dynamics",
justinT21446e4f62024-06-16 22:36:10 -0700174 srcs = ["dynamics.cc"],
175 hdrs = ["dynamics.h"],
176 deps = [
177 "@org_tuxfamily_eigen//:eigen",
178 ],
179)
justinT21942892b2024-07-02 22:33:50 -0700180
181py_binary(
182 name = "dynamics_sim",
183 srcs = [
justinT21942892b2024-07-02 22:33:50 -0700184 "dynamics_sim.py",
Austin Schuh0f881092024-06-28 15:36:48 -0700185 "numpy_dynamics.py",
justinT21942892b2024-07-02 22:33:50 -0700186 ],
187 deps = [
188 "//frc971/control_loops/python:controls",
189 "@pip//matplotlib",
190 "@pip//numpy",
191 "@pip//pygobject",
192 "@pip//scipy",
193 ],
194)
Austin Schuh2a1abec2024-07-10 20:31:16 -0700195
196py_test(
197 name = "physics_test",
198 srcs = [
Austin Schuh2a1abec2024-07-10 20:31:16 -0700199 "physics_test.py",
200 ],
201 target_compatible_with = ["@platforms//cpu:x86_64"],
202 deps = [
justinT2107d41ed2024-07-31 21:12:31 -0700203 ":physics_test_utils",
Austin Schuh2a1abec2024-07-10 20:31:16 -0700204 "@pip//casadi",
205 "@pip//numpy",
206 ],
207)
justinT2107d41ed2024-07-31 21:12:31 -0700208
209py_library(
210 name = "dynamics",
211 srcs = [
212 "bigcaster_dynamics.py",
213 "dynamics.py",
214 "nocaster_dynamics.py",
215 ],
216 deps = [
217 "@pip//casadi",
218 ],
219)
220
221py_library(
222 name = "physics_test_utils",
223 srcs = [
224 "physics_test_utils.py",
225 ],
226 deps = [
227 ":dynamics",
228 "@pip//casadi",
229 "@pip//numpy",
230 ],
231)
232
233py_binary(
234 name = "physics_debug",
235 srcs = [
236 "physics_debug.py",
237 ],
238 deps = [
239 ":physics_test_utils",
240 "@pip//matplotlib",
241 "@pip//pygobject",
242 "@pip//scipy",
243 ],
244)