blob: 9da671d73bc14467e122ba7a01d2c2acfad02238 [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",
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
James Kuszmaulf01da392023-12-14 11:22:14 -0800107static_flatbuffer(
Alex Perrycb7da4b2019-08-28 19:35:56 -0700108 name = "target_selector_fbs",
109 srcs = ["target_selector.fbs"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800110 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul7d1ef442019-03-23 20:20:50 -0700111 visibility = ["//visibility:public"],
112)
113
James Kuszmaulf01da392023-12-14 11:22:14 -0800114static_flatbuffer(
Alex Perrycb7da4b2019-08-28 19:35:56 -0700115 name = "camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800116 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700117 "camera.fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800118 ],
Philipp Schraderdada1072020-11-24 11:34:46 -0800119 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermanc41fb862019-03-02 21:14:46 -0800120 visibility = ["//visibility:public"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800121)
122
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800123cc_library(
James Kuszmaul1057ce82019-02-09 17:58:24 -0800124 name = "localizer",
125 hdrs = ["localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800126 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800127 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800128 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800129 "//frc971/control_loops/drivetrain:camera",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800130 "//frc971/control_loops/drivetrain:hybrid_ekf",
131 ],
132)
133
James Kuszmaul09f564a2019-02-18 17:37:09 -0800134cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800135 name = "target_selector",
136 srcs = ["target_selector.cc"],
137 hdrs = ["target_selector.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800138 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800139 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700140 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800141 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800142 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800143 "//frc971/control_loops/drivetrain:localizer",
144 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700145 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800146 ],
147)
148
149cc_test(
150 name = "target_selector_test",
151 srcs = ["target_selector_test.cc"],
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800152 data = ["//y2019:aos_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800153 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800154 deps = [
155 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700156 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800157 "//aos/testing:googletest",
158 ],
159)
160
161cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800162 name = "event_loop_localizer",
163 srcs = ["event_loop_localizer.cc"],
164 hdrs = ["event_loop_localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800165 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800166 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700167 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800168 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800169 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800170 "//frc971/control_loops/drivetrain:localizer",
171 "//y2019:constants",
172 ],
173)
174
James Kuszmaul1057ce82019-02-09 17:58:24 -0800175cc_test(
176 name = "localizer_test",
177 srcs = ["localizer_test.cc"],
178 defines =
179 cpu_select({
180 "amd64": [
181 "SUPPORT_PLOT=1",
182 ],
183 "arm": [],
184 }),
185 linkstatic = True,
James Kuszmaul74d8f972020-02-11 17:13:17 -0800186 shard_count = 8,
Philipp Schraderdada1072020-11-24 11:34:46 -0800187 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800188 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800189 ":drivetrain_base",
Alexei Strotsb8bb99b2023-09-25 12:52:06 -0700190 ":localizer",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800191 "//aos/testing:googletest",
192 "//aos/testing:random_seed",
193 "//aos/testing:test_shm",
Alexei Strotsb8bb99b2023-09-25 12:52:06 -0700194 "//frc971/control_loops/drivetrain:splinedrivetrain",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800195 "//frc971/control_loops/drivetrain:trajectory",
196 "//y2019:constants",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800197 "@com_github_gflags_gflags//:gflags",
198 ] + cpu_select({
199 "amd64": [
200 "//third_party/matplotlib-cpp",
201 ],
202 "arm": [],
203 }),
204)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800205
James Kuszmaul74d8f972020-02-11 17:13:17 -0800206aos_config(
207 name = "simulation_config",
208 src = "drivetrain_simulation_config.json",
Philipp Schraderdada1072020-11-24 11:34:46 -0800209 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800210 visibility = ["//visibility:public"],
211 deps = [
212 "//frc971/control_loops/drivetrain:simulation_channels",
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800213 "//y2019:aos_config",
James Kuszmaul74d8f972020-02-11 17:13:17 -0800214 ],
215)
216
James Kuszmaul09f564a2019-02-18 17:37:09 -0800217cc_test(
218 name = "localized_drivetrain_test",
219 srcs = ["localized_drivetrain_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700220 data = [":simulation_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800221 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800222 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700223 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800224 ":drivetrain_base",
225 ":event_loop_localizer",
226 ":localizer",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700227 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800228 "//aos/network:team_number",
Austin Schuh0a3c9d42021-07-15 22:36:24 -0700229 "//frc971/control_loops:control_loop_test",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800230 "//frc971/control_loops:team_number_test_environment",
231 "//frc971/control_loops/drivetrain:drivetrain_lib",
232 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
233 ],
234)
James Kuszmaul314f1672020-01-03 20:02:08 -0800235
236cc_binary(
237 name = "drivetrain_replay",
238 srcs = ["drivetrain_replay.cc"],
Austin Schuhc5fa6d92022-02-25 14:36:28 -0800239 data = ["//y2019:aos_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800240 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul314f1672020-01-03 20:02:08 -0800241 deps = [
242 ":drivetrain_base",
243 ":event_loop_localizer",
244 "//aos:configuration",
245 "//aos:init",
246 "//aos/events:shm_event_loop",
247 "//aos/events:simulated_event_loop",
Austin Schuhb06f03b2021-02-17 22:00:37 -0800248 "//aos/events/logging:log_reader",
249 "//aos/events/logging:log_writer",
James Kuszmaul314f1672020-01-03 20:02:08 -0800250 "//frc971/control_loops/drivetrain:drivetrain_lib",
251 "@com_github_gflags_gflags//:gflags",
252 "@com_github_google_glog//:glog",
253 ],
254)