blob: 29a0e1d141874d371ac9219a413a8b30415f4013 [file] [log] [blame]
Philipp Schrader3de4dfc2023-02-15 20:18:25 -08001load("//tools/build_rules:js.bzl", "ts_project")
Austin Schuha1d006e2022-09-14 21:50:42 -07002load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
3load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
Alex Perrycb7da4b2019-08-28 19:35:56 -07004load("//aos:config.bzl", "aos_config")
Philipp Schraderdada1072020-11-24 11:34:46 -08005load("//tools/build_rules:select.bzl", "cpu_select")
Austin Schuh41fad8c2021-10-23 21:25:12 -07006load("//aos:flatbuffers.bzl", "cc_static_flatbuffer")
Comran Morshed5323ecb2015-12-26 20:50:55 +00007
Philipp Schradercc016b32021-12-30 08:59:58 -08008package(default_visibility = ["//visibility:public"])
9
Alex Perrycb7da4b2019-08-28 19:35:56 -070010flatbuffer_cc_library(
Maxwell Hendersoncef6f042023-05-26 14:38:09 -070011 name = "drivetrain_can_position_fbs",
12 srcs = ["drivetrain_can_position.fbs"],
13 gen_reflections = 1,
Maxwell Hendersonca1d18f2023-07-26 21:06:14 -070014 deps = ["//frc971/control_loops:can_falcon_fbs"],
Maxwell Hendersoncef6f042023-05-26 14:38:09 -070015)
16
17flatbuffer_cc_library(
James Kuszmaul75a18c52021-03-10 22:02:07 -080018 name = "spline_goal_fbs",
19 srcs = ["spline_goal.fbs"],
20 gen_reflections = 1,
21 includes = ["//frc971/control_loops:control_loops_fbs_includes"],
22)
23
24flatbuffer_cc_library(
Alex Perrycb7da4b2019-08-28 19:35:56 -070025 name = "drivetrain_goal_fbs",
26 srcs = ["drivetrain_goal.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070027 gen_reflections = 1,
James Kuszmaul75a18c52021-03-10 22:02:07 -080028 includes = [
29 ":spline_goal_fbs_includes",
30 "//frc971/control_loops:control_loops_fbs_includes",
31 ],
Comran Morshed5323ecb2015-12-26 20:50:55 +000032)
33
Alex Perrycb7da4b2019-08-28 19:35:56 -070034flatbuffer_cc_library(
35 name = "drivetrain_output_fbs",
36 srcs = ["drivetrain_output.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070037 gen_reflections = 1,
38)
39
40flatbuffer_cc_library(
41 name = "drivetrain_position_fbs",
42 srcs = ["drivetrain_position.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070043 gen_reflections = 1,
44)
45
46flatbuffer_cc_library(
47 name = "drivetrain_status_fbs",
48 srcs = ["drivetrain_status.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -070049 gen_reflections = 1,
50 includes = ["//frc971/control_loops:control_loops_fbs_includes"],
51)
52
James Kuszmaul75a18c52021-03-10 22:02:07 -080053flatbuffer_cc_library(
54 name = "trajectory_fbs",
55 srcs = ["trajectory.fbs"],
56 gen_reflections = 1,
57 includes = ["//frc971/control_loops:control_loops_fbs_includes"],
58)
59
Austin Schuh41fad8c2021-10-23 21:25:12 -070060cc_static_flatbuffer(
61 name = "trajectory_schema",
62 function = "frc971::control_loops::drivetrain::fb::TrajectorySchema",
63 target = ":trajectory_fbs_reflection_out",
64 visibility = ["//visibility:public"],
65)
66
Alex Perry2124ae82020-03-07 14:19:06 -080067flatbuffer_ts_library(
68 name = "drivetrain_status_ts_fbs",
69 srcs = ["drivetrain_status.fbs"],
Philipp Schraderdada1072020-11-24 11:34:46 -080070 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauldac091f2022-03-22 09:35:06 -070071 deps = ["//frc971/control_loops:control_loops_ts_fbs"],
Alex Perry2124ae82020-03-07 14:19:06 -080072)
73
Alex Perrycb7da4b2019-08-28 19:35:56 -070074genrule(
75 name = "drivetrain_goal_float_fbs_generated",
76 srcs = ["drivetrain_goal.fbs"],
77 outs = ["drivetrain_goal_float.fbs"],
78 cmd = "cat $(SRCS) | sed 's/double/float/g' > $(OUTS)",
Alex Perrycb7da4b2019-08-28 19:35:56 -070079)
80
81genrule(
82 name = "drivetrain_position_float_fbs_generated",
83 srcs = ["drivetrain_position.fbs"],
84 outs = ["drivetrain_position_float.fbs"],
85 cmd = "cat $(SRCS) | sed 's/double/float/g' > $(OUTS)",
Alex Perrycb7da4b2019-08-28 19:35:56 -070086)
87
88genrule(
89 name = "drivetrain_output_float_fbs_generated",
90 srcs = ["drivetrain_output.fbs"],
91 outs = ["drivetrain_output_float.fbs"],
92 cmd = "cat $(SRCS) | sed 's/double/float/g' > $(OUTS)",
Alex Perrycb7da4b2019-08-28 19:35:56 -070093)
94
95genrule(
96 name = "drivetrain_status_float_fbs_generated",
97 srcs = ["drivetrain_status.fbs"],
98 outs = ["drivetrain_status_float.fbs"],
99 cmd = "cat $(SRCS) | sed 's/double/float/g' > $(OUTS)",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700100)
101
102flatbuffer_cc_library(
103 name = "drivetrain_goal_float_fbs",
104 srcs = ["drivetrain_goal_float.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700105 gen_reflections = 1,
James Kuszmaul75a18c52021-03-10 22:02:07 -0800106 includes = [
107 ":spline_goal_fbs_includes",
108 "//frc971/control_loops:control_loops_fbs_includes",
109 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700110)
111
112flatbuffer_cc_library(
113 name = "drivetrain_output_float_fbs",
114 srcs = ["drivetrain_output_float.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700115 gen_reflections = 1,
116)
117
118flatbuffer_cc_library(
119 name = "drivetrain_position_float_fbs",
120 srcs = ["drivetrain_position_float.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700121 gen_reflections = 1,
122)
123
124flatbuffer_cc_library(
125 name = "drivetrain_status_float_fbs",
126 srcs = ["drivetrain_status_float.fbs"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700127 gen_reflections = 1,
128 includes = ["//frc971/control_loops:control_loops_fbs_includes"],
129)
130
131aos_config(
James Kuszmaul74d8f972020-02-11 17:13:17 -0800132 name = "simulation_channels",
133 src = "drivetrain_simulation_channels.json",
134 flatbuffers = [
135 ":drivetrain_status_fbs",
136 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800137 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800138 visibility = ["//visibility:public"],
139)
140
141aos_config(
142 name = "simulation_config",
143 src = "drivetrain_simulation_config.json",
Philipp Schraderdada1072020-11-24 11:34:46 -0800144 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800145 visibility = ["//visibility:public"],
146 deps = [
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800147 ":aos_config",
James Kuszmaul74d8f972020-02-11 17:13:17 -0800148 ":simulation_channels",
149 ],
150)
151
152aos_config(
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800153 name = "aos_config",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700154 src = "drivetrain_config.json",
155 flatbuffers = [
156 ":drivetrain_goal_fbs",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800157 ":trajectory_fbs",
158 ":spline_goal_fbs",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700159 ":drivetrain_output_fbs",
160 ":drivetrain_status_fbs",
161 ":drivetrain_position_fbs",
162 ":localizer_fbs",
Tyler Chatow24b5db12020-01-06 21:16:56 -0800163 "//frc971/queues:gyro_fbs",
164 "//frc971/queues:gyro_uid_fbs",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700165 "//frc971/wpilib:imu_fbs",
Austin Schuhac17fba2020-03-28 15:55:33 -0700166 "//frc971/wpilib:imu_batch_fbs",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700167 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800168 target_compatible_with = ["@platforms//os:linux"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700169 visibility = ["//visibility:public"],
Austin Schuhbcce26a2018-03-26 23:41:24 -0700170 deps = [
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800171 "//frc971/input:aos_config",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700172 ],
Comran Morshed5323ecb2015-12-26 20:50:55 +0000173)
174
175cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700176 name = "drivetrain_config",
177 hdrs = [
178 "drivetrain_config.h",
179 ],
180 deps = [
181 "//frc971:shifter_hall_effect",
182 "//frc971/control_loops:state_feedback_loop",
Philipp Schraderdada1072020-11-24 11:34:46 -0800183 ] + select({
184 "@platforms//os:linux": ["//frc971/control_loops:hybrid_state_feedback_loop"],
185 "//conditions:default": [],
186 }),
Comran Morshed5323ecb2015-12-26 20:50:55 +0000187)
188
189cc_library(
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800190 name = "hybrid_ekf",
191 hdrs = ["hybrid_ekf.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800192 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800193 deps = [
194 ":drivetrain_config",
James Kuszmaul3c5b4d32020-02-11 17:22:14 -0800195 "//aos:math",
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800196 "//aos/containers:priority_queue",
James Kuszmaulfedc4612019-03-10 11:24:51 -0700197 "//aos/util:math",
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800198 "//frc971/control_loops:c2d",
199 "//frc971/control_loops:runge_kutta",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700200 "@org_tuxfamily_eigen//:eigen",
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800201 ],
202)
203
204cc_test(
205 name = "hybrid_ekf_test",
206 srcs = ["hybrid_ekf_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800207 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800208 deps = [
209 ":drivetrain_test_lib",
210 ":hybrid_ekf",
211 ":trajectory",
212 "//aos/testing:googletest",
213 "//aos/testing:random_seed",
214 "//aos/testing:test_shm",
215 ],
216)
217
Alex Perrycb7da4b2019-08-28 19:35:56 -0700218flatbuffer_cc_library(
219 name = "localizer_fbs",
220 srcs = ["localizer.fbs"],
221 gen_reflections = 1,
Philipp Schraderdada1072020-11-24 11:34:46 -0800222 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaulef428a02019-03-02 22:19:41 -0800223)
224
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800225cc_library(
James Kuszmaul3431d622019-02-17 17:07:44 -0800226 name = "localizer",
227 hdrs = ["localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800228 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul3431d622019-02-17 17:07:44 -0800229 deps = [
230 ":drivetrain_config",
James Kuszmaul3c5b4d32020-02-11 17:22:14 -0800231 ":drivetrain_status_fbs",
James Kuszmaul3431d622019-02-17 17:07:44 -0800232 ":hybrid_ekf",
James Kuszmaul5398fae2020-02-17 16:44:03 -0800233 "//frc971/control_loops:control_loops_fbs",
James Kuszmaul5bc6fc92019-03-01 21:50:06 -0800234 "//frc971/control_loops:pose",
James Kuszmaul3431d622019-02-17 17:07:44 -0800235 ],
236)
237
238cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700239 name = "gear",
240 hdrs = [
241 "gear.h",
242 ],
Austin Schuh093535c2016-03-05 23:21:00 -0800243)
244
245cc_library(
Alex Perry731b4602019-02-02 22:13:01 -0800246 name = "splinedrivetrain",
247 srcs = [
248 "splinedrivetrain.cc",
249 ],
250 hdrs = [
251 "splinedrivetrain.h",
252 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800253 target_compatible_with = ["@platforms//os:linux"],
Alex Perry731b4602019-02-02 22:13:01 -0800254 deps = [
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800255 ":distance_spline",
Alex Perry731b4602019-02-02 22:13:01 -0800256 ":drivetrain_config",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700257 ":drivetrain_goal_fbs",
258 ":drivetrain_output_fbs",
259 ":drivetrain_status_fbs",
Alex Perry731b4602019-02-02 22:13:01 -0800260 ":spline",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800261 ":spline_goal_fbs",
Alex Perry731b4602019-02-02 22:13:01 -0800262 ":trajectory",
Austin Schuh3d9ccd72020-08-01 15:42:40 -0700263 "//aos:condition",
Alex Perry1ec34522019-02-17 22:44:10 -0800264 "//aos:init",
James Kuszmaulc73bb222019-04-07 12:15:35 -0700265 "//aos/util:math",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700266 "//frc971/control_loops:control_loops_fbs",
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800267 ],
Alex Perry731b4602019-02-02 22:13:01 -0800268)
269
270cc_library(
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800271 name = "line_follow_drivetrain",
272 srcs = [
273 "line_follow_drivetrain.cc",
274 ],
275 hdrs = [
276 "line_follow_drivetrain.h",
277 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800278 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800279 deps = [
280 ":drivetrain_config",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700281 ":drivetrain_goal_fbs",
282 ":drivetrain_output_fbs",
283 ":drivetrain_status_fbs",
James Kuszmaul5bc6fc92019-03-01 21:50:06 -0800284 ":localizer",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800285 ":spline_goal_fbs",
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800286 "//aos:math",
287 "//aos/util:math",
288 "//frc971/control_loops:c2d",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700289 "//frc971/control_loops:control_loops_fbs",
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800290 "//frc971/control_loops:dlqr",
291 "//frc971/control_loops:pose",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700292 "//frc971/control_loops:profiled_subsystem_fbs",
293 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
294 "@org_tuxfamily_eigen//:eigen",
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800295 ],
296)
297
298cc_test(
299 name = "line_follow_drivetrain_test",
300 srcs = ["line_follow_drivetrain_test.cc"],
301 linkstatic = True,
Philipp Schraderdada1072020-11-24 11:34:46 -0800302 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800303 deps = [
304 ":drivetrain_config",
305 ":drivetrain_test_lib",
306 ":line_follow_drivetrain",
307 ":trajectory",
308 "//aos/testing:googletest",
309 "//aos/testing:test_shm",
310 "//third_party/matplotlib-cpp",
311 "@com_github_gflags_gflags//:gflags",
312 ],
313)
314
315cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700316 name = "ssdrivetrain",
317 srcs = [
318 "ssdrivetrain.cc",
319 ],
320 hdrs = [
321 "ssdrivetrain.h",
322 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800323 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhbcce26a2018-03-26 23:41:24 -0700324 deps = [
325 ":drivetrain_config",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700326 ":drivetrain_goal_fbs",
327 ":drivetrain_output_fbs",
Austin Schuh95771d92021-01-23 14:42:25 -0800328 ":drivetrain_states",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700329 ":drivetrain_status_fbs",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700330 ":gear",
James Kuszmaul3431d622019-02-17 17:07:44 -0800331 ":localizer",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800332 ":spline_goal_fbs",
John Park33858a32018-09-28 23:05:48 -0700333 "//aos:math",
John Park33858a32018-09-28 23:05:48 -0700334 "//aos/util:log_interval",
335 "//aos/util:trapezoid_profile",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700336 "//frc971:shifter_hall_effect",
337 "//frc971/control_loops:coerce_goal",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700338 "//frc971/control_loops:control_loop",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700339 "//frc971/control_loops:control_loops_fbs",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700340 "//frc971/control_loops:polytope",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700341 "//frc971/control_loops:state_feedback_loop",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700342 "//frc971/input:robot_state_fbs",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700343 ],
Comran Morshed5323ecb2015-12-26 20:50:55 +0000344)
345
346cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700347 name = "polydrivetrain",
348 srcs = [
349 "polydrivetrain.cc",
350 ],
351 hdrs = [
352 "polydrivetrain.h",
353 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800354 copts = select({
355 "@platforms//os:none": ["-Wno-type-limits"],
356 "//conditions:default": [],
357 }),
Austin Schuhbcce26a2018-03-26 23:41:24 -0700358 deps = [
359 ":drivetrain_config",
Austin Schuh95771d92021-01-23 14:42:25 -0800360 ":drivetrain_states",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700361 ":gear",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700362 ":spline_goal_fbs",
John Park33858a32018-09-28 23:05:48 -0700363 "//aos:math",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700364 "//frc971/control_loops:coerce_goal",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700365 "//frc971/control_loops:control_loops_fbs",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700366 "//frc971/control_loops:polytope",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700367 "//frc971/control_loops:state_feedback_loop",
Philipp Schraderdada1072020-11-24 11:34:46 -0800368 ] + select({
369 "@platforms//os:linux": [
370 ":drivetrain_goal_fbs",
371 ":drivetrain_output_fbs",
372 ":drivetrain_position_fbs",
373 ":drivetrain_status_fbs",
Philipp Schraderdada1072020-11-24 11:34:46 -0800374 "//aos/util:log_interval",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700375 "//frc971/input:robot_state_fbs",
Philipp Schraderdada1072020-11-24 11:34:46 -0800376 ],
377 "@platforms//os:none": [
378 ":drivetrain_goal_float_fbs",
379 ":drivetrain_output_float_fbs",
380 ":drivetrain_position_float_fbs",
381 ":drivetrain_status_float_fbs",
382 ],
383 }),
Comran Morshed5323ecb2015-12-26 20:50:55 +0000384)
385
Austin Schuh05c5a612016-04-02 15:10:25 -0700386genrule(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700387 name = "genrule_down_estimator",
388 outs = [
389 "down_estimator.h",
390 "down_estimator.cc",
391 ],
392 cmd = "$(location //frc971/control_loops/python:down_estimator) $(OUTS)",
Philipp Schraderdada1072020-11-24 11:34:46 -0800393 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhbcce26a2018-03-26 23:41:24 -0700394 tools = [
395 "//frc971/control_loops/python:down_estimator",
396 ],
397 visibility = ["//visibility:private"],
Austin Schuh05c5a612016-04-02 15:10:25 -0700398)
399
400cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700401 name = "down_estimator",
402 srcs = [
403 "down_estimator.cc",
404 ],
405 hdrs = [
406 "down_estimator.h",
407 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800408 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhbcce26a2018-03-26 23:41:24 -0700409 deps = [
410 "//frc971/control_loops:state_feedback_loop",
411 ],
Austin Schuh05c5a612016-04-02 15:10:25 -0700412)
413
Comran Morshed5323ecb2015-12-26 20:50:55 +0000414cc_library(
Austin Schuh95771d92021-01-23 14:42:25 -0800415 name = "drivetrain_states",
416 hdrs = ["drivetrain_states.h"],
417)
418
419cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700420 name = "drivetrain_lib",
421 srcs = [
422 "drivetrain.cc",
423 ],
424 hdrs = [
425 "drivetrain.h",
426 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800427 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhbcce26a2018-03-26 23:41:24 -0700428 deps = [
429 ":down_estimator",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700430 ":drivetrain_goal_fbs",
431 ":drivetrain_output_fbs",
432 ":drivetrain_position_fbs",
Austin Schuh95771d92021-01-23 14:42:25 -0800433 ":drivetrain_states",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700434 ":drivetrain_status_fbs",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700435 ":gear",
James Kuszmaul3e1bb272020-01-17 18:38:19 -0800436 ":improved_down_estimator",
James Kuszmaule39cbcf2019-02-27 20:48:34 -0800437 ":line_follow_drivetrain",
James Kuszmaul3431d622019-02-17 17:07:44 -0800438 ":localizer",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700439 ":localizer_fbs",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700440 ":polydrivetrain",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800441 ":spline_goal_fbs",
Alex Perry731b4602019-02-02 22:13:01 -0800442 ":splinedrivetrain",
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800443 ":ssdrivetrain",
John Park33858a32018-09-28 23:05:48 -0700444 "//aos/util:log_interval",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700445 "//frc971/control_loops:control_loop",
Austin Schuh3a378462019-01-04 21:48:04 -0800446 "//frc971/control_loops:runge_kutta",
Tyler Chatow24b5db12020-01-06 21:16:56 -0800447 "//frc971/queues:gyro_fbs",
Austin Schuhac17fba2020-03-28 15:55:33 -0700448 "//frc971/wpilib:imu_batch_fbs",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700449 "//frc971/wpilib:imu_fbs",
James Kuszmaul3e1bb272020-01-17 18:38:19 -0800450 "//frc971/zeroing:imu_zeroer",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700451 ],
Comran Morshed5323ecb2015-12-26 20:50:55 +0000452)
453
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800454cc_library(
455 name = "drivetrain_test_lib",
456 testonly = True,
457 srcs = ["drivetrain_test_lib.cc"],
458 hdrs = ["drivetrain_test_lib.h"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800459 defines =
460 cpu_select({
461 "amd64": [
462 "SUPPORT_PLOT=1",
463 ],
464 "arm": [],
465 }),
Philipp Schraderdada1072020-11-24 11:34:46 -0800466 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800467 deps = [
468 ":drivetrain_config",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700469 ":drivetrain_goal_fbs",
470 ":drivetrain_output_fbs",
471 ":drivetrain_position_fbs",
472 ":drivetrain_status_fbs",
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800473 ":trajectory",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700474 "//aos/events:event_loop",
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800475 "//aos/testing:googletest",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700476 "//frc971/control_loops:control_loops_fbs",
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800477 "//frc971/control_loops:state_feedback_loop",
Tyler Chatow24b5db12020-01-06 21:16:56 -0800478 "//frc971/queues:gyro_fbs",
Austin Schuhac17fba2020-03-28 15:55:33 -0700479 "//frc971/wpilib:imu_batch_fbs",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700480 "//frc971/wpilib:imu_fbs",
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800481 "//y2016:constants",
482 "//y2016/control_loops/drivetrain:polydrivetrain_plants",
James Kuszmaul74d8f972020-02-11 17:13:17 -0800483 ] + cpu_select({
484 "amd64": [
485 "//third_party/matplotlib-cpp",
486 ],
487 "arm": [],
488 }),
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800489)
490
Comran Morshed5323ecb2015-12-26 20:50:55 +0000491cc_test(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700492 name = "drivetrain_lib_test",
493 srcs = [
494 "drivetrain_lib_test.cc",
495 ],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700496 data = [":simulation_config"],
Alex Perry04300d62019-02-17 14:37:04 -0800497 defines =
498 cpu_select({
499 "amd64": [
500 "SUPPORT_PLOT=1",
501 ],
502 "arm": [],
503 }),
504 linkstatic = True,
Philipp Schraderdada1072020-11-24 11:34:46 -0800505 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhbcce26a2018-03-26 23:41:24 -0700506 deps = [
507 ":drivetrain_config",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700508 ":drivetrain_goal_fbs",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700509 ":drivetrain_lib",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700510 ":drivetrain_output_fbs",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700511 ":drivetrain_position_fbs",
512 ":drivetrain_status_fbs",
James Kuszmaul109ed8d2019-02-17 21:41:04 -0800513 ":drivetrain_test_lib",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700514 ":localizer_fbs",
515 ":trajectory_generator",
Austin Schuhb06f03b2021-02-17 22:00:37 -0800516 "//aos/events/logging:log_writer",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700517 "//aos/testing:googletest",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700518 "//frc971/control_loops:control_loop_test",
Tyler Chatow24b5db12020-01-06 21:16:56 -0800519 "//frc971/queues:gyro_fbs",
James Kuszmaul3e1bb272020-01-17 18:38:19 -0800520 "//frc971/wpilib:imu_fbs",
Alex Perry04300d62019-02-17 14:37:04 -0800521 ] + cpu_select({
522 "amd64": [
523 "//third_party/matplotlib-cpp",
524 ],
525 "arm": [],
526 }),
Comran Morshed5323ecb2015-12-26 20:50:55 +0000527)
Brian Silverman6260c092018-01-14 15:21:36 -0800528
529genrule(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700530 name = "genrule_haptic_wheel",
531 outs = [
532 "haptic_wheel.h",
533 "haptic_wheel.cc",
534 "integral_haptic_wheel.h",
535 "integral_haptic_wheel.cc",
536 "haptic_trigger.h",
537 "haptic_trigger.cc",
538 "integral_haptic_trigger.h",
539 "integral_haptic_trigger.cc",
540 ],
541 cmd = "$(location //frc971/control_loops/python:haptic_wheel) $(OUTS)",
Austin Schuhbcce26a2018-03-26 23:41:24 -0700542 tools = [
543 "//frc971/control_loops/python:haptic_wheel",
544 ],
545 visibility = ["//visibility:private"],
Brian Silverman6260c092018-01-14 15:21:36 -0800546)
547
548cc_library(
Austin Schuhbcce26a2018-03-26 23:41:24 -0700549 name = "haptic_wheel",
550 srcs = [
551 "haptic_trigger.cc",
552 "haptic_wheel.cc",
553 "integral_haptic_trigger.cc",
554 "integral_haptic_wheel.cc",
555 ],
556 hdrs = [
557 "haptic_trigger.h",
558 "haptic_wheel.h",
559 "integral_haptic_trigger.h",
560 "integral_haptic_wheel.h",
561 ],
562 deps = [
563 "//frc971/control_loops:state_feedback_loop",
564 ],
Brian Silverman6260c092018-01-14 15:21:36 -0800565)
Austin Schuhc2b08772018-12-19 18:05:06 +1100566
567cc_library(
568 name = "spline",
569 srcs = ["spline.cc"],
570 hdrs = ["spline.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800571 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhc2b08772018-12-19 18:05:06 +1100572 deps = [
Austin Schuhf49b4e32019-01-13 17:26:58 -0800573 "//frc971/control_loops:binomial",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700574 "@org_tuxfamily_eigen//:eigen",
Austin Schuhc2b08772018-12-19 18:05:06 +1100575 ],
576)
577
Alex Perrya60da442019-01-21 19:00:27 -0500578cc_binary(
579 name = "spline.so",
580 srcs = ["libspline.cc"],
James Kuszmaul2ed7b3c2019-02-09 18:26:19 -0800581 linkshared = True,
Philipp Schraderdada1072020-11-24 11:34:46 -0800582 target_compatible_with = ["@platforms//os:linux"],
Alex Perrya60da442019-01-21 19:00:27 -0500583 deps = [
584 ":distance_spline",
585 ":spline",
Alex Perry0603b542019-01-25 20:29:51 -0800586 ":trajectory",
587 "//aos/logging:implementations",
588 "//aos/network:team_number",
James Kuszmaul8aa37cb2020-03-01 10:27:58 -0800589 "//y2020/control_loops/drivetrain:drivetrain_base",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700590 "@org_tuxfamily_eigen//:eigen",
Alex Perrya60da442019-01-21 19:00:27 -0500591 ],
Alex Perrya60da442019-01-21 19:00:27 -0500592)
593
Austin Schuhc2b08772018-12-19 18:05:06 +1100594cc_test(
595 name = "spline_test",
596 srcs = [
597 "spline_test.cc",
598 ],
James Kuszmaule32fa932021-05-11 21:38:16 -0700599 linkstatic = True,
Philipp Schraderdada1072020-11-24 11:34:46 -0800600 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhc2b08772018-12-19 18:05:06 +1100601 deps = [
602 ":spline",
603 "//aos/testing:googletest",
James Kuszmaule32fa932021-05-11 21:38:16 -0700604 "//frc971/analysis:in_process_plotter",
Austin Schuhc2b08772018-12-19 18:05:06 +1100605 "@com_github_gflags_gflags//:gflags",
606 ],
607)
Austin Schuh941b46d2018-12-19 18:06:05 +1100608
609cc_library(
610 name = "distance_spline",
611 srcs = ["distance_spline.cc"],
612 hdrs = ["distance_spline.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800613 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh941b46d2018-12-19 18:06:05 +1100614 deps = [
615 ":spline",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800616 ":trajectory_fbs",
Austin Schuhf7c65202022-11-04 21:28:20 -0700617 "//aos/containers:sized_array",
Austin Schuha6e7b212019-01-20 13:53:01 -0800618 "//aos/logging",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800619 "//frc971/control_loops:control_loops_fbs",
Austin Schuh941b46d2018-12-19 18:06:05 +1100620 "//frc971/control_loops:fixed_quadrature",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800621 "@com_github_google_glog//:glog",
Austin Schuhf7c65202022-11-04 21:28:20 -0700622 "@com_google_absl//absl/types:span",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700623 "@org_tuxfamily_eigen//:eigen",
Austin Schuh941b46d2018-12-19 18:06:05 +1100624 ],
625)
626
627cc_test(
628 name = "distance_spline_test",
629 srcs = [
630 "distance_spline_test.cc",
631 ],
Austin Schuh9b0b6432019-01-13 21:15:17 -0800632 defines =
633 cpu_select({
634 "amd64": [
635 "SUPPORT_PLOT=1",
636 ],
637 "arm": [],
638 }),
639 linkstatic = True,
Philipp Schraderdada1072020-11-24 11:34:46 -0800640 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh941b46d2018-12-19 18:06:05 +1100641 deps = [
642 ":distance_spline",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800643 "//aos:flatbuffers",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700644 "//aos/testing:googletest",
Austin Schuha6e7b212019-01-20 13:53:01 -0800645 "//aos/testing:test_shm",
Austin Schuh941b46d2018-12-19 18:06:05 +1100646 "@com_github_gflags_gflags//:gflags",
Austin Schuh9b0b6432019-01-13 21:15:17 -0800647 ] + cpu_select({
648 "amd64": [
649 "//third_party/matplotlib-cpp",
650 ],
651 "arm": [],
652 }),
Austin Schuh941b46d2018-12-19 18:06:05 +1100653)
Austin Schuhec7f06d2019-01-04 07:47:15 +1100654
655cc_library(
656 name = "trajectory",
657 srcs = ["trajectory.cc"],
658 hdrs = ["trajectory.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800659 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhec7f06d2019-01-04 07:47:15 +1100660 deps = [
661 ":distance_spline",
662 ":drivetrain_config",
James Kuszmaul75a18c52021-03-10 22:02:07 -0800663 ":spline_goal_fbs",
664 ":trajectory_fbs",
James Kuszmaul5e8ce312021-03-27 14:59:17 -0700665 "//aos/util:math",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100666 "//frc971/control_loops:c2d",
667 "//frc971/control_loops:dlqr",
668 "//frc971/control_loops:hybrid_state_feedback_loop",
669 "//frc971/control_loops:runge_kutta",
670 "//frc971/control_loops:state_feedback_loop",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700671 "@org_tuxfamily_eigen//:eigen",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100672 ],
673)
674
James Kuszmaul75a18c52021-03-10 22:02:07 -0800675cc_library(
676 name = "trajectory_generator",
677 srcs = ["trajectory_generator.cc"],
678 hdrs = ["trajectory_generator.h"],
679 target_compatible_with = ["@platforms//os:linux"],
680 deps = [
681 ":distance_spline",
682 ":drivetrain_config",
683 ":spline_goal_fbs",
684 ":trajectory",
685 ":trajectory_fbs",
686 ],
687)
688
Austin Schuhec7f06d2019-01-04 07:47:15 +1100689cc_binary(
690 name = "trajectory_plot",
691 srcs = [
692 "trajectory_plot.cc",
693 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800694 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhec7f06d2019-01-04 07:47:15 +1100695 deps = [
696 ":distance_spline",
697 ":trajectory",
698 "//aos/logging:implementations",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100699 "//aos/network:team_number",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100700 "//third_party/matplotlib-cpp",
Austin Schuh11043182019-03-23 22:29:12 -0700701 "//y2019/control_loops/drivetrain:drivetrain_base",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100702 "@com_github_gflags_gflags//:gflags",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700703 "@org_tuxfamily_eigen//:eigen",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100704 ],
705)
706
707cc_test(
708 name = "trajectory_test",
709 srcs = [
710 "trajectory_test.cc",
711 ],
Austin Schuh719a33e2019-01-07 15:13:34 -0800712 defines =
713 cpu_select({
714 "amd64": [
715 "SUPPORT_PLOT=1",
716 ],
717 "arm": [],
718 }),
719 linkstatic = True,
Philipp Schraderdada1072020-11-24 11:34:46 -0800720 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhec7f06d2019-01-04 07:47:15 +1100721 deps = [
James Kuszmaulea314d92019-02-18 19:45:06 -0800722 ":drivetrain_test_lib",
Maxwell Hendersoncef6f042023-05-26 14:38:09 -0700723 ":trajectory",
Austin Schuhec7f06d2019-01-04 07:47:15 +1100724 "//aos/testing:googletest",
725 "//aos/testing:test_shm",
726 "//y2016:constants",
727 "//y2016/control_loops/drivetrain:polydrivetrain_plants",
James Kuszmaulea314d92019-02-18 19:45:06 -0800728 "//y2019/control_loops/drivetrain:drivetrain_base",
Austin Schuh719a33e2019-01-07 15:13:34 -0800729 ] + cpu_select({
730 "amd64": [
731 "//third_party/matplotlib-cpp",
732 ],
733 "arm": [],
734 }),
Austin Schuhec7f06d2019-01-04 07:47:15 +1100735)
Austin Schuhca080812017-05-10 19:31:55 -0700736
737cc_library(
738 name = "improved_down_estimator",
739 srcs = [
740 "improved_down_estimator.cc",
741 ],
742 hdrs = [
743 "improved_down_estimator.h",
744 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800745 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhca080812017-05-10 19:31:55 -0700746 deps = [
James Kuszmaul7f55f072020-03-01 10:21:26 -0800747 ":drivetrain_config",
James Kuszmaul3e1bb272020-01-17 18:38:19 -0800748 ":drivetrain_status_fbs",
749 "//aos/events:event_loop",
750 "//frc971/control_loops:control_loops_fbs",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700751 "//frc971/control_loops:quaternion_utils",
Austin Schuhca080812017-05-10 19:31:55 -0700752 "//frc971/control_loops:runge_kutta",
James Kuszmaul3e1bb272020-01-17 18:38:19 -0800753 "@//aos/time",
Austin Schuhca080812017-05-10 19:31:55 -0700754 "@com_github_google_glog//:glog",
755 "@org_tuxfamily_eigen//:eigen",
756 ],
757)
758
759cc_test(
760 name = "improved_down_estimator_test",
761 srcs = [
762 "improved_down_estimator_test.cc",
763 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800764 target_compatible_with = ["@platforms//os:linux"],
Austin Schuhca080812017-05-10 19:31:55 -0700765 deps = [
James Kuszmaul7f55f072020-03-01 10:21:26 -0800766 ":drivetrain_test_lib",
Austin Schuhca080812017-05-10 19:31:55 -0700767 "//aos/testing:googletest",
768 "//aos/testing:random_seed",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700769 "//frc971/control_loops:quaternion_utils",
Austin Schuhca080812017-05-10 19:31:55 -0700770 "//frc971/control_loops/drivetrain:improved_down_estimator",
771 "@org_tuxfamily_eigen//:eigen",
772 ],
773)
James Kuszmaulf4ede202020-02-14 08:47:40 -0800774
775cc_library(
776 name = "camera",
777 srcs = ["camera.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800778 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaulf4ede202020-02-14 08:47:40 -0800779 visibility = ["//visibility:public"],
780 deps = [
781 "//aos/containers:sized_array",
782 "//frc971/control_loops:pose",
783 ],
784)
785
786cc_test(
787 name = "camera_test",
788 srcs = ["camera_test.cc"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800789 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaulf4ede202020-02-14 08:47:40 -0800790 deps = [
791 ":camera",
792 "//aos/testing:googletest",
793 ],
794)
James Kuszmaulc4ae11c2020-12-26 16:26:58 -0800795
Philipp Schrader3de4dfc2023-02-15 20:18:25 -0800796ts_project(
James Kuszmaulac2b6b42021-03-07 22:38:06 -0800797 name = "down_estimator_plotter",
798 srcs = ["down_estimator_plotter.ts"],
799 target_compatible_with = ["@platforms//os:linux"],
800 deps = [
801 "//aos/network/www:aos_plotter",
802 "//aos/network/www:colors",
803 "//aos/network/www:proxy",
804 "//frc971/wpilib:imu_plot_utils",
805 ],
806)
807
Philipp Schrader3de4dfc2023-02-15 20:18:25 -0800808ts_project(
James Kuszmaul73fc1352021-04-09 22:31:25 -0700809 name = "spline_plotter",
810 srcs = ["spline_plotter.ts"],
811 target_compatible_with = ["@platforms//os:linux"],
812 deps = [
813 "//aos/network/www:aos_plotter",
814 "//aos/network/www:colors",
815 "//aos/network/www:proxy",
816 ],
817)
818
Philipp Schrader3de4dfc2023-02-15 20:18:25 -0800819ts_project(
James Kuszmaulc4ae11c2020-12-26 16:26:58 -0800820 name = "drivetrain_plotter",
821 srcs = ["drivetrain_plotter.ts"],
822 target_compatible_with = ["@platforms//os:linux"],
823 deps = [
824 "//aos/network/www:aos_plotter",
James Kuszmaul933a9742021-03-07 19:59:06 -0800825 "//aos/network/www:colors",
James Kuszmaulc4ae11c2020-12-26 16:26:58 -0800826 "//aos/network/www:proxy",
827 "//frc971/wpilib:imu_plot_utils",
828 ],
829)
milind upadhyay9bd381d2021-01-23 13:44:13 -0800830
Philipp Schrader3de4dfc2023-02-15 20:18:25 -0800831ts_project(
milind upadhyay9bd381d2021-01-23 13:44:13 -0800832 name = "robot_state_plotter",
833 srcs = ["robot_state_plotter.ts"],
834 target_compatible_with = ["@platforms//os:linux"],
835 deps = [
836 "//aos/network/www:aos_plotter",
James Kuszmaul933a9742021-03-07 19:59:06 -0800837 "//aos/network/www:colors",
milind upadhyay9bd381d2021-01-23 13:44:13 -0800838 "//aos/network/www:proxy",
839 ],
840)