blob: ea2110ee2f203c6103d2558ac69bea0db38855c0 [file] [log] [blame]
James Kuszmaulf01da392023-12-14 11:22:14 -08001load("//aos/flatbuffers:generate.bzl", "static_flatbuffer")
Maxwell Hendersonad312342023-01-10 12:07:47 -08002load("//aos:config.bzl", "aos_config")
3
4genrule(
5 name = "genrule_drivetrain",
6 outs = [
7 "drivetrain_dog_motor_plant.h",
8 "drivetrain_dog_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -08009 "drivetrain_dog_motor_plant.json",
Maxwell Hendersonad312342023-01-10 12:07:47 -080010 "kalman_drivetrain_motor_plant.h",
11 "kalman_drivetrain_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080012 "kalman_drivetrain_motor_plant.json",
Maxwell Hendersonad312342023-01-10 12:07:47 -080013 ],
14 cmd = "$(location //y2023/control_loops/python:drivetrain) $(OUTS)",
15 target_compatible_with = ["@platforms//os:linux"],
16 tools = [
17 "//y2023/control_loops/python:drivetrain",
18 ],
19)
20
21genrule(
22 name = "genrule_polydrivetrain",
23 outs = [
24 "polydrivetrain_dog_motor_plant.h",
25 "polydrivetrain_dog_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080026 "polydrivetrain_dog_motor_plant.json",
Maxwell Hendersonad312342023-01-10 12:07:47 -080027 "polydrivetrain_cim_plant.h",
28 "polydrivetrain_cim_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080029 "polydrivetrain_cim_plant.json",
Maxwell Hendersonad312342023-01-10 12:07:47 -080030 "hybrid_velocity_drivetrain.h",
31 "hybrid_velocity_drivetrain.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080032 "hybrid_velocity_drivetrain.json",
Maxwell Hendersonad312342023-01-10 12:07:47 -080033 ],
34 cmd = "$(location //y2023/control_loops/python:polydrivetrain) $(OUTS)",
35 target_compatible_with = ["@platforms//os:linux"],
36 tools = [
37 "//y2023/control_loops/python:polydrivetrain",
38 ],
39)
40
41cc_library(
42 name = "polydrivetrain_plants",
43 srcs = [
44 "drivetrain_dog_motor_plant.cc",
45 "hybrid_velocity_drivetrain.cc",
46 "kalman_drivetrain_motor_plant.cc",
47 "polydrivetrain_dog_motor_plant.cc",
48 ],
49 hdrs = [
50 "drivetrain_dog_motor_plant.h",
51 "hybrid_velocity_drivetrain.h",
52 "kalman_drivetrain_motor_plant.h",
53 "polydrivetrain_dog_motor_plant.h",
54 ],
55 target_compatible_with = ["@platforms//os:linux"],
56 visibility = ["//visibility:public"],
57 deps = [
58 "//frc971/control_loops:hybrid_state_feedback_loop",
59 "//frc971/control_loops:state_feedback_loop",
60 ],
61)
62
63cc_library(
64 name = "drivetrain_base",
65 srcs = [
66 "drivetrain_base.cc",
67 ],
68 hdrs = [
69 "drivetrain_base.h",
70 ],
71 target_compatible_with = ["@platforms//os:linux"],
72 visibility = ["//visibility:public"],
73 deps = [
74 ":polydrivetrain_plants",
75 "//frc971:shifter_hall_effect",
76 "//frc971/control_loops/drivetrain:drivetrain_config",
77 ],
78)
79
80cc_binary(
81 name = "drivetrain",
82 srcs = [
83 "drivetrain_main.cc",
84 ],
85 target_compatible_with = ["@platforms//os:linux"],
86 visibility = ["//visibility:public"],
87 deps = [
88 ":drivetrain_base",
James Kuszmaulc29f4572023-02-25 17:02:33 -080089 ":target_selector",
Maxwell Hendersonad312342023-01-10 12:07:47 -080090 "//aos:init",
91 "//aos/events:shm_event_loop",
92 "//frc971/control_loops/drivetrain:drivetrain_lib",
James Kuszmaul04a343c2023-02-20 16:38:22 -080093 "//frc971/control_loops/drivetrain/localization:puppet_localizer",
Maxwell Hendersonad312342023-01-10 12:07:47 -080094 ],
95)
96
97aos_config(
98 name = "simulation_config",
99 src = "drivetrain_simulation_config.json",
100 target_compatible_with = ["@platforms//os:linux"],
101 visibility = ["//visibility:public"],
102 deps = [
103 "//frc971/control_loops/drivetrain:simulation_channels",
104 "//y2023:aos_config",
105 ],
106)
107
108cc_binary(
109 name = "trajectory_generator",
110 srcs = [
111 "trajectory_generator_main.cc",
112 ],
113 target_compatible_with = ["@platforms//os:linux"],
114 visibility = ["//visibility:public"],
115 deps = [
116 ":drivetrain_base",
117 "//aos:init",
118 "//aos/events:shm_event_loop",
119 "//frc971/control_loops/drivetrain:trajectory_generator",
120 ],
121)
Ravago Jones2060ee62023-02-03 18:12:24 -0800122
James Kuszmaulf01da392023-12-14 11:22:14 -0800123static_flatbuffer(
James Kuszmaul202e4382023-03-05 14:56:55 -0800124 name = "target_selector_status_fbs",
125 srcs = [
126 ":target_selector_status.fbs",
127 ],
James Kuszmaul202e4382023-03-05 14:56:55 -0800128 visibility = ["//visibility:public"],
129)
130
James Kuszmaulf01da392023-12-14 11:22:14 -0800131static_flatbuffer(
James Kuszmauldb730d72023-02-25 16:01:27 -0800132 name = "target_selector_hint_fbs",
133 srcs = [
134 ":target_selector_hint.fbs",
135 ],
James Kuszmauldb730d72023-02-25 16:01:27 -0800136 visibility = ["//visibility:public"],
James Kuszmaul055fe762023-03-03 21:14:01 -0800137 deps = [
138 "//frc971/control_loops/drivetrain:drivetrain_status_fbs",
139 ],
James Kuszmauldb730d72023-02-25 16:01:27 -0800140)
James Kuszmaulc29f4572023-02-25 17:02:33 -0800141
142cc_library(
143 name = "target_selector",
144 srcs = ["target_selector.cc"],
145 hdrs = ["target_selector.h"],
146 deps = [
147 ":target_selector_hint_fbs",
James Kuszmaul202e4382023-03-05 14:56:55 -0800148 ":target_selector_status_fbs",
James Kuszmaulc29f4572023-02-25 17:02:33 -0800149 "//aos/containers:sized_array",
150 "//aos/events:event_loop",
151 "//frc971/constants:constants_sender_lib",
152 "//frc971/control_loops:pose",
153 "//frc971/control_loops/drivetrain:localizer",
154 "//frc971/input:joystick_state_fbs",
James Kuszmaul202e4382023-03-05 14:56:55 -0800155 "//frc971/shooter_interpolation:interpolation",
James Kuszmaulc29f4572023-02-25 17:02:33 -0800156 "//y2023/constants:constants_fbs",
James Kuszmaul202e4382023-03-05 14:56:55 -0800157 "//y2023/control_loops/superstructure:superstructure_position_fbs",
James Kuszmaul68de1612023-03-05 18:06:22 -0800158 "//y2023/control_loops/superstructure:superstructure_status_fbs",
Maxwell Hendersonbf1bcec2023-03-05 18:00:20 -0800159 "//y2023/vision:game_pieces_fbs",
James Kuszmaulc29f4572023-02-25 17:02:33 -0800160 ],
161)
162
163cc_test(
164 name = "target_selector_test",
165 srcs = ["target_selector_test.cc"],
166 data = ["//y2023:aos_config"],
167 deps = [
168 ":target_selector",
169 "//aos/events:simulated_event_loop",
170 "//aos/testing:googletest",
171 "//frc971/input:joystick_state_fbs",
172 "//y2023/constants:simulated_constants_sender",
173 ],
174)