blob: aabd3e57c22495792ae862894e48d67975a2c37a [file] [log] [blame]
Alex Perrycb7da4b2019-08-28 19:35:56 -07001load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library")
2load("//tools/build_rules:select.bzl", "compiler_select", "cpu_select")
Austin Schuh378483c2019-01-20 16:36:40 -08003
4genrule(
5 name = "genrule_drivetrain",
6 outs = [
7 "drivetrain_dog_motor_plant.h",
8 "drivetrain_dog_motor_plant.cc",
9 "kalman_drivetrain_motor_plant.h",
10 "kalman_drivetrain_motor_plant.cc",
11 ],
12 cmd = "$(location //y2019/control_loops/python:drivetrain) $(OUTS)",
13 tools = [
14 "//y2019/control_loops/python:drivetrain",
15 ],
16)
17
18genrule(
19 name = "genrule_polydrivetrain",
20 outs = [
21 "polydrivetrain_dog_motor_plant.h",
22 "polydrivetrain_dog_motor_plant.cc",
23 "polydrivetrain_cim_plant.h",
24 "polydrivetrain_cim_plant.cc",
25 "hybrid_velocity_drivetrain.h",
26 "hybrid_velocity_drivetrain.cc",
27 ],
28 cmd = "$(location //y2019/control_loops/python:polydrivetrain) $(OUTS)",
29 tools = [
30 "//y2019/control_loops/python:polydrivetrain",
31 ],
32)
33
34cc_library(
35 name = "polydrivetrain_plants",
36 srcs = [
37 "drivetrain_dog_motor_plant.cc",
38 "hybrid_velocity_drivetrain.cc",
39 "kalman_drivetrain_motor_plant.cc",
40 "polydrivetrain_dog_motor_plant.cc",
41 ],
42 hdrs = [
43 "drivetrain_dog_motor_plant.h",
44 "hybrid_velocity_drivetrain.h",
45 "kalman_drivetrain_motor_plant.h",
46 "polydrivetrain_dog_motor_plant.h",
47 ],
48 visibility = ["//visibility:public"],
49 deps = [
50 "//frc971/control_loops:hybrid_state_feedback_loop",
51 "//frc971/control_loops:state_feedback_loop",
52 ],
53)
54
55cc_library(
56 name = "drivetrain_base",
57 srcs = [
58 "drivetrain_base.cc",
59 ],
60 hdrs = [
61 "drivetrain_base.h",
62 ],
63 visibility = ["//visibility:public"],
64 deps = [
65 ":polydrivetrain_plants",
66 "//frc971:shifter_hall_effect",
67 "//frc971/control_loops/drivetrain:drivetrain_config",
68 ],
69)
70
71cc_binary(
72 name = "drivetrain",
73 srcs = [
74 "drivetrain_main.cc",
75 ],
76 visibility = ["//visibility:public"],
77 deps = [
78 ":drivetrain_base",
James Kuszmaul09f564a2019-02-18 17:37:09 -080079 ":event_loop_localizer",
Austin Schuh378483c2019-01-20 16:36:40 -080080 "//aos:init",
Alex Perrycb7da4b2019-08-28 19:35:56 -070081 "//aos/events:shm_event_loop",
Austin Schuh378483c2019-01-20 16:36:40 -080082 "//frc971/control_loops/drivetrain:drivetrain_lib",
83 ],
84)
James Kuszmaul57c7c9b2019-01-27 16:16:01 -080085
Alex Perrycb7da4b2019-08-28 19:35:56 -070086flatbuffer_cc_library(
87 name = "target_selector_fbs",
88 srcs = ["target_selector.fbs"],
89 gen_reflections = 1,
James Kuszmaul7d1ef442019-03-23 20:20:50 -070090 visibility = ["//visibility:public"],
91)
92
Alex Perrycb7da4b2019-08-28 19:35:56 -070093flatbuffer_cc_library(
94 name = "camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -080095 srcs = [
Alex Perrycb7da4b2019-08-28 19:35:56 -070096 "camera.fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -080097 ],
Alex Perrycb7da4b2019-08-28 19:35:56 -070098 gen_reflections = 1,
Brian Silvermanc41fb862019-03-02 21:14:46 -080099 visibility = ["//visibility:public"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800100)
101
James Kuszmaul57c7c9b2019-01-27 16:16:01 -0800102cc_library(
James Kuszmaul1057ce82019-02-09 17:58:24 -0800103 name = "localizer",
104 hdrs = ["localizer.h"],
105 deps = [
James Kuszmaul1057ce82019-02-09 17:58:24 -0800106 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800107 "//frc971/control_loops/drivetrain:camera",
James Kuszmaul1057ce82019-02-09 17:58:24 -0800108 "//frc971/control_loops/drivetrain:hybrid_ekf",
109 ],
110)
111
James Kuszmaul09f564a2019-02-18 17:37:09 -0800112cc_library(
James Kuszmauld73d0252019-03-02 14:57:09 -0800113 name = "target_selector",
114 srcs = ["target_selector.cc"],
115 hdrs = ["target_selector.h"],
116 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700117 ":target_selector_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800118 "//frc971/control_loops:pose",
James Kuszmaulf4ede202020-02-14 08:47:40 -0800119 "//frc971/control_loops/drivetrain:camera",
James Kuszmauld73d0252019-03-02 14:57:09 -0800120 "//frc971/control_loops/drivetrain:localizer",
121 "//y2019:constants",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700122 "//y2019/control_loops/superstructure:superstructure_goal_fbs",
James Kuszmauld73d0252019-03-02 14:57:09 -0800123 ],
124)
125
126cc_test(
127 name = "target_selector_test",
128 srcs = ["target_selector_test.cc"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700129 data = ["//y2019:config.json"],
James Kuszmauld73d0252019-03-02 14:57:09 -0800130 deps = [
131 ":target_selector",
Austin Schuh9fe68f72019-08-10 19:32:03 -0700132 "//aos/events:simulated_event_loop",
James Kuszmauld73d0252019-03-02 14:57:09 -0800133 "//aos/testing:googletest",
James Kuszmaul7d1ef442019-03-23 20:20:50 -0700134 "//aos/testing:test_shm",
James Kuszmauld73d0252019-03-02 14:57:09 -0800135 ],
136)
137
138cc_library(
James Kuszmaul09f564a2019-02-18 17:37:09 -0800139 name = "event_loop_localizer",
140 srcs = ["event_loop_localizer.cc"],
141 hdrs = ["event_loop_localizer.h"],
142 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700143 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800144 ":localizer",
James Kuszmauld73d0252019-03-02 14:57:09 -0800145 ":target_selector",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800146 "//frc971/control_loops/drivetrain:localizer",
147 "//y2019:constants",
148 ],
149)
150
James Kuszmaul1057ce82019-02-09 17:58:24 -0800151cc_test(
152 name = "localizer_test",
153 srcs = ["localizer_test.cc"],
154 defines =
155 cpu_select({
156 "amd64": [
157 "SUPPORT_PLOT=1",
158 ],
159 "arm": [],
160 }),
161 linkstatic = True,
Austin Schuh9fe68f72019-08-10 19:32:03 -0700162 shard_count = 5,
James Kuszmaul1057ce82019-02-09 17:58:24 -0800163 deps = [
164 ":localizer",
165 ":drivetrain_base",
166 "//aos/testing:googletest",
167 "//aos/testing:random_seed",
168 "//aos/testing:test_shm",
169 "//frc971/control_loops/drivetrain:trajectory",
170 "//y2019:constants",
171 "//frc971/control_loops/drivetrain:splinedrivetrain",
172 "@com_github_gflags_gflags//:gflags",
173 ] + cpu_select({
174 "amd64": [
175 "//third_party/matplotlib-cpp",
176 ],
177 "arm": [],
178 }),
179)
James Kuszmaul09f564a2019-02-18 17:37:09 -0800180
181cc_test(
182 name = "localized_drivetrain_test",
183 srcs = ["localized_drivetrain_test.cc"],
Alex Perrycb7da4b2019-08-28 19:35:56 -0700184 data = ["//y2019:config.json"],
James Kuszmaul09f564a2019-02-18 17:37:09 -0800185 deps = [
Alex Perrycb7da4b2019-08-28 19:35:56 -0700186 ":camera_fbs",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800187 ":drivetrain_base",
188 ":event_loop_localizer",
189 ":localizer",
190 "//aos/controls:control_loop_test",
Alex Perrycb7da4b2019-08-28 19:35:56 -0700191 "//aos/events:shm_event_loop",
James Kuszmaul09f564a2019-02-18 17:37:09 -0800192 "//aos/network:team_number",
193 "//frc971/control_loops:team_number_test_environment",
194 "//frc971/control_loops/drivetrain:drivetrain_lib",
195 "//frc971/control_loops/drivetrain:drivetrain_test_lib",
196 ],
197)
James Kuszmaul314f1672020-01-03 20:02:08 -0800198
199cc_binary(
200 name = "drivetrain_replay",
201 srcs = ["drivetrain_replay.cc"],
202 data = ["//y2019:config.json"],
203 deps = [
204 ":drivetrain_base",
205 ":event_loop_localizer",
206 "//aos:configuration",
207 "//aos:init",
208 "//aos/events:shm_event_loop",
209 "//aos/events:simulated_event_loop",
210 "//aos/events/logging:logger",
211 "//frc971/control_loops/drivetrain:drivetrain_lib",
212 "@com_github_gflags_gflags//:gflags",
213 "@com_github_google_glog//:glog",
214 ],
215)