Use explicit flatbuffer IDs in y2017 and newer.
Non-explicit ids are risky. We've seen backwards incompatible
changes...
Change-Id: Id6ceebe031ac80430191f367635d0e951c3d2cbc
diff --git a/y2018/control_loops/superstructure/superstructure_goal.fbs b/y2018/control_loops/superstructure/superstructure_goal.fbs
index b618c1b..dbef25a 100644
--- a/y2018/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2018/control_loops/superstructure/superstructure_goal.fbs
@@ -3,37 +3,37 @@
namespace y2018.control_loops.superstructure;
table IntakeGoal {
- roller_voltage:double;
+ roller_voltage:double (id: 0);
// Goal angle in radians of the intake.
// Zero radians is where the intake is pointing straight out, with positive
// radians inward towards the cube.
- left_intake_angle:double;
- right_intake_angle:double;
+ left_intake_angle:double (id: 1);
+ right_intake_angle:double (id: 2);
}
table Goal {
- intake:IntakeGoal;
+ intake:IntakeGoal (id: 0);
// Used to identiy a position in the planned set of positions on the arm.
- arm_goal_position:uint;
+ arm_goal_position:uint32 (id: 1);
// If true, start the grab box sequence.
- grab_box:bool;
+ grab_box:bool (id: 2);
- open_claw:bool;
- close_claw:bool;
+ open_claw:bool (id: 3);
+ close_claw:bool (id: 4);
- deploy_fork:bool;
+ deploy_fork:bool (id: 5);
- hook_release:bool;
+ hook_release:bool (id: 6);
- voltage_winch:double;
+ voltage_winch:double (id: 7);
- open_threshold:double;
+ open_threshold:double (id: 8);
- disable_box_correct:bool;
+ disable_box_correct:bool (id: 9);
- trajectory_override:bool;
+ trajectory_override:bool (id: 10);
}
root_type Goal;
diff --git a/y2018/control_loops/superstructure/superstructure_output.fbs b/y2018/control_loops/superstructure/superstructure_output.fbs
index f4d62da..1055222 100644
--- a/y2018/control_loops/superstructure/superstructure_output.fbs
+++ b/y2018/control_loops/superstructure/superstructure_output.fbs
@@ -3,38 +3,38 @@
table IntakeVoltage {
// Voltage of the motors on the series elastic on one side (left or right) of
// the intake.
- voltage_elastic:double;
+ voltage_elastic:double (id: 0);
// Voltage of the rollers on one side (left or right) of the intake.
- voltage_rollers:double;
+ voltage_rollers:double (id: 1);
}
table Output {
// Voltage sent to the parts on the left side of the intake.
- left_intake:IntakeVoltage;
+ left_intake:IntakeVoltage (id: 0);
// Voltage sent to the parts on the right side of the intake.
- right_intake:IntakeVoltage;
+ right_intake:IntakeVoltage (id: 1);
// Voltage sent to the motors on the proximal joint of the arm.
- voltage_proximal:double;
+ voltage_proximal:double (id: 2);
// Voltage sent to the motors on the distal joint of the arm.
- voltage_distal:double;
+ voltage_distal:double (id: 3);
// Voltage sent to the hanger. Positive pulls the robot up.
- voltage_winch:double;
+ voltage_winch:double (id: 4);
// Clamped (when true) or unclamped (when false) status sent to the
// pneumatic claw on the arm.
- claw_grabbed:bool;
+ claw_grabbed:bool (id: 5);
// If true, release the arm brakes.
- release_arm_brake:bool;
+ release_arm_brake:bool (id: 6);
// If true, release the hook
- hook_release:bool;
+ hook_release:bool (id: 7);
// If true, release the forks
- forks_release:bool;
+ forks_release:bool (id: 8);
}
root_type Output;
diff --git a/y2018/control_loops/superstructure/superstructure_position.fbs b/y2018/control_loops/superstructure/superstructure_position.fbs
index 0323b78..87c4b0e 100644
--- a/y2018/control_loops/superstructure/superstructure_position.fbs
+++ b/y2018/control_loops/superstructure/superstructure_position.fbs
@@ -4,47 +4,47 @@
table IntakeElasticSensors {
// Position of the motor end of the series elastic in radians.
- motor_position:frc971.PotAndAbsolutePosition;
+ motor_position:frc971.PotAndAbsolutePosition (id: 0);
// Displacement of the spring in radians.
- spring_angle:double;
+ spring_angle:double (id: 1);
// False if the beam break sensor isn't triggered, true if the beam breaker is
// triggered.
- beam_break:bool;
+ beam_break:bool (id: 2);
}
table ArmPosition {
// Values of the encoder and potentiometer at the base of the proximal
// (connected to drivebase) arm in radians.
- proximal:frc971.PotAndAbsolutePosition;
+ proximal:frc971.PotAndAbsolutePosition (id: 0);
// Values of the encoder and potentiometer at the base of the distal
// (connected to proximal) arm in radians.
- distal:frc971.PotAndAbsolutePosition;
+ distal:frc971.PotAndAbsolutePosition (id: 1);
}
table Position {
// Values of the series elastic encoders on the left side of the robot from
// the rear perspective in radians.
- left_intake:IntakeElasticSensors;
+ left_intake:IntakeElasticSensors (id: 0);
// Values of the series elastic encoders on the right side of the robot from
// the rear perspective in radians.
- right_intake:IntakeElasticSensors;
+ right_intake:IntakeElasticSensors (id: 1);
- arm:ArmPosition;
+ arm:ArmPosition (id: 2);
// Value of the beam breaker sensor. This value is true if the beam is
// broken, false if the beam isn't broken.
- claw_beambreak_triggered:bool;
+ claw_beambreak_triggered:bool (id: 3);
// Value of the beambreak sensor detecting when the box has hit the frame
// cutout.
- box_back_beambreak_triggered:bool;
+ box_back_beambreak_triggered:bool (id: 4);
// Distance to the box in meters.
- box_distance:double;
+ box_distance:double (id: 5);
}
root_type Position;
diff --git a/y2018/control_loops/superstructure/superstructure_status.fbs b/y2018/control_loops/superstructure/superstructure_status.fbs
index 8baf40e..9f53a82 100644
--- a/y2018/control_loops/superstructure/superstructure_status.fbs
+++ b/y2018/control_loops/superstructure/superstructure_status.fbs
@@ -4,97 +4,97 @@
table IntakeSideStatus {
// Is the subsystem zeroed?
- zeroed:bool;
+ zeroed:bool (id: 0);
// The state of the subsystem, if applicable.
- state:int;
+ state:int32 (id: 1);
// If true, we have aborted.
- estopped:bool;
+ estopped:bool (id: 2);
// Estimated position of the spring.
- spring_position:float;
+ spring_position:float (id: 3);
// Estimated velocity of the spring in units/second.
- spring_velocity:float;
+ spring_velocity:float (id: 4);
// Reported wrapping of the spring
- spring_wrapped:int;
+ spring_wrapped:int (id: 5);
// Estimated position of the joint.
- motor_position:float;
+ motor_position:float (id: 6);
// Estimated velocity of the joint in units/second.
- motor_velocity:float;
+ motor_velocity:float (id: 7);
// Goal position of the joint.
- goal_position:float;
+ goal_position:float (id: 8);
// Goal velocity of the joint in units/second.
- goal_velocity:float;
+ goal_velocity:float (id: 9);
// The calculated velocity with delta x/delta t
- calculated_velocity:float;
+ calculated_velocity:float (id: 10);
// The voltage given last cycle;
- delayed_voltage:float;
+ delayed_voltage:float (id: 11);
// State of the estimator.
- estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState;
+ estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 12);
}
table ArmStatus {
// State of the estimators.
- proximal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState;
- distal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState;
+ proximal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 0);
+ distal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 1);
// The node we are currently going to.
- current_node:uint;
+ current_node:uint32 (id: 2);
// Distance (in radians) to the end of the path.
- path_distance_to_go:float;
+ path_distance_to_go:float (id: 3);
// Goal position and velocity (radians)
- goal_theta0:float;
- goal_theta1:float;
- goal_omega0:float;
- goal_omega1:float;
+ goal_theta0:float (id: 4);
+ goal_theta1:float (id: 5);
+ goal_omega0:float (id: 6);
+ goal_omega1:float (id: 7);
// Current position and velocity (radians)
- theta0:float;
- theta1:float;
+ theta0:float (id: 8);
+ theta1:float (id: 9);
- omega0:float;
- omega1:float;
+ omega0:float (id: 10);
+ omega1:float (id: 11);
// Estimated voltage error for the two joints.
- voltage_error0:float;
- voltage_error1:float;
+ voltage_error0:float (id: 12);
+ voltage_error1:float (id: 13);
// True if we are zeroed.
- zeroed:bool;
+ zeroed:bool (id: 14);
// True if the arm is zeroed.
- estopped:bool;
+ estopped:bool (id: 15);
// The current state machine state.
- state:uint;
+ state:uint32 (id: 16);
- grab_state:uint;
+ grab_state:uint32 (id: 17);
// The number of times the LQR solver failed.
- failed_solutions:uint;
+ failed_solutions:uint32 (id: 18);
}
table Status {
// Are all the subsystems zeroed?
- zeroed:bool;
+ zeroed:bool (id: 0);
// If true, any of the subsystems have aborted.
- estopped:bool;
+ estopped:bool (id: 1);
// Status of both intake sides.
- left_intake:IntakeSideStatus;
- right_intake:IntakeSideStatus;
+ left_intake:IntakeSideStatus (id: 2);
+ right_intake:IntakeSideStatus (id: 3);
- arm:ArmStatus;
+ arm:ArmStatus (id: 4);
- filtered_box_velocity:double;
- rotation_state:uint;
+ filtered_box_velocity:double (id: 5);
+ rotation_state:uint (id: 6);
}
root_type Status;
diff --git a/y2018/status_light.fbs b/y2018/status_light.fbs
index e51decb..118a3dc 100644
--- a/y2018/status_light.fbs
+++ b/y2018/status_light.fbs
@@ -2,9 +2,9 @@
table StatusLight {
// How bright to make each one. 0 is off, 1 is full on.
- red:float;
- green:float;
- blue:float;
+ red:float (id: 0);
+ green:float (id: 1);
+ blue:float (id: 2);
}
root_type StatusLight;
diff --git a/y2018/vision/vision.fbs b/y2018/vision/vision.fbs
index 14f8a45..5337f2b 100644
--- a/y2018/vision/vision.fbs
+++ b/y2018/vision/vision.fbs
@@ -2,8 +2,8 @@
// Published on ".y2018.vision.vision_status"
table VisionStatus {
- high_frame_count:uint;
- low_frame_count:uint;
+ high_frame_count:uint (id: 0);
+ low_frame_count:uint (id: 1);
}
root_type VisionStatus;