blob: cd3a793c416fe286c5e0e7c0a08fce3487e9b51e [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)",
14 tools = [
15 "//y2019/control_loops/python:drivetrain",
16 ],
17)
18
19genrule(
20 name = "genrule_polydrivetrain",
21 outs = [
22 "polydrivetrain_dog_motor_plant.h",
23 "polydrivetrain_dog_motor_plant.cc",
24 "polydrivetrain_cim_plant.h",
25 "polydrivetrain_cim_plant.cc",
26 "hybrid_velocity_drivetrain.h",
27 "hybrid_velocity_drivetrain.cc",
28 ],
29 cmd = "$(location //y2019/control_loops/python:polydrivetrain) $(OUTS)",
30 tools = [
31 "//y2019/control_loops/python:polydrivetrain",
32 ],
33)
34
35cc_library(
36 name = "polydrivetrain_plants",
37 srcs = [
38 "drivetrain_dog_motor_plant.cc",
39 "hybrid_velocity_drivetrain.cc",
40 "kalman_drivetrain_motor_plant.cc",
41 "polydrivetrain_dog_motor_plant.cc",
42 ],
43 hdrs = [
44 "drivetrain_dog_motor_plant.h",
45 "hybrid_velocity_drivetrain.h",
46 "kalman_drivetrain_motor_plant.h",
47 "polydrivetrain_dog_motor_plant.h",
48 ],
49 visibility = ["//visibility:public"],
50 deps = [
51 "//frc971/control_loops:hybrid_state_feedback_loop",
52 "//frc971/control_loops:state_feedback_loop",
53 ],
54)
55
56cc_library(
57 name = "drivetrain_base",
58 srcs = [
59 "drivetrain_base.cc",
60 ],
61 hdrs = [
62 "drivetrain_base.h",
63 ],
64 visibility = ["//visibility:public"],
65 deps = [
66 ":polydrivetrain_plants",
67 "//frc971:shifter_hall_effect",
68 "//frc971/control_loops/drivetrain:drivetrain_config",
69 ],
70)
71
72cc_binary(
73 name = "drivetrain",
74 srcs = [
75 "drivetrain_main.cc",
76 ],
77 visibility = ["//visibility:public"],
78 deps = [
79 ":drivetrain_base",
James Kuszmaul09f564a2019-02-18 17:37:09 -080080 ":event_loop_localizer",
Austin Schuh378483c2019-01-20 16:36:40 -080081 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -070082 "//aos/events:shm_event_loop",
Austin Schuh378483c2019-01-20 16:36:40 -080083 "//frc971/control_loops/drivetrain:drivetrain_lib",
84 ],
85)
James Kuszmaul57c7c9b2019-01-27 16:16:01 -080086
Alex Perrycb7da4b2019-08-28 19:35:56 -070087flatbuffer_cc_library(
88 name = "target_selector_fbs",
89 srcs = ["target_selector.fbs"],
90 gen_reflections = 1,
James Kuszmaul7d1ef442019-03-23 20:20:50 -070091 visibility = ["//visibility:public"],
92)
93
Alex Perrycb7da4b2019-08-28 19:35:56 -070094flatbuffer_cc_library(
95 name = "camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -080096 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -070097 "camera.fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -080098 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -070099 gen_reflections = 1,
Brian Silvermanc41fb862019-03-02 21:14:46 -0800100 visibility = ["//visibility:public"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800101)
102
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800103cc_library(
James Kuszmaul1057ce82019-02-09 17:58:24 -0800104 name = "localizer",
105 hdrs = ["localizer.h"],
106 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800107 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800108 "//frc971/control_loops/drivetrain:camera",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800109 "//frc971/control_loops/drivetrain:hybrid_ekf",
110 ],
111)
112
James Kuszmaul09f564a2019-02-18 17:37:09 -0800113cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800114 name = "target_selector",
115 srcs = ["target_selector.cc"],
116 hdrs = ["target_selector.h"],
117 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700118 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800119 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800120 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800121 "//frc971/control_loops/drivetrain:localizer",
122 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700123 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800124 ],
125)
126
127cc_test(
128 name = "target_selector_test",
129 srcs = ["target_selector_test.cc"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700130 data = ["//y2019:config.json"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800131 deps = [
132 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700133 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800134 "//aos/testing:googletest",
James Kuszmaul7d1ef442019-03-23 20:20:50 -0700135 "//aos/testing:test_shm",
James Kuszmauld73d0252019-03-02 14:57:09 -0800136 ],
137)
138
139cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800140 name = "event_loop_localizer",
141 srcs = ["event_loop_localizer.cc"],
142 hdrs = ["event_loop_localizer.h"],
143 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700144 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800145 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800146 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800147 "//frc971/control_loops/drivetrain:localizer",
148 "//y2019:constants",
149 ],
150)
151
James Kuszmaul1057ce82019-02-09 17:58:24 -0800152cc_test(
153 name = "localizer_test",
154 srcs = ["localizer_test.cc"],
155 defines =
156 cpu_select({
157 "amd64": [
158 "SUPPORT_PLOT=1",
159 ],
160 "arm": [],
161 }),
162 linkstatic = True,
James Kuszmaul74d8f972020-02-11 17:13:17 -0800163 shard_count = 8,
James Kuszmaul1057ce82019-02-09 17:58:24 -0800164 deps = [
165 ":localizer",
166 ":drivetrain_base",
167 "//aos/testing:googletest",
168 "//aos/testing:random_seed",
169 "//aos/testing:test_shm",
170 "//frc971/control_loops/drivetrain:trajectory",
171 "//y2019:constants",
172 "//frc971/control_loops/drivetrain:splinedrivetrain",
173 "@com_github_gflags_gflags//:gflags",
174 ] + cpu_select({
175 "amd64": [
176 "//third_party/matplotlib-cpp",
177 ],
178 "arm": [],
179 }),
180)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800181
James Kuszmaul74d8f972020-02-11 17:13:17 -0800182aos_config(
183 name = "simulation_config",
184 src = "drivetrain_simulation_config.json",
185 visibility = ["//visibility:public"],
186 deps = [
187 "//frc971/control_loops/drivetrain:simulation_channels",
188 "//y2019:config",
189 ],
190)
191
James Kuszmaul09f564a2019-02-18 17:37:09 -0800192cc_test(
193 name = "localized_drivetrain_test",
194 srcs = ["localized_drivetrain_test.cc"],
James Kuszmaul74d8f972020-02-11 17:13:17 -0800195 data = [":simulation_config.json"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800196 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700197 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800198 ":drivetrain_base",
199 ":event_loop_localizer",
200 ":localizer",
201 "//aos/controls:control_loop_test",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700202 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800203 "//aos/network:team_number",
204 "//frc971/control_loops:team_number_test_environment",
205 "//frc971/control_loops/drivetrain:drivetrain_lib",
206 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
207 ],
208)
James Kuszmaul314f1672020-01-03 20:02:08 -0800209
210cc_binary(
211 name = "drivetrain_replay",
212 srcs = ["drivetrain_replay.cc"],
213 data = ["//y2019:config.json"],
214 deps = [
215 ":drivetrain_base",
216 ":event_loop_localizer",
217 "//aos:configuration",
218 "//aos:init",
219 "//aos/events:shm_event_loop",
220 "//aos/events:simulated_event_loop",
221 "//aos/events/logging:logger",
222 "//frc971/control_loops/drivetrain:drivetrain_lib",
223 "@com_github_gflags_gflags//:gflags",
224 "@com_github_google_glog//:glog",
225 ],
226)