Add a drivetrain can position flatbuffer to frc971
Signed-off-by: Maxwell Henderson <maxwell.henderson@mailbox.org>
Change-Id: I73ab47b47327af0bf189554b030d5e5626f3df13
diff --git a/frc971/control_loops/drivetrain/BUILD b/frc971/control_loops/drivetrain/BUILD
index 86c1ec0..93b4a11 100644
--- a/frc971/control_loops/drivetrain/BUILD
+++ b/frc971/control_loops/drivetrain/BUILD
@@ -8,6 +8,12 @@
package(default_visibility = ["//visibility:public"])
flatbuffer_cc_library(
+ name = "drivetrain_can_position_fbs",
+ srcs = ["drivetrain_can_position.fbs"],
+ gen_reflections = 1,
+)
+
+flatbuffer_cc_library(
name = "spline_goal_fbs",
srcs = ["spline_goal.fbs"],
gen_reflections = 1,
@@ -352,11 +358,11 @@
":drivetrain_config",
":drivetrain_states",
":gear",
+ ":spline_goal_fbs",
"//aos:math",
- "//frc971/control_loops:polytope",
"//frc971/control_loops:coerce_goal",
"//frc971/control_loops:control_loops_fbs",
- ":spline_goal_fbs",
+ "//frc971/control_loops:polytope",
"//frc971/control_loops:state_feedback_loop",
] + select({
"@platforms//os:linux": [
@@ -364,8 +370,8 @@
":drivetrain_output_fbs",
":drivetrain_position_fbs",
":drivetrain_status_fbs",
- "//frc971/input:robot_state_fbs",
"//aos/util:log_interval",
+ "//frc971/input:robot_state_fbs",
],
"@platforms//os:none": [
":drivetrain_goal_float_fbs",
@@ -469,8 +475,8 @@
"//frc971/control_loops:control_loops_fbs",
"//frc971/control_loops:state_feedback_loop",
"//frc971/queues:gyro_fbs",
- "//frc971/wpilib:imu_fbs",
"//frc971/wpilib:imu_batch_fbs",
+ "//frc971/wpilib:imu_fbs",
"//y2016:constants",
"//y2016/control_loops/drivetrain:polydrivetrain_plants",
] + cpu_select({
@@ -498,17 +504,17 @@
target_compatible_with = ["@platforms//os:linux"],
deps = [
":drivetrain_config",
- ":trajectory_generator",
- ":drivetrain_lib",
- ":localizer_fbs",
":drivetrain_goal_fbs",
- ":drivetrain_status_fbs",
- ":drivetrain_position_fbs",
+ ":drivetrain_lib",
":drivetrain_output_fbs",
+ ":drivetrain_position_fbs",
+ ":drivetrain_status_fbs",
":drivetrain_test_lib",
- "//frc971/control_loops:control_loop_test",
+ ":localizer_fbs",
+ ":trajectory_generator",
"//aos/events/logging:log_writer",
"//aos/testing:googletest",
+ "//frc971/control_loops:control_loop_test",
"//frc971/queues:gyro_fbs",
"//frc971/wpilib:imu_fbs",
] + cpu_select({
@@ -633,8 +639,8 @@
target_compatible_with = ["@platforms//os:linux"],
deps = [
":distance_spline",
- "//aos/testing:googletest",
"//aos:flatbuffers",
+ "//aos/testing:googletest",
"//aos/testing:test_shm",
"@com_github_gflags_gflags//:gflags",
] + cpu_select({
@@ -712,8 +718,8 @@
linkstatic = True,
target_compatible_with = ["@platforms//os:linux"],
deps = [
- ":trajectory",
":drivetrain_test_lib",
+ ":trajectory",
"//aos/testing:googletest",
"//aos/testing:test_shm",
"//y2016:constants",
diff --git a/frc971/control_loops/drivetrain/drivetrain_can_position.fbs b/frc971/control_loops/drivetrain/drivetrain_can_position.fbs
new file mode 100644
index 0000000..a44ef50
--- /dev/null
+++ b/frc971/control_loops/drivetrain/drivetrain_can_position.fbs
@@ -0,0 +1,42 @@
+namespace frc971.control_loops.drivetrain;
+
+table CANFalcon {
+ // The CAN id of the falcon
+ id:int (id: 0);
+
+ // In Amps
+ supply_current:float (id: 1);
+
+ // In Amps
+ // Stator current where positive current means torque is applied in
+ // the motor's forward direction as determined by its Inverted setting.
+ torque_current:float (id: 2);
+
+ // In Volts
+ supply_voltage:float (id: 3);
+
+ // In degrees Celsius
+ device_temp:float (id: 4);
+
+ // In meters traveled on the drivetrain
+ position:float (id: 5);
+
+ // Nominal range is -1 to 1, but can be -2 to +2
+ duty_cycle: float (id: 6);
+}
+
+// CAN readings from the CAN sensor reader loop
+table CANPosition {
+ falcons: [CANFalcon] (id: 0);
+
+ // The timestamp of the measurement on the canivore clock in nanoseconds
+ // This will have less jitter than the
+ // timestamp of the message being sent out.
+ timestamp:int64 (id: 1);
+
+ // The ctre::phoenix::StatusCode of the measurement
+ // Should be OK = 0
+ status:int (id: 2);
+}
+
+root_type CANPosition;