blob: 65857c6f443b85327095bd12f56d846912b9de41 [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",
136 ],
137)
138
James Kuszmaul09f564a2019-02-18 17:37:09 -0800139cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800140 name = "target_selector",
141 srcs = ["target_selector.cc"],
142 hdrs = ["target_selector.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800143 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800144 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700145 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800146 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800147 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800148 "//frc971/control_loops/drivetrain:localizer",
149 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700150 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800151 ],
152)
153
154cc_test(
155 name = "target_selector_test",
156 srcs = ["target_selector_test.cc"],
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800157 data = ["//y2019:aos_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800158 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800159 deps = [
160 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700161 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800162 "//aos/testing:googletest",
163 ],
164)
165
166cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800167 name = "event_loop_localizer",
168 srcs = ["event_loop_localizer.cc"],
169 hdrs = ["event_loop_localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800170 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800171 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700172 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800173 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800174 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800175 "//frc971/control_loops/drivetrain:localizer",
176 "//y2019:constants",
177 ],
178)
179
James Kuszmaul1057ce82019-02-09 17:58:24 -0800180cc_test(
181 name = "localizer_test",
182 srcs = ["localizer_test.cc"],
183 defines =
184 cpu_select({
185 "amd64": [
186 "SUPPORT_PLOT=1",
187 ],
188 "arm": [],
189 }),
190 linkstatic = True,
James Kuszmaul74d8f972020-02-11 17:13:17 -0800191 shard_count = 8,
Philipp Schraderdada1072020-11-24 11:34:46 -0800192 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800193 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800194 ":drivetrain_base",
Alexei Strotsb8bb99b2023-09-25 12:52:06 -0700195 ":localizer",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800196 "//aos/testing:googletest",
197 "//aos/testing:random_seed",
198 "//aos/testing:test_shm",
Alexei Strotsb8bb99b2023-09-25 12:52:06 -0700199 "//frc971/control_loops/drivetrain:splinedrivetrain",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800200 "//frc971/control_loops/drivetrain:trajectory",
201 "//y2019:constants",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800202 "@com_github_gflags_gflags//:gflags",
203 ] + cpu_select({
204 "amd64": [
205 "//third_party/matplotlib-cpp",
206 ],
207 "arm": [],
208 }),
209)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800210
James Kuszmaul74d8f972020-02-11 17:13:17 -0800211aos_config(
212 name = "simulation_config",
213 src = "drivetrain_simulation_config.json",
Philipp Schraderdada1072020-11-24 11:34:46 -0800214 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800215 visibility = ["//visibility:public"],
216 deps = [
217 "//frc971/control_loops/drivetrain:simulation_channels",
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800218 "//y2019:aos_config",
James Kuszmaul74d8f972020-02-11 17:13:17 -0800219 ],
220)
221
James Kuszmaul09f564a2019-02-18 17:37:09 -0800222cc_test(
223 name = "localized_drivetrain_test",
224 srcs = ["localized_drivetrain_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700225 data = [":simulation_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800226 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800227 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700228 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800229 ":drivetrain_base",
230 ":event_loop_localizer",
231 ":localizer",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700232 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800233 "//aos/network:team_number",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700234 "//frc971/control_loops:control_loop_test",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800235 "//frc971/control_loops:team_number_test_environment",
236 "//frc971/control_loops/drivetrain:drivetrain_lib",
237 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
238 ],
239)
James Kuszmaul314f1672020-01-03 20:02:08 -0800240
241cc_binary(
242 name = "drivetrain_replay",
243 srcs = ["drivetrain_replay.cc"],
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800244 data = ["//y2019:aos_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800245 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul314f1672020-01-03 20:02:08 -0800246 deps = [
247 ":drivetrain_base",
248 ":event_loop_localizer",
249 "//aos:configuration",
250 "//aos:init",
251 "//aos/events:shm_event_loop",
252 "//aos/events:simulated_event_loop",
Austin Schuhb06f03b2021-02-17 22:00:37 -0800253 "//aos/events/logging:log_reader",
254 "//aos/events/logging:log_writer",
James Kuszmaul314f1672020-01-03 20:02:08 -0800255 "//frc971/control_loops/drivetrain:drivetrain_lib",
256 "@com_github_gflags_gflags//:gflags",
257 "@com_github_google_glog//:glog",
258 ],
259)