blob: 095b856c4b33983434598f354c26d45fe90a85e9 [file] [log] [blame]
Austin Schuh9f164e92022-12-29 16:15:28 -08001load("//frc971:downloader.bzl", "robot_downloader")
2load("//aos:config.bzl", "aos_config")
3load("//tools/build_rules:template.bzl", "jinja2_template")
Austin Schuhbb4c9ac2023-02-28 22:04:20 -08004load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
milind-uc6e437a2023-03-01 23:40:40 -08005load("//aos/util:config_validator_macro.bzl", "config_validator_rule")
6
7config_validator_rule(
8 name = "config_validator_test",
9 config = "//y2023:aos_config",
10)
Austin Schuh9f164e92022-12-29 16:15:28 -080011
12robot_downloader(
Ravago Jones2060ee62023-02-03 18:12:24 -080013 binaries = [
14 "//aos/network:web_proxy_main",
15 "//aos/events/logging:log_cat",
James Kuszmaule22680a2023-02-26 17:33:43 -080016 "//y2023/constants:constants_sender",
Austin Schuhd138e372023-02-23 21:43:53 -080017 "//aos/events:aos_timing_report_streamer",
Ravago Jones2060ee62023-02-03 18:12:24 -080018 ],
19 data = [
20 ":aos_config",
Xander Yee1ad2f7b2023-02-21 14:46:56 -080021 "//aos/starter:roborio_irq_config.json",
James Kuszmaule22680a2023-02-26 17:33:43 -080022 "//y2023/constants:constants.json",
Maxwell Hendersonb392b742023-03-05 07:53:51 -080023 "//y2023/control_loops/superstructure/arm:arm_trajectories_generated.bfbs",
Ravago Jones2060ee62023-02-03 18:12:24 -080024 "@ctre_phoenix_api_cpp_athena//:shared_libraries",
25 "@ctre_phoenix_cci_athena//:shared_libraries",
26 "@ctre_phoenixpro_api_cpp_athena//:shared_libraries",
27 "@ctre_phoenixpro_tools_athena//:shared_libraries",
28 ],
29 dirs = [
30 "//y2023/www:www_files",
James Kuszmaul713c5ce2023-03-04 18:23:24 -080031 "//y2023/autonomous:splines",
Ravago Jones2060ee62023-02-03 18:12:24 -080032 ],
33 start_binaries = [
34 "//aos/events/logging:logger_main",
35 "//aos/network:web_proxy_main",
Xander Yee1ad2f7b2023-02-21 14:46:56 -080036 "//aos/starter:irq_affinity",
James Kuszmaul713c5ce2023-03-04 18:23:24 -080037 "//y2023/autonomous:binaries",
Ravago Jones2060ee62023-02-03 18:12:24 -080038 ":joystick_reader",
39 ":wpilib_interface",
40 "//aos/network:message_bridge_client",
41 "//aos/network:message_bridge_server",
42 "//y2023/control_loops/drivetrain:drivetrain",
43 "//y2023/control_loops/drivetrain:trajectory_generator",
44 "//y2023/control_loops/superstructure:superstructure",
45 ],
46 target_compatible_with = ["@platforms//os:linux"],
47)
48
49robot_downloader(
Austin Schuh9f164e92022-12-29 16:15:28 -080050 name = "pi_download",
51 binaries = [
James Kuszmaul7e958812023-02-11 15:34:31 -080052 "//frc971/vision:intrinsics_calibration",
Xander Yee1ad2f7b2023-02-21 14:46:56 -080053 "//aos/starter:irq_affinity",
James Kuszmaul77d536c2023-02-11 17:30:59 -080054 "//aos/util:foxglove_websocket",
Austin Schuh9f164e92022-12-29 16:15:28 -080055 "//y2023/vision:viewer",
milind-ud4051fe2023-02-25 18:00:05 -080056 "//y2023/vision:localization_verifier",
Maxwell Hendersonfebee252023-01-28 16:53:52 -080057 "//y2023/vision:aprilrobotics",
James Kuszmaule01ae1e2023-02-25 20:54:06 -080058 "//aos/events:aos_timing_report_streamer",
James Kuszmaul04a343c2023-02-20 16:38:22 -080059 "//y2023/localizer:localizer_main",
James Kuszmauld67f6d22023-02-05 17:37:25 -080060 "//y2023/constants:constants_sender",
James Kuszmaul77d536c2023-02-11 17:30:59 -080061 "//y2023/vision:foxglove_image_converter",
Maxwell Hendersonad312342023-01-10 12:07:47 -080062 "//aos/network:web_proxy_main",
Yash Chainani4b91ff12023-03-14 19:56:07 -070063 ":joystick_republish",
Austin Schuh9f164e92022-12-29 16:15:28 -080064 "//aos/events/logging:log_cat",
Austin Schuhb07dd5b2023-02-05 22:29:11 -080065 "//y2023/rockpi:imu_main",
milind-u8e98cb92023-02-05 16:07:10 -080066 "//frc971/image_streamer:image_streamer",
Austin Schuh9f164e92022-12-29 16:15:28 -080067 ],
68 data = [
69 ":aos_config",
James Kuszmaul08a4d852023-02-22 16:57:54 -080070 "//frc971/rockpi:rockpi_config.json",
James Kuszmauld67f6d22023-02-05 17:37:25 -080071 "//y2023/constants:constants.json",
milind-u8e98cb92023-02-05 16:07:10 -080072 "//y2023/vision:image_streamer_start",
James Kuszmauld67f6d22023-02-05 17:37:25 -080073 "//y2023/www:www_files",
Austin Schuh9f164e92022-12-29 16:15:28 -080074 ],
75 dirs = [
Maxwell Hendersonad312342023-01-10 12:07:47 -080076 "//y2023/www:www_files",
milind-u8e98cb92023-02-05 16:07:10 -080077 "//frc971/image_streamer/www:www_files",
Austin Schuh9f164e92022-12-29 16:15:28 -080078 ],
79 start_binaries = [
Austin Schuh9f164e92022-12-29 16:15:28 -080080 "//aos/network:message_bridge_client",
81 "//aos/network:message_bridge_server",
82 "//aos/network:web_proxy_main",
Austin Schuh3e1d3b62023-01-08 13:52:31 -080083 "//aos/starter:irq_affinity",
Austin Schuh9f164e92022-12-29 16:15:28 -080084 "//y2023/vision:camera_reader",
milind-ua96c5182023-03-10 23:31:11 -080085 "//y2023/vision:image_logger",
Maxwell Hendersonad312342023-01-10 12:07:47 -080086 "//aos/events/logging:logger_main",
Filip Kujawa3004f202023-02-12 16:41:40 -080087 "//y2023/vision:game_pieces_detector",
Austin Schuh9f164e92022-12-29 16:15:28 -080088 ],
89 target_compatible_with = ["//tools/platforms/hardware:raspberry_pi"],
90 target_type = "pi",
91)
92
93aos_config(
94 name = "aos_config",
95 src = "y2023.json",
96 flatbuffers = [
97 "//aos/network:message_bridge_client_fbs",
98 "//aos/network:message_bridge_server_fbs",
99 "//aos/network:timestamp_fbs",
100 "//frc971/input:robot_state_fbs",
101 "//frc971/vision:vision_fbs",
Maxwell Hendersonfebee252023-01-28 16:53:52 -0800102 "//frc971/vision:target_map_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800103 ],
104 target_compatible_with = ["@platforms//os:linux"],
105 visibility = ["//visibility:public"],
106 deps = [
107 ":config_imu",
108 ":config_logger",
109 ":config_pi1",
110 ":config_pi2",
111 ":config_pi3",
112 ":config_pi4",
113 ":config_roborio",
114 ],
115)
116
117[
118 aos_config(
119 name = "config_" + pi,
120 src = "y2023_" + pi + ".json",
121 flatbuffers = [
122 "//aos/network:message_bridge_client_fbs",
123 "//aos/network:message_bridge_server_fbs",
124 "//aos/network:timestamp_fbs",
125 "//aos/network:remote_message_fbs",
James Kuszmauld67f6d22023-02-05 17:37:25 -0800126 "//y2023/constants:constants_fbs",
James Kuszmaule3df1ed2023-02-20 16:21:17 -0800127 "//frc971/control_loops/drivetrain/localization:localizer_output_fbs",
milind-u2f101fc2023-01-21 12:28:49 -0800128 "//frc971/vision:calibration_fbs",
Maxwell Hendersonfebee252023-01-28 16:53:52 -0800129 "//frc971/vision:target_map_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800130 "//frc971/vision:vision_fbs",
James Kuszmaul04a343c2023-02-20 16:38:22 -0800131 "//y2023/localizer:visualization_fbs",
Filip Kujawa3004f202023-02-12 16:41:40 -0800132 "//y2023/vision:game_pieces_fbs",
James Kuszmaulf3ec4db2023-02-12 14:18:41 -0800133 "@com_github_foxglove_schemas//:schemas",
Austin Schuh9f164e92022-12-29 16:15:28 -0800134 ],
135 target_compatible_with = ["@platforms//os:linux"],
136 visibility = ["//visibility:public"],
137 deps = [
138 "//aos/events:aos_config",
139 "//frc971/control_loops/drivetrain:aos_config",
140 "//frc971/input:aos_config",
141 ],
142 )
143 for pi in [
144 "pi1",
145 "pi2",
146 "pi3",
147 "pi4",
148 ]
149]
150
151aos_config(
152 name = "config_imu",
153 src = "y2023_imu.json",
154 flatbuffers = [
155 "//aos/network:message_bridge_client_fbs",
156 "//aos/network:message_bridge_server_fbs",
James Kuszmauld67f6d22023-02-05 17:37:25 -0800157 "//y2023/constants:constants_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800158 "//aos/network:timestamp_fbs",
159 "//aos/network:remote_message_fbs",
James Kuszmaul04a343c2023-02-20 16:38:22 -0800160 "//y2023/localizer:status_fbs",
James Kuszmaule3df1ed2023-02-20 16:21:17 -0800161 "//frc971/control_loops/drivetrain/localization:localizer_output_fbs",
James Kuszmaul04a343c2023-02-20 16:38:22 -0800162 "//y2023/localizer:visualization_fbs",
Maxwell Hendersonfebee252023-01-28 16:53:52 -0800163 "//frc971/vision:target_map_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800164 ],
165 target_compatible_with = ["@platforms//os:linux"],
166 visibility = ["//visibility:public"],
167 deps = [
168 "//aos/events:aos_config",
169 "//frc971/control_loops/drivetrain:aos_config",
170 ],
171)
172
173aos_config(
174 name = "config_logger",
175 src = "y2023_logger.json",
176 flatbuffers = [
177 "//aos/network:message_bridge_client_fbs",
178 "//aos/network:message_bridge_server_fbs",
179 "//aos/network:timestamp_fbs",
180 "//aos/network:remote_message_fbs",
milind-u2f101fc2023-01-21 12:28:49 -0800181 "//frc971/vision:calibration_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800182 "//frc971/vision:vision_fbs",
Maxwell Hendersonfebee252023-01-28 16:53:52 -0800183 "//frc971/vision:target_map_fbs",
James Kuszmauld67f6d22023-02-05 17:37:25 -0800184 "//y2023/constants:constants_fbs",
Filip Kujawa3004f202023-02-12 16:41:40 -0800185 "//y2023/vision:game_pieces_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800186 ],
187 target_compatible_with = ["@platforms//os:linux"],
188 visibility = ["//visibility:public"],
189 deps = [
190 "//aos/events:aos_config",
191 "//frc971/control_loops/drivetrain:aos_config",
192 "//frc971/input:aos_config",
193 ],
194)
195
196aos_config(
197 name = "config_roborio",
198 src = "y2023_roborio.json",
199 flatbuffers = [
Austin Schuhbb4c9ac2023-02-28 22:04:20 -0800200 ":can_configuration_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800201 "//aos/network:remote_message_fbs",
202 "//aos/network:message_bridge_client_fbs",
203 "//aos/network:message_bridge_server_fbs",
James Kuszmauld67f6d22023-02-05 17:37:25 -0800204 "//y2023/constants:constants_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800205 "//aos/network:timestamp_fbs",
206 "//y2019/control_loops/drivetrain:target_selector_fbs",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800207 "//y2023/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauldb730d72023-02-25 16:01:27 -0800208 "//y2023/control_loops/drivetrain:target_selector_hint_fbs",
James Kuszmaul202e4382023-03-05 14:56:55 -0800209 "//y2023/control_loops/drivetrain:target_selector_status_fbs",
Ravago Jones2060ee62023-02-03 18:12:24 -0800210 "//y2023/control_loops/drivetrain:drivetrain_can_position_fbs",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800211 "//y2023/control_loops/superstructure:superstructure_output_fbs",
212 "//y2023/control_loops/superstructure:superstructure_position_fbs",
213 "//y2023/control_loops/superstructure:superstructure_status_fbs",
Austin Schuh9f164e92022-12-29 16:15:28 -0800214 ],
215 target_compatible_with = ["@platforms//os:linux"],
216 deps = [
217 "//aos/events:aos_config",
218 "//frc971/autonomous:aos_config",
219 "//frc971/control_loops/drivetrain:aos_config",
220 "//frc971/input:aos_config",
221 "//frc971/wpilib:aos_config",
222 ],
223)
224
225[
226 jinja2_template(
227 name = "y2023_pi" + str(num) + ".json",
228 src = "y2023_pi_template.json",
229 parameters = {"NUM": str(num)},
230 target_compatible_with = ["@platforms//os:linux"],
231 )
232 for num in range(1, 6)
233]
Maxwell Hendersonad312342023-01-10 12:07:47 -0800234
235cc_library(
236 name = "constants",
237 srcs = [
238 "constants.cc",
239 ],
240 hdrs = [
241 "constants.h",
242 ],
243 visibility = ["//visibility:public"],
244 deps = [
245 "//aos/mutex",
246 "//aos/network:team_number",
247 "//frc971:constants",
248 "//frc971/control_loops:pose",
249 "//frc971/control_loops:static_zeroing_single_dof_profiled_subsystem",
250 "//frc971/shooter_interpolation:interpolation",
251 "//y2023/control_loops/drivetrain:polydrivetrain_plants",
milind-u37385182023-02-20 15:07:28 -0800252 "//y2023/control_loops/superstructure/arm:arm_constants",
milind-u051c7002023-02-20 16:28:18 -0800253 "//y2023/control_loops/superstructure/roll:roll_plants",
254 "//y2023/control_loops/superstructure/wrist:wrist_plants",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800255 "@com_github_google_glog//:glog",
256 "@com_google_absl//absl/base",
257 ],
258)
259
260cc_binary(
261 name = "wpilib_interface",
262 srcs = [
263 "wpilib_interface.cc",
264 ],
265 target_compatible_with = ["//tools/platforms/hardware:roborio"],
266 deps = [
Austin Schuhbb4c9ac2023-02-28 22:04:20 -0800267 ":can_configuration_fbs",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800268 ":constants",
269 "//aos:init",
270 "//aos:math",
Ravago Jones2060ee62023-02-03 18:12:24 -0800271 "//aos/containers:sized_array",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800272 "//aos/events:shm_event_loop",
273 "//aos/logging",
274 "//aos/stl_mutex",
275 "//aos/time",
276 "//aos/util:log_interval",
277 "//aos/util:phased_loop",
278 "//aos/util:wrapping_counter",
279 "//frc971/autonomous:auto_mode_fbs",
280 "//frc971/control_loops:control_loop",
281 "//frc971/control_loops:control_loops_fbs",
282 "//frc971/control_loops/drivetrain:drivetrain_position_fbs",
283 "//frc971/input:robot_state_fbs",
284 "//frc971/queues:gyro_fbs",
285 "//frc971/wpilib:ADIS16448",
286 "//frc971/wpilib:buffered_pcm",
287 "//frc971/wpilib:drivetrain_writer",
288 "//frc971/wpilib:encoder_and_potentiometer",
289 "//frc971/wpilib:interrupt_edge_counting",
290 "//frc971/wpilib:joystick_sender",
291 "//frc971/wpilib:logging_fbs",
292 "//frc971/wpilib:loop_output_handler",
293 "//frc971/wpilib:pdp_fetcher",
294 "//frc971/wpilib:sensor_reader",
295 "//frc971/wpilib:wpilib_interface",
296 "//frc971/wpilib:wpilib_robot_base",
297 "//third_party:phoenix",
Ravago Jones2060ee62023-02-03 18:12:24 -0800298 "//third_party:phoenixpro",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800299 "//third_party:wpilib",
Ravago Jones2060ee62023-02-03 18:12:24 -0800300 "//y2023/control_loops/drivetrain:drivetrain_can_position_fbs",
Maxwell Henderson2a2faa62023-03-11 15:05:46 -0800301 "//y2023/control_loops/superstructure:led_indicator_lib",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800302 "//y2023/control_loops/superstructure:superstructure_output_fbs",
303 "//y2023/control_loops/superstructure:superstructure_position_fbs",
304 ],
305)
306
307cc_binary(
308 name = "joystick_reader",
309 srcs = [
310 ":joystick_reader.cc",
311 ],
312 deps = [
313 ":constants",
314 "//aos:init",
315 "//aos/actions:action_lib",
316 "//aos/logging",
317 "//frc971/autonomous:auto_fbs",
318 "//frc971/autonomous:base_autonomous_actor",
319 "//frc971/control_loops:profiled_subsystem_fbs",
320 "//frc971/input:action_joystick_input",
321 "//frc971/input:drivetrain_input",
322 "//frc971/input:joystick_input",
323 "//y2023/control_loops/drivetrain:drivetrain_base",
James Kuszmaul4e171432023-02-26 13:39:37 -0800324 "//y2023/control_loops/drivetrain:target_selector_hint_fbs",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800325 "//y2023/control_loops/superstructure:superstructure_goal_fbs",
326 "//y2023/control_loops/superstructure:superstructure_status_fbs",
milind-udefab712023-02-20 22:22:02 -0800327 "//y2023/control_loops/superstructure/arm:generated_graph",
Maxwell Hendersonad312342023-01-10 12:07:47 -0800328 ],
329)
330
Yash Chainani4b91ff12023-03-14 19:56:07 -0700331cc_binary(
332 name = "joystick_republish",
333 srcs = [
334 "joystick_republish.cc",
335 ],
336 target_compatible_with = ["@platforms//os:linux"],
337 visibility = ["//visibility:public"],
338 deps = [
339 "//aos:configuration",
340 "//aos:flatbuffer_merge",
341 "//aos:init",
342 "//aos/events:shm_event_loop",
343 "//frc971/input:joystick_state_fbs",
344 "@com_github_google_glog//:glog",
345 ],
346)
347
Maxwell Hendersonad312342023-01-10 12:07:47 -0800348py_library(
349 name = "python_init",
350 srcs = ["__init__.py"],
351 target_compatible_with = ["@platforms//os:linux"],
352 visibility = ["//visibility:public"],
353)
354
355sh_binary(
356 name = "log_web_proxy",
357 srcs = ["log_web_proxy.sh"],
358 data = [
359 ":aos_config",
360 "//aos/network:log_web_proxy_main",
361 "//y2023/www:field_main_bundle.min.js",
362 "//y2023/www:files",
363 ],
364 target_compatible_with = ["@platforms//os:linux"],
365)
Austin Schuhe6b2b882023-02-04 11:42:40 -0800366
367cc_binary(
368 name = "ssd_profiler",
369 srcs = [
370 "ssd_profiler.cc",
371 ],
372 deps = [
373 "//aos:init",
374 "//aos/time",
375 "@com_github_google_glog//:glog",
376 ],
377)
Austin Schuhbb4c9ac2023-02-28 22:04:20 -0800378
379flatbuffer_cc_library(
380 name = "can_configuration_fbs",
381 srcs = [
382 ":can_configuration.fbs",
383 ],
384 gen_reflections = 1,
385 visibility = ["//visibility:public"],
386)