blob: a78eab9a66f42cfde507e3fc1519bfc9f2b8e7b0 [file] [log] [blame]
Alex Perrycb7da4b2019-08-28 19:35:56 -07001load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
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",
10 "kalman_drivetrain_motor_plant.h",
11 "kalman_drivetrain_motor_plant.cc",
12 ],
13 cmd = "$(location //y2019/control_loops/python:drivetrain) $(OUTS)",
Philipp Schraderdada1072020-11-24 11:34:46 -080014 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080015 tools = [
16 "//y2019/control_loops/python:drivetrain",
17 ],
18)
19
20genrule(
21 name = "genrule_polydrivetrain",
22 outs = [
23 "polydrivetrain_dog_motor_plant.h",
24 "polydrivetrain_dog_motor_plant.cc",
25 "polydrivetrain_cim_plant.h",
26 "polydrivetrain_cim_plant.cc",
27 "hybrid_velocity_drivetrain.h",
28 "hybrid_velocity_drivetrain.cc",
29 ],
30 cmd = "$(location //y2019/control_loops/python:polydrivetrain) $(OUTS)",
Philipp Schraderdada1072020-11-24 11:34:46 -080031 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080032 tools = [
33 "//y2019/control_loops/python:polydrivetrain",
34 ],
35)
36
37cc_library(
38 name = "polydrivetrain_plants",
39 srcs = [
40 "drivetrain_dog_motor_plant.cc",
41 "hybrid_velocity_drivetrain.cc",
42 "kalman_drivetrain_motor_plant.cc",
43 "polydrivetrain_dog_motor_plant.cc",
44 ],
45 hdrs = [
46 "drivetrain_dog_motor_plant.h",
47 "hybrid_velocity_drivetrain.h",
48 "kalman_drivetrain_motor_plant.h",
49 "polydrivetrain_dog_motor_plant.h",
50 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080051 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080052 visibility = ["//visibility:public"],
53 deps = [
54 "//frc971/control_loops:hybrid_state_feedback_loop",
55 "//frc971/control_loops:state_feedback_loop",
56 ],
57)
58
59cc_library(
60 name = "drivetrain_base",
61 srcs = [
62 "drivetrain_base.cc",
63 ],
64 hdrs = [
65 "drivetrain_base.h",
66 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080067 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080068 visibility = ["//visibility:public"],
69 deps = [
70 ":polydrivetrain_plants",
71 "//frc971:shifter_hall_effect",
72 "//frc971/control_loops/drivetrain:drivetrain_config",
73 ],
74)
75
76cc_binary(
James Kuszmaul75a18c52021-03-10 22:02:07 -080077 name = "trajectory_generator",
78 srcs = [
79 "trajectory_generator_main.cc",
80 ],
81 target_compatible_with = ["@platforms//os:linux"],
82 visibility = ["//visibility:public"],
83 deps = [
84 ":drivetrain_base",
85 "//aos:init",
86 "//aos/events:shm_event_loop",
87 "//frc971/control_loops/drivetrain:trajectory_generator",
88 ],
89)
90
91cc_binary(
Austin Schuh378483c2019-01-20 16:36:40 -080092 name = "drivetrain",
93 srcs = [
94 "drivetrain_main.cc",
95 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080096 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080097 visibility = ["//visibility:public"],
98 deps = [
99 ":drivetrain_base",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800100 ":event_loop_localizer",
Austin Schuh378483c2019-01-20 16:36:40 -0800101 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700102 "//aos/events:shm_event_loop",
Austin Schuh378483c2019-01-20 16:36:40 -0800103 "//frc971/control_loops/drivetrain:drivetrain_lib",
104 ],
105)
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800106
Alex Perrycb7da4b2019-08-28 19:35:56 -0700107flatbuffer_cc_library(
108 name = "target_selector_fbs",
109 srcs = ["target_selector.fbs"],
110 gen_reflections = 1,
Philipp Schraderdada1072020-11-24 11:34:46 -0800111 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul7d1ef442019-03-23 20:20:50 -0700112 visibility = ["//visibility:public"],
113)
114
Alex Perrycb7da4b2019-08-28 19:35:56 -0700115flatbuffer_cc_library(
116 name = "camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800117 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700118 "camera.fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800119 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700120 gen_reflections = 1,
Philipp Schraderdada1072020-11-24 11:34:46 -0800121 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermanc41fb862019-03-02 21:14:46 -0800122 visibility = ["//visibility:public"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800123)
124
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800125cc_library(
James Kuszmaul1057ce82019-02-09 17:58:24 -0800126 name = "localizer",
127 hdrs = ["localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800128 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800129 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800130 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800131 "//frc971/control_loops/drivetrain:camera",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800132 "//frc971/control_loops/drivetrain:hybrid_ekf",
133 ],
134)
135
James Kuszmaul09f564a2019-02-18 17:37:09 -0800136cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800137 name = "target_selector",
138 srcs = ["target_selector.cc"],
139 hdrs = ["target_selector.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800140 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800141 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700142 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800143 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800144 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800145 "//frc971/control_loops/drivetrain:localizer",
146 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700147 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800148 ],
149)
150
151cc_test(
152 name = "target_selector_test",
153 srcs = ["target_selector_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700154 data = ["//y2019:config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800155 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800156 deps = [
157 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700158 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800159 "//aos/testing:googletest",
160 ],
161)
162
163cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800164 name = "event_loop_localizer",
165 srcs = ["event_loop_localizer.cc"],
166 hdrs = ["event_loop_localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800167 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800168 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700169 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800170 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800171 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800172 "//frc971/control_loops/drivetrain:localizer",
173 "//y2019:constants",
174 ],
175)
176
James Kuszmaul1057ce82019-02-09 17:58:24 -0800177cc_test(
178 name = "localizer_test",
179 srcs = ["localizer_test.cc"],
180 defines =
181 cpu_select({
182 "amd64": [
183 "SUPPORT_PLOT=1",
184 ],
185 "arm": [],
186 }),
187 linkstatic = True,
James Kuszmaul74d8f972020-02-11 17:13:17 -0800188 shard_count = 8,
Philipp Schraderdada1072020-11-24 11:34:46 -0800189 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800190 deps = [
191 ":localizer",
192 ":drivetrain_base",
193 "//aos/testing:googletest",
194 "//aos/testing:random_seed",
195 "//aos/testing:test_shm",
196 "//frc971/control_loops/drivetrain:trajectory",
197 "//y2019:constants",
198 "//frc971/control_loops/drivetrain:splinedrivetrain",
199 "@com_github_gflags_gflags//:gflags",
200 ] + cpu_select({
201 "amd64": [
202 "//third_party/matplotlib-cpp",
203 ],
204 "arm": [],
205 }),
206)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800207
James Kuszmaul74d8f972020-02-11 17:13:17 -0800208aos_config(
209 name = "simulation_config",
210 src = "drivetrain_simulation_config.json",
Philipp Schraderdada1072020-11-24 11:34:46 -0800211 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800212 visibility = ["//visibility:public"],
213 deps = [
214 "//frc971/control_loops/drivetrain:simulation_channels",
215 "//y2019:config",
216 ],
217)
218
James Kuszmaul09f564a2019-02-18 17:37:09 -0800219cc_test(
220 name = "localized_drivetrain_test",
221 srcs = ["localized_drivetrain_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700222 data = [":simulation_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800223 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800224 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700225 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800226 ":drivetrain_base",
227 ":event_loop_localizer",
228 ":localizer",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700229 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800230 "//aos/network:team_number",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700231 "//frc971/control_loops:control_loop_test",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800232 "//frc971/control_loops:team_number_test_environment",
233 "//frc971/control_loops/drivetrain:drivetrain_lib",
234 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
235 ],
236)
James Kuszmaul314f1672020-01-03 20:02:08 -0800237
238cc_binary(
239 name = "drivetrain_replay",
240 srcs = ["drivetrain_replay.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700241 data = ["//y2019:config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800242 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul314f1672020-01-03 20:02:08 -0800243 deps = [
244 ":drivetrain_base",
245 ":event_loop_localizer",
246 "//aos:configuration",
247 "//aos:init",
248 "//aos/events:shm_event_loop",
249 "//aos/events:simulated_event_loop",
Austin Schuhb06f03b2021-02-17 22:00:37 -0800250 "//aos/events/logging:log_reader",
251 "//aos/events/logging:log_writer",
James Kuszmaul314f1672020-01-03 20:02:08 -0800252 "//frc971/control_loops/drivetrain:drivetrain_lib",
253 "@com_github_gflags_gflags//:gflags",
254 "@com_github_google_glog//:glog",
255 ],
256)