blob: ed6d8322eeeaa4d1329b74a3a723e476feb32148 [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")
Alex Perrycb7da4b2019-08-28 19:35:56 -07003load("//tools/build_rules:select.bzl", "compiler_select", "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(
77 name = "drivetrain",
78 srcs = [
79 "drivetrain_main.cc",
80 ],
Philipp Schraderdada1072020-11-24 11:34:46 -080081 target_compatible_with = ["@platforms//os:linux"],
Austin Schuh378483c2019-01-20 16:36:40 -080082 visibility = ["//visibility:public"],
83 deps = [
84 ":drivetrain_base",
James Kuszmaul09f564a2019-02-18 17:37:09 -080085 ":event_loop_localizer",
Austin Schuh378483c2019-01-20 16:36:40 -080086 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -070087 "//aos/events:shm_event_loop",
Austin Schuh378483c2019-01-20 16:36:40 -080088 "//frc971/control_loops/drivetrain:drivetrain_lib",
89 ],
90)
James Kuszmaul57c7c9b2019-01-27 16:16:01 -080091
Alex Perrycb7da4b2019-08-28 19:35:56 -070092flatbuffer_cc_library(
93 name = "target_selector_fbs",
94 srcs = ["target_selector.fbs"],
95 gen_reflections = 1,
Philipp Schraderdada1072020-11-24 11:34:46 -080096 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul7d1ef442019-03-23 20:20:50 -070097 visibility = ["//visibility:public"],
98)
99
Alex Perrycb7da4b2019-08-28 19:35:56 -0700100flatbuffer_cc_library(
101 name = "camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800102 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700103 "camera.fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800104 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700105 gen_reflections = 1,
Philipp Schraderdada1072020-11-24 11:34:46 -0800106 target_compatible_with = ["@platforms//os:linux"],
Brian Silvermanc41fb862019-03-02 21:14:46 -0800107 visibility = ["//visibility:public"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800108)
109
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800110cc_library(
James Kuszmaul1057ce82019-02-09 17:58:24 -0800111 name = "localizer",
112 hdrs = ["localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800113 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800114 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800115 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800116 "//frc971/control_loops/drivetrain:camera",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800117 "//frc971/control_loops/drivetrain:hybrid_ekf",
118 ],
119)
120
James Kuszmaul09f564a2019-02-18 17:37:09 -0800121cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800122 name = "target_selector",
123 srcs = ["target_selector.cc"],
124 hdrs = ["target_selector.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800125 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800126 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700127 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800128 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800129 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800130 "//frc971/control_loops/drivetrain:localizer",
131 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700132 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800133 ],
134)
135
136cc_test(
137 name = "target_selector_test",
138 srcs = ["target_selector_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700139 data = ["//y2019:config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800140 target_compatible_with = ["@platforms//os:linux"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800141 deps = [
142 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700143 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800144 "//aos/testing:googletest",
145 ],
146)
147
148cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800149 name = "event_loop_localizer",
150 srcs = ["event_loop_localizer.cc"],
151 hdrs = ["event_loop_localizer.h"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800152 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800153 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700154 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800155 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800156 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800157 "//frc971/control_loops/drivetrain:localizer",
158 "//y2019:constants",
159 ],
160)
161
James Kuszmaul1057ce82019-02-09 17:58:24 -0800162cc_test(
163 name = "localizer_test",
164 srcs = ["localizer_test.cc"],
165 defines =
166 cpu_select({
167 "amd64": [
168 "SUPPORT_PLOT=1",
169 ],
170 "arm": [],
171 }),
172 linkstatic = True,
James Kuszmaul74d8f972020-02-11 17:13:17 -0800173 shard_count = 8,
Philipp Schraderdada1072020-11-24 11:34:46 -0800174 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul1057ce82019-02-09 17:58:24 -0800175 deps = [
176 ":localizer",
177 ":drivetrain_base",
178 "//aos/testing:googletest",
179 "//aos/testing:random_seed",
180 "//aos/testing:test_shm",
181 "//frc971/control_loops/drivetrain:trajectory",
182 "//y2019:constants",
183 "//frc971/control_loops/drivetrain:splinedrivetrain",
184 "@com_github_gflags_gflags//:gflags",
185 ] + cpu_select({
186 "amd64": [
187 "//third_party/matplotlib-cpp",
188 ],
189 "arm": [],
190 }),
191)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800192
James Kuszmaul74d8f972020-02-11 17:13:17 -0800193aos_config(
194 name = "simulation_config",
195 src = "drivetrain_simulation_config.json",
Philipp Schraderdada1072020-11-24 11:34:46 -0800196 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800197 visibility = ["//visibility:public"],
198 deps = [
199 "//frc971/control_loops/drivetrain:simulation_channels",
200 "//y2019:config",
201 ],
202)
203
James Kuszmaul09f564a2019-02-18 17:37:09 -0800204cc_test(
205 name = "localized_drivetrain_test",
206 srcs = ["localized_drivetrain_test.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700207 data = [":simulation_config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800208 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800209 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700210 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800211 ":drivetrain_base",
212 ":event_loop_localizer",
213 ":localizer",
214 "//aos/controls:control_loop_test",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700215 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800216 "//aos/network:team_number",
217 "//frc971/control_loops:team_number_test_environment",
218 "//frc971/control_loops/drivetrain:drivetrain_lib",
219 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
220 ],
221)
James Kuszmaul314f1672020-01-03 20:02:08 -0800222
223cc_binary(
224 name = "drivetrain_replay",
225 srcs = ["drivetrain_replay.cc"],
Austin Schuh14d7d3d2020-09-10 18:14:36 -0700226 data = ["//y2019:config"],
Philipp Schraderdada1072020-11-24 11:34:46 -0800227 target_compatible_with = ["@platforms//os:linux"],
James Kuszmaul314f1672020-01-03 20:02:08 -0800228 deps = [
229 ":drivetrain_base",
230 ":event_loop_localizer",
231 "//aos:configuration",
232 "//aos:init",
233 "//aos/events:shm_event_loop",
234 "//aos/events:simulated_event_loop",
235 "//aos/events/logging:logger",
236 "//frc971/control_loops/drivetrain:drivetrain_lib",
237 "@com_github_gflags_gflags//:gflags",
238 "@com_github_google_glog//:glog",
239 ],
240)