blob: e9f93ca6bfa68fffdc4848ea3c5f5e10144a830f [file] [log] [blame]
Niko Sohmers3860f8a2024-01-12 21:05:19 -08001load("//aos:config.bzl", "aos_config")
James Kuszmaul2549e752024-01-20 17:42:51 -08002load("//tools/build_rules:template.bzl", "jinja2_template")
James Kuszmaul62c3bd82024-01-17 20:03:05 -08003load("//frc971/control_loops/drivetrain:drivetrain_config.bzl", "drivetrain_config")
Niko Sohmers3860f8a2024-01-12 21:05:19 -08004
5genrule(
6 name = "genrule_drivetrain",
7 outs = [
8 "drivetrain_dog_motor_plant.h",
9 "drivetrain_dog_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080010 "drivetrain_dog_motor_plant.json",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080011 "kalman_drivetrain_motor_plant.h",
12 "kalman_drivetrain_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080013 "kalman_drivetrain_motor_plant.json",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080014 ],
15 cmd = "$(location //y2024/control_loops/python:drivetrain) $(OUTS)",
16 target_compatible_with = ["@platforms//os:linux"],
17 tools = [
18 "//y2024/control_loops/python:drivetrain",
19 ],
20)
21
22genrule(
23 name = "genrule_polydrivetrain",
24 outs = [
25 "polydrivetrain_dog_motor_plant.h",
26 "polydrivetrain_dog_motor_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080027 "polydrivetrain_dog_motor_plant.json",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080028 "polydrivetrain_cim_plant.h",
29 "polydrivetrain_cim_plant.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080030 "polydrivetrain_cim_plant.json",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080031 "hybrid_velocity_drivetrain.h",
32 "hybrid_velocity_drivetrain.cc",
James Kuszmauleeb98e92024-01-14 22:15:32 -080033 "hybrid_velocity_drivetrain.json",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080034 ],
35 cmd = "$(location //y2024/control_loops/python:polydrivetrain) $(OUTS)",
36 target_compatible_with = ["@platforms//os:linux"],
37 tools = [
38 "//y2024/control_loops/python:polydrivetrain",
39 ],
40)
41
42cc_library(
43 name = "polydrivetrain_plants",
44 srcs = [
45 "drivetrain_dog_motor_plant.cc",
46 "hybrid_velocity_drivetrain.cc",
47 "kalman_drivetrain_motor_plant.cc",
48 "polydrivetrain_dog_motor_plant.cc",
49 ],
50 hdrs = [
51 "drivetrain_dog_motor_plant.h",
52 "hybrid_velocity_drivetrain.h",
53 "kalman_drivetrain_motor_plant.h",
54 "polydrivetrain_dog_motor_plant.h",
55 ],
56 target_compatible_with = ["@platforms//os:linux"],
57 visibility = ["//visibility:public"],
58 deps = [
59 "//frc971/control_loops:hybrid_state_feedback_loop",
60 "//frc971/control_loops:state_feedback_loop",
61 ],
62)
63
64cc_library(
65 name = "drivetrain_base",
66 srcs = [
67 "drivetrain_base.cc",
68 ],
69 hdrs = [
70 "drivetrain_base.h",
71 ],
72 target_compatible_with = ["@platforms//os:linux"],
73 visibility = ["//visibility:public"],
74 deps = [
75 ":polydrivetrain_plants",
76 "//frc971:shifter_hall_effect",
James Kuszmaul2549e752024-01-20 17:42:51 -080077 "//frc971/constants:constants_sender_lib",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080078 "//frc971/control_loops/drivetrain:drivetrain_config",
James Kuszmaul2549e752024-01-20 17:42:51 -080079 "//y2024/constants:constants_fbs",
Niko Sohmers3860f8a2024-01-12 21:05:19 -080080 ],
81)
82
83cc_binary(
84 name = "drivetrain",
85 srcs = [
86 "drivetrain_main.cc",
87 ],
88 target_compatible_with = ["@platforms//os:linux"],
89 visibility = ["//visibility:public"],
90 deps = [
91 ":drivetrain_base",
92 "//aos:init",
93 "//aos/events:shm_event_loop",
94 "//frc971/constants:constants_sender_lib",
95 "//frc971/control_loops/drivetrain:drivetrain_lib",
96 "//frc971/control_loops/drivetrain/localization:puppet_localizer",
97 "//y2024/constants:constants_fbs",
98 ],
99)
100
101aos_config(
102 name = "simulation_config",
103 src = "drivetrain_simulation_config.json",
104 target_compatible_with = ["@platforms//os:linux"],
105 visibility = ["//visibility:public"],
106 deps = [
107 "//frc971/control_loops/drivetrain:simulation_channels",
108 "//y2024:aos_config",
109 ],
110)
111
112cc_binary(
113 name = "trajectory_generator",
114 srcs = [
115 "trajectory_generator_main.cc",
116 ],
117 target_compatible_with = ["@platforms//os:linux"],
118 visibility = ["//visibility:public"],
119 deps = [
120 ":drivetrain_base",
121 "//aos:init",
122 "//aos/events:shm_event_loop",
James Kuszmaul2549e752024-01-20 17:42:51 -0800123 "//frc971/constants:constants_sender_lib",
Niko Sohmers3860f8a2024-01-12 21:05:19 -0800124 "//frc971/control_loops/drivetrain:trajectory_generator",
James Kuszmaul2549e752024-01-20 17:42:51 -0800125 "//y2024/constants:constants_fbs",
Niko Sohmers3860f8a2024-01-12 21:05:19 -0800126 ],
127)
James Kuszmaul62c3bd82024-01-17 20:03:05 -0800128
129drivetrain_config(
James Kuszmaul2549e752024-01-20 17:42:51 -0800130 name = "drivetrain_loop_config",
131 out = "drivetrain_loop_config.json",
132)
133
134jinja2_template(
135 name = "drivetrain_config.json",
136 src = "drivetrain_config.jinja2.json",
137 includes = [
138 ":drivetrain_loop_config.json",
139 ],
140 parameters = {},
141 visibility = ["//visibility:public"],
James Kuszmaul62c3bd82024-01-17 20:03:05 -0800142)