blob: 4cc350235c81d39ec036e8ff3fbf1821c7b18ac4 [file] [log] [blame]
Jim Ostrowskicb8b4082024-01-21 02:23:46 -08001include "frc971/vision/calibration.fbs";
Niko Sohmers3860f8a2024-01-12 21:05:19 -08002include "frc971/vision/target_map.fbs";
Niko Sohmersb21dbdc2024-01-20 20:06:59 -08003include "frc971/control_loops/profiled_subsystem.fbs";
4include "frc971/zeroing/constants.fbs";
Niko Sohmersc4d2c502024-02-19 19:35:35 -08005include "frc971/math/matrix.fbs";
James Kuszmaul2549e752024-01-20 17:42:51 -08006include "frc971/control_loops/drivetrain/drivetrain_config.fbs";
Niko Sohmers3860f8a2024-01-12 21:05:19 -08007
8namespace y2024;
9
Jim Ostrowskicb8b4082024-01-21 02:23:46 -080010table CameraConfiguration {
11 calibration:frc971.vision.calibration.CameraCalibration (id: 0);
12}
13
Maxwell Henderson93f37f22024-01-19 17:08:23 -080014table ShotParams {
15 shot_velocity: double (id: 0);
Maxwell Hendersoned970292024-02-02 20:08:08 -080016
17 // Angle of the altitude
18 shot_altitude_angle: double (id: 1);
19
20 // Angle of the catapult
21 shot_catapult_angle: double (id: 2);
22
23 // Speed over ground to use for shooting on the fly
24 shot_speed_over_ground: double (id: 3);
Maxwell Henderson93f37f22024-01-19 17:08:23 -080025}
26
27table InterpolationTablePoint {
28 distance_from_goal: double (id: 0);
29 shot_params: ShotParams (id: 1);
30}
Niko Sohmers3860f8a2024-01-12 21:05:19 -080031
Niko Sohmersb21dbdc2024-01-20 20:06:59 -080032// Amount of voltage to give to the intake rollers when:
James Kuszmaul2549e752024-01-20 17:42:51 -080033// spitting, which represents voltage when IntakeRollerGoal is SPITTING
Niko Sohmersb21dbdc2024-01-20 20:06:59 -080034// and intaking, which represents voltage when IntakeRollerGoal is INTAKING
35table IntakeRollerVoltages {
36 spitting:double (id: 0);
37 intaking:double (id: 1);
38}
Niko Sohmers3860f8a2024-01-12 21:05:19 -080039
Niko Sohmersb21dbdc2024-01-20 20:06:59 -080040// Set points for the pivot in radians when:
41// extended, which represents radians for when IntakePivotGoal is EXTENDED
42// and retracted, which represents radians for when IntakePivotGoal is RETRACTED or NONE
43table IntakePivotSetPoints {
44 extended:double (id: 0);
45 retracted:double (id: 1);
46}
47
Filip Kujawa37aa0bc2024-01-31 20:59:49 -080048// Set points for the climber in meters when:
49// fully extended, which represents meters for when ClimberGoal is FULL_EXTEND
50// partially extended, which represents meters for when ClimberGoal is HALF_EXTEND
51// and retracted, which represents meters for when ClimberGoal is RETRACT
52table ClimberSetPoints {
53 full_extend:double (id: 0);
Maxwell Henderson7db29782024-02-24 20:10:26 -080054 stowed:double (id: 1);
Filip Kujawa37aa0bc2024-01-31 20:59:49 -080055 retract:double (id: 2);
56}
57
58table PotAndAbsEncoderConstants {
59 zeroing_constants:frc971.zeroing.PotAndAbsoluteEncoderZeroingConstants (id: 0);
Niko Sohmersb21dbdc2024-01-20 20:06:59 -080060 potentiometer_offset:double (id: 1);
61}
62
Niko Sohmers1259b2a2024-01-29 18:00:37 -080063// Stores current limits for motors
64table CurrentLimits {
65 intake_pivot_supply_current_limit:double (id: 0);
66 intake_pivot_stator_current_limit:double (id: 1);
67 intake_roller_supply_current_limit:double (id: 2);
68 intake_roller_stator_current_limit:double (id: 3);
Niko Sohmersed7ffc42024-02-03 16:05:19 -080069 transfer_roller_supply_current_limit:double (id: 4);
70 transfer_roller_stator_current_limit:double (id: 5);
Maxwell Hendersonfb3bfea2024-02-03 19:24:46 -080071 drivetrain_supply_current_limit:double (id: 6);
72 drivetrain_stator_current_limit:double (id: 7);
Filip Kujawa749f2442024-02-04 01:12:35 -080073 climber_supply_current_limit:double (id: 8);
74 climber_stator_current_limit:double (id: 9);
Filip Kujawad75252a2024-02-10 16:54:35 -080075 extend_supply_current_limit:double (id: 10);
76 extend_stator_current_limit:double (id: 11);
77 extend_roller_supply_current_limit:double (id: 12);
78 extend_roller_stator_current_limit:double (id: 13);
Niko Sohmers27d92c62024-02-19 14:15:07 -080079 turret_supply_current_limit:double (id: 14);
80 turret_stator_current_limit:double (id: 15);
81 altitude_supply_current_limit:double (id: 16);
82 altitude_stator_current_limit:double (id: 17);
Maxwell Henderson862fc2c2024-02-23 16:04:37 -080083 retention_roller_supply_current_limit:double (id: 18);
84 retention_roller_stator_current_limit:double (id: 19);
Maxwell Hendersond5bf47a2024-02-23 17:16:48 -080085 slower_retention_roller_stator_current_limit:double (id: 20);
Maxwell Henderson6b1be312024-02-28 20:15:06 -080086 shooting_retention_roller_stator_current_limit:double (id: 23);
Maxwell Henderson3d68e142024-02-25 09:58:11 -080087 catapult_supply_current_limit:double (id: 21);
88 catapult_stator_current_limit:double (id: 22);
Niko Sohmers1259b2a2024-01-29 18:00:37 -080089}
90
Nathan Leongb7a81bf2024-02-03 16:04:17 -080091table TransferRollerVoltages {
James Kuszmaul6cae7d72024-03-01 21:29:56 -080092 // Voltage to apply while intaking the game piece.
Nathan Leongb7a81bf2024-02-03 16:04:17 -080093 transfer_in:double (id: 0);
James Kuszmaul6cae7d72024-03-01 21:29:56 -080094 // Voltage to apply while spitting the game piece.
Nathan Leongb7a81bf2024-02-03 16:04:17 -080095 transfer_out:double (id: 1);
James Kuszmaul6cae7d72024-03-01 21:29:56 -080096 // Voltage to apply while the extend is moving and dragging the
97 // game piece out of the rollers.
98 extend_moving:double (id: 2);
Nathan Leongb7a81bf2024-02-03 16:04:17 -080099}
100
Filip Kujawa102a9b22024-02-18 09:40:23 -0800101table ExtendRollerVoltages {
102 scoring:double (id: 0);
103 reversing:double (id: 1);
104}
105
Austin Schuh3db875a2024-02-18 20:02:40 -0800106// Extend positions
107table ExtendSetPoints {
Filip Kujawa7a799602024-02-23 12:27:47 -0800108 // The position which lets us score on the trap.
109 trap:double (id: 0);
110 // The position which lets us score on the amp.
111 amp:double (id: 1);
112 // The position which lets us transfer into the catapult.
113 catapult:double (id: 2);
114 // The position near 0 where we are ready to intake a note.
115 retracted:double (id: 3);
Austin Schuh3db875a2024-02-18 20:02:40 -0800116}
117
James Kuszmaulcafeb342024-03-15 22:00:18 -0700118enum AutonomousMode : ubyte {
119 NONE = 0,
120 // Simple test S-spline auto mode
121 SPLINE_AUTO = 1,
122 // Simple drive-and-shoot to pick up at most one game piece.
123 MOBILITY_AND_SHOOT = 2,
124 // Auto to pick up four game pieces.
James Kuszmaul58f51432024-03-24 15:00:06 -0700125 FIVE_PIECE = 3,
Maxwell Hendersona2dadd02024-03-24 13:57:09 -0700126 // Auto which picks up two game pieces from the center
127 TWO_PIECE_STEAL = 4,
James Kuszmaulcafeb342024-03-15 22:00:18 -0700128}
129
Niko Sohmersb21dbdc2024-01-20 20:06:59 -0800130table RobotConstants {
Niko Sohmers74b0ad52024-02-03 18:00:31 -0800131 intake_constants:frc971.zeroing.AbsoluteEncoderZeroingConstants (id: 0);
Niko Sohmers4d93d4c2024-03-24 14:48:26 -0700132 // Deprecated since climber no longer has an encoder
133 climber_constants:PotAndAbsEncoderConstants (id: 1, deprecated);
134 climber_potentiometer_offset:double (id: 8);
Niko Sohmers3bfe3d62024-02-18 16:09:49 -0800135 catapult_constants:PotAndAbsEncoderConstants (id: 2);
136 altitude_constants:PotAndAbsEncoderConstants (id: 3);
137 turret_constants:PotAndAbsEncoderConstants (id: 4);
Austin Schuh3db875a2024-02-18 20:02:40 -0800138 extend_constants:PotAndAbsEncoderConstants (id: 5);
Niko Sohmers58461f52024-03-20 20:12:10 -0700139 disable_extend:bool (id: 6);
140 disable_climber:bool (id: 7);
Niko Sohmersb21dbdc2024-01-20 20:06:59 -0800141}
142
Filip Kujawa45d72cd2024-02-24 18:29:15 -0800143table ShooterSetPoint {
144 turret_position: double (id: 0);
145 altitude_position: double (id: 1);
146 shot_velocity:double (id: 2);
147}
148
Niko Sohmersc4d2c502024-02-19 19:35:35 -0800149table Pose {
150 // Pos is a 3x1 matrix which contains the (x, y, z) component of the Pose.
151 pos: frc971.fbs.Matrix (id: 0);
152 theta: double (id: 1);
153}
154
155table ShooterTargets {
156 // The Pose of the red and blue alliance speakers we are aiming at.
157 red_alliance: Pose (id: 0);
158 blue_alliance: Pose (id: 1);
159}
160
161table RetentionRollerVoltages {
162 retaining:double (id: 0);
163 spitting:double (id: 1);
164}
165
James Kuszmaulcafeb342024-03-15 22:00:18 -0700166// Set of april tag targets, by april tag ID, to ignore when on a
167// given alliance.
168table IgnoreTargets {
169 red:[uint64] (id: 0);
170 blue:[uint64] (id: 1);
171}
172
Niko Sohmersb21dbdc2024-01-20 20:06:59 -0800173// Common table for constants unrelated to the robot
174table Common {
175 target_map:frc971.vision.TargetMap (id: 0);
176 shooter_interpolation_table: [InterpolationTablePoint] (id: 1);
Filip Kujawa1286c012024-03-31 22:53:27 -0700177 shooter_shuttle_interpolation_table: [InterpolationTablePoint] (id: 30);
Niko Sohmersb21dbdc2024-01-20 20:06:59 -0800178 intake_roller_voltages:IntakeRollerVoltages (id : 2);
179 intake_pivot_set_points:IntakePivotSetPoints (id: 3);
180 intake_pivot:frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemCommonParams (id: 4);
James Kuszmaul2549e752024-01-20 17:42:51 -0800181 drivetrain:frc971.control_loops.drivetrain.fbs.DrivetrainConfig (id: 5);
Niko Sohmers1259b2a2024-01-29 18:00:37 -0800182 current_limits:CurrentLimits (id: 6);
Nathan Leongb7a81bf2024-02-03 16:04:17 -0800183 transfer_roller_voltages:TransferRollerVoltages (id: 7);
Niko Sohmers4d93d4c2024-03-24 14:48:26 -0700184 climber:frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemCommonParams (id: 8, deprecated);
185 climber_set_points:ClimberSetPoints (id: 9, deprecated);
Maxwell Hendersoned970292024-02-02 20:08:08 -0800186 turret_loading_position: double (id: 10);
187 catapult_return_position: double (id: 11);
Niko Sohmers3bfe3d62024-02-18 16:09:49 -0800188 catapult:frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemCommonParams (id: 12);
189 altitude:frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemCommonParams (id: 13);
190 turret:frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemCommonParams (id: 14);
Austin Schuh3db875a2024-02-18 20:02:40 -0800191 extend:frc971.control_loops.StaticZeroingSingleDOFProfiledSubsystemCommonParams (id: 15);
Filip Kujawa45d72cd2024-02-24 18:29:15 -0800192 extend_roller_voltages:ExtendRollerVoltages (id: 16);
193 shooter_targets:ShooterTargets (id: 17);
Filip Kujawa1286c012024-03-31 22:53:27 -0700194 shooter_shuttle_targets:ShooterTargets (id: 29);
Filip Kujawa45d72cd2024-02-24 18:29:15 -0800195 altitude_loading_position: double (id: 18);
196 retention_roller_voltages:RetentionRollerVoltages (id: 19);
197 min_altitude_shooting_angle: double (id: 20);
Maxwell Henderson3d68e142024-02-25 09:58:11 -0800198 max_altitude_shooting_angle: double (id: 25);
Filip Kujawa45d72cd2024-02-24 18:29:15 -0800199 shooter_speaker_set_point: ShooterSetPoint (id: 21);
200 shooter_podium_set_point: ShooterSetPoint (id: 22);
James Kuszmaulcafeb342024-03-15 22:00:18 -0700201 extend_set_points:ExtendSetPoints (id: 23);
Filip Kujawa7a799602024-02-23 12:27:47 -0800202 // The position to move the turret to when avoiding collision
203 // with the extend when the extend is moving to amp/trap position.
Filip Kujawa45d72cd2024-02-24 18:29:15 -0800204 turret_avoid_extend_collision_position: double (id: 24);
Niko Sohmers6adb5b92024-03-16 17:47:54 -0700205 altitude_avoid_extend_collision_position: double (id: 28);
James Kuszmaulcafeb342024-03-15 22:00:18 -0700206 autonomous_mode:AutonomousMode (id: 26);
207 ignore_targets:IgnoreTargets (id: 27);
Niko Sohmers3860f8a2024-01-12 21:05:19 -0800208}
209
210table Constants {
Niko Sohmersc4d2c502024-02-19 19:35:35 -0800211 cameras:[CameraConfiguration] (id: 0);
212 robot:RobotConstants (id: 1);
213 common:Common (id: 2);
Niko Sohmers3860f8a2024-01-12 21:05:19 -0800214}
215
James Kuszmaul2549e752024-01-20 17:42:51 -0800216root_type Constants;