blob: 53cb777ab2f528a5147f9f6cfc4102e91d2c2d88 [file] [log] [blame]
James Kuszmaulf01da392023-12-14 11:22:14 -08001load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
James Kuszmaul74d8f972020-02-11 17:13:17 -08002load("//aos:config.bzl", "aos_config")
Philipp Schradercc016b32021-12-30 08:59:58 -08003load("//tools/build_rules:select.bzl", "cpu_select")
Austin Schuh378483c2019-01-20 16:36:40 -08004
5genrule(
6 name = "genrule_drivetrain",
7 outs = [
8 "drivetrain_dog_motor_plant.h",
9 "drivetrain_dog_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080010 "drivetrain_dog_motor_plant.json",
Austin Schuh378483c2019-01-20 16:36:40 -080011 "kalman_drivetrain_motor_plant.h",
12 "kalman_drivetrain_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080013 "kalman_drivetrain_motor_plant.json",
Austin Schuh378483c2019-01-20 16:36:40 -080014 ],
15 cmd = "$(location //y2019/control_loops/python:drivetrain) $(OUTS)",
Philipp Schraderdada1072020-11-24 11:34:46 -080016 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080017 tools = [
18 "//y2019/control_loops/python:drivetrain",
19 ],
20)
21
22genrule(
23 name = "genrule_polydrivetrain",
24 outs = [
25 "polydrivetrain_dog_motor_plant.h",
26 "polydrivetrain_dog_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080027 "polydrivetrain_dog_motor_plant.json",
Austin Schuh378483c2019-01-20 16:36:40 -080028 "polydrivetrain_cim_plant.h",
29 "polydrivetrain_cim_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080030 "polydrivetrain_cim_plant.json",
Austin Schuh378483c2019-01-20 16:36:40 -080031 "hybrid_velocity_drivetrain.h",
32 "hybrid_velocity_drivetrain.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080033 "hybrid_velocity_drivetrain.json",
Austin Schuh378483c2019-01-20 16:36:40 -080034 ],
35 cmd = "$(location //y2019/control_loops/python:polydrivetrain) $(OUTS)",
Philipp Schraderdada1072020-11-24 11:34:46 -080036 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080037 tools = [
38 "//y2019/control_loops/python:polydrivetrain",
39 ],
40)
41
42cc_library(
43 name = "polydrivetrain_plants",
44 srcs = [
45 "drivetrain_dog_motor_plant.cc",
46 "hybrid_velocity_drivetrain.cc",
47 "kalman_drivetrain_motor_plant.cc",
48 "polydrivetrain_dog_motor_plant.cc",
49 ],
50 hdrs = [
51 "drivetrain_dog_motor_plant.h",
52 "hybrid_velocity_drivetrain.h",
53 "kalman_drivetrain_motor_plant.h",
54 "polydrivetrain_dog_motor_plant.h",
55 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080056 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080057 visibility = ["//visibility:public"],
58 deps = [
59 "//frc971/control_loops:hybrid_state_feedback_loop",
60 "//frc971/control_loops:state_feedback_loop",
61 ],
62)
63
64cc_library(
65 name = "drivetrain_base",
66 srcs = [
67 "drivetrain_base.cc",
68 ],
69 hdrs = [
70 "drivetrain_base.h",
71 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080072 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080073 visibility = ["//visibility:public"],
74 deps = [
75 ":polydrivetrain_plants",
76 "//frc971:shifter_hall_effect",
77 "//frc971/control_loops/drivetrain:drivetrain_config",
78 ],
79)
80
81cc_binary(
James Kuszmaul75a18c52021-03-10 22:02:07 -080082 name = "trajectory_generator",
83 srcs = [
84 "trajectory_generator_main.cc",
85 ],
86 target_compatible_with = ["@platforms//os:linux"],
87 visibility = ["//visibility:public"],
88 deps = [
89 ":drivetrain_base",
90 "//aos:init",
91 "//aos/events:shm_event_loop",
92 "//frc971/control_loops/drivetrain:trajectory_generator",
93 ],
94)
95
96cc_binary(
Austin Schuh378483c2019-01-20 16:36:40 -080097 name = "drivetrain",
98 srcs = [
99 "drivetrain_main.cc",
100 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800101 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -0800102 visibility = ["//visibility:public"],
103 deps = [
104 ":drivetrain_base",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800105 ":event_loop_localizer",
Austin Schuh378483c2019-01-20 16:36:40 -0800106 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700107 "//aos/events:shm_event_loop",
Austin Schuh378483c2019-01-20 16:36:40 -0800108 "//frc971/control_loops/drivetrain:drivetrain_lib",
109 ],
110)
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800111
James Kuszmaulf01da392023-12-14 11:22:14 -0800112static_flatbuffer(
Alex Perrycb7da4b2019-08-28 19:35:56 -0700113 name = "target_selector_fbs",
114 srcs = ["target_selector.fbs"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800115 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul7d1ef442019-03-23 20:20:50 -0700116 visibility = ["//visibility:public"],
117)
118
James Kuszmaulf01da392023-12-14 11:22:14 -0800119static_flatbuffer(
Alex Perrycb7da4b2019-08-28 19:35:56 -0700120 name = "camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800121 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700122 "camera.fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800123 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800124 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermanc41fb862019-03-02 21:14:46 -0800125 visibility = ["//visibility:public"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800126)
127
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800128cc_library(
James Kuszmaul1057ce82019-02-09 17:58:24 -0800129 name = "localizer",
130 hdrs = ["localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800131 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800132 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800133 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800134 "//frc971/control_loops/drivetrain:camera",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800135 "//frc971/control_loops/drivetrain:hybrid_ekf",
James Kuszmaul19612ab2024-02-17 20:45:58 -0800136 "//frc971/control_loops/drivetrain/localization:utils",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800137 ],
138)
139
James Kuszmaul09f564a2019-02-18 17:37:09 -0800140cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800141 name = "target_selector",
142 srcs = ["target_selector.cc"],
143 hdrs = ["target_selector.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800144 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800145 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700146 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800147 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800148 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800149 "//frc971/control_loops/drivetrain:localizer",
150 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700151 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800152 ],
153)
154
155cc_test(
156 name = "target_selector_test",
157 srcs = ["target_selector_test.cc"],
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800158 data = ["//y2019:aos_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800159 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800160 deps = [
161 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700162 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800163 "//aos/testing:googletest",
164 ],
165)
166
167cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800168 name = "event_loop_localizer",
169 srcs = ["event_loop_localizer.cc"],
170 hdrs = ["event_loop_localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800171 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800172 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700173 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800174 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800175 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800176 "//frc971/control_loops/drivetrain:localizer",
177 "//y2019:constants",
178 ],
179)
180
James Kuszmaul1057ce82019-02-09 17:58:24 -0800181cc_test(
182 name = "localizer_test",
183 srcs = ["localizer_test.cc"],
184 defines =
185 cpu_select({
186 "amd64": [
187 "SUPPORT_PLOT=1",
188 ],
189 "arm": [],
190 }),
191 linkstatic = True,
James Kuszmaul74d8f972020-02-11 17:13:17 -0800192 shard_count = 8,
Philipp Schraderdada1072020-11-24 11:34:46 -0800193 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800194 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800195 ":drivetrain_base",
Alexei Strotsb8bb99b2023-09-25 12:52:06 -0700196 ":localizer",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800197 "//aos/testing:googletest",
198 "//aos/testing:random_seed",
199 "//aos/testing:test_shm",
Alexei Strotsb8bb99b2023-09-25 12:52:06 -0700200 "//frc971/control_loops/drivetrain:splinedrivetrain",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800201 "//frc971/control_loops/drivetrain:trajectory",
202 "//y2019:constants",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800203 "@com_github_gflags_gflags//:gflags",
204 ] + cpu_select({
205 "amd64": [
206 "//third_party/matplotlib-cpp",
207 ],
208 "arm": [],
209 }),
210)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800211
James Kuszmaul74d8f972020-02-11 17:13:17 -0800212aos_config(
213 name = "simulation_config",
214 src = "drivetrain_simulation_config.json",
Philipp Schraderdada1072020-11-24 11:34:46 -0800215 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800216 visibility = ["//visibility:public"],
217 deps = [
218 "//frc971/control_loops/drivetrain:simulation_channels",
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800219 "//y2019:aos_config",
James Kuszmaul74d8f972020-02-11 17:13:17 -0800220 ],
221)
222
James Kuszmaul09f564a2019-02-18 17:37:09 -0800223cc_test(
224 name = "localized_drivetrain_test",
225 srcs = ["localized_drivetrain_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700226 data = [":simulation_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800227 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800228 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700229 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800230 ":drivetrain_base",
231 ":event_loop_localizer",
232 ":localizer",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700233 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800234 "//aos/network:team_number",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700235 "//frc971/control_loops:control_loop_test",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800236 "//frc971/control_loops:team_number_test_environment",
237 "//frc971/control_loops/drivetrain:drivetrain_lib",
238 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
239 ],
240)
James Kuszmaul314f1672020-01-03 20:02:08 -0800241
242cc_binary(
243 name = "drivetrain_replay",
244 srcs = ["drivetrain_replay.cc"],
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800245 data = ["//y2019:aos_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800246 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul314f1672020-01-03 20:02:08 -0800247 deps = [
248 ":drivetrain_base",
249 ":event_loop_localizer",
250 "//aos:configuration",
251 "//aos:init",
252 "//aos/events:shm_event_loop",
253 "//aos/events:simulated_event_loop",
Austin Schuhb06f03b2021-02-17 22:00:37 -0800254 "//aos/events/logging:log_reader",
255 "//aos/events/logging:log_writer",
James Kuszmaul314f1672020-01-03 20:02:08 -0800256 "//frc971/control_loops/drivetrain:drivetrain_lib",
257 "@com_github_gflags_gflags//:gflags",
258 "@com_github_google_glog//:glog",
259 ],
260)