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/y2017/control_loops/superstructure/superstructure_goal.fbs b/y2017/control_loops/superstructure/superstructure_goal.fbs
index 6681262..3cf6945 100644
--- a/y2017/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2017/control_loops/superstructure/superstructure_goal.fbs
@@ -7,27 +7,27 @@
// frame. Positive is out.
// Goal distance of the intake.
- distance:double;
+ distance:double (id: 0);
// Caps on velocity/acceleration for profiling. 0 for the default.
- profile_params:frc971.ProfileParameters;
+ profile_params:frc971.ProfileParameters (id: 1);
// Voltage to send to the rollers. Positive is sucking in.
- voltage_rollers:double;
+ voltage_rollers:double (id: 2);
// If true, disable the intake so we can hang.
- disable_intake:bool;
+ disable_intake:bool (id: 3);
// The gear servo value.
- gear_servo:double;
+ gear_servo:double (id: 4);
}
table IndexerGoal {
// Indexer angular velocity goals in radians/second.
- angular_velocity:double;
+ angular_velocity:double (id: 0);
// Roller voltage. Positive is sucking in.
- voltage_rollers:double;
+ voltage_rollers:double (id: 1);
}
table TurretGoal {
@@ -36,39 +36,39 @@
// turns clockwise (towards right from the front), and decreases when
// the turrent turns counter-clockwise (towards left from the front).
// These are from a top view above the robot.
- angle:double;
+ angle:double (id: 0);
// If true, ignore the angle and track using vision. If we don't see
// anything, we'll use the turret goal above.
- track:bool;
+ track:bool (id: 1);
// Caps on velocity/acceleration for profiling. 0 for the default.
- profile_params:frc971.ProfileParameters;
+ profile_params:frc971.ProfileParameters (id: 2);
}
table HoodGoal {
// Angle the hood is currently at. An angle of zero is at the lower hard
// stop, angle increases as hood rises.
- angle:double;
+ angle:double (id: 0);
// Caps on velocity/acceleration for profiling. 0 for the default.
- profile_params:frc971.ProfileParameters;
+ profile_params:frc971.ProfileParameters (id: 1);
}
table ShooterGoal {
// Angular velocity goals in radians/second. Positive is shooting out of the
// robot.
- angular_velocity:double;
+ angular_velocity:double (id: 0);
}
table Goal {
- intake:IntakeGoal;
- indexer:IndexerGoal;
- turret:TurretGoal;
- hood:HoodGoal;
- shooter:ShooterGoal;
- lights_on:bool;
- use_vision_for_shots:bool;
+ intake:IntakeGoal (id: 0);
+ indexer:IndexerGoal (id: 1);
+ turret:TurretGoal (id: 2);
+ hood:HoodGoal (id: 3);
+ shooter:ShooterGoal (id: 4);
+ lights_on:bool (id: 5);
+ use_vision_for_shots:bool (id: 6);
}
root_type Goal;
diff --git a/y2017/control_loops/superstructure/superstructure_output.fbs b/y2017/control_loops/superstructure/superstructure_output.fbs
index 5301380..74f6129 100644
--- a/y2017/control_loops/superstructure/superstructure_output.fbs
+++ b/y2017/control_loops/superstructure/superstructure_output.fbs
@@ -2,26 +2,26 @@
table Output {
// Voltages for some of the subsystems.
- voltage_intake:double;
- voltage_indexer:double;
- voltage_shooter:double;
+ voltage_intake:double (id: 0);
+ voltage_indexer:double (id: 1);
+ voltage_shooter:double (id: 2);
// Rollers on the intake.
- voltage_intake_rollers:double;
+ voltage_intake_rollers:double (id: 3);
// Roller on the indexer
- voltage_indexer_rollers:double;
+ voltage_indexer_rollers:double (id: 4);
- voltage_turret:double;
- voltage_hood:double;
+ voltage_turret:double (id: 5);
+ voltage_hood:double (id: 6);
- gear_servo:double;
+ gear_servo:double (id: 7);
// If true, the lights are on.
- lights_on:bool;
+ lights_on:bool (id: 8);
- red_light_on:bool;
- green_light_on:bool;
- blue_light_on:bool;
+ red_light_on:bool (id: 9);
+ green_light_on:bool (id: 10);
+ blue_light_on:bool (id: 11);
}
root_type Output;
diff --git a/y2017/control_loops/superstructure/superstructure_position.fbs b/y2017/control_loops/superstructure/superstructure_position.fbs
index 7f95462..5c70ff4 100644
--- a/y2017/control_loops/superstructure/superstructure_position.fbs
+++ b/y2017/control_loops/superstructure/superstructure_position.fbs
@@ -5,27 +5,27 @@
table ColumnPosition {
// Indexer angle in radians relative to the base. Positive is according to
// the right hand rule around +z.
- indexer:frc971.HallEffectAndPosition;
+ indexer:frc971.HallEffectAndPosition (id: 0);
// Turret angle in radians relative to the indexer. Positive is the same as
// the indexer.
- turret:frc971.HallEffectAndPosition;
+ turret:frc971.HallEffectAndPosition (id: 1);
}
table Position {
// Position of the intake, zero when the intake is in, positive when it is
// out.
- intake:frc971.PotAndAbsolutePosition;
+ intake:frc971.PotAndAbsolutePosition (id: 0);
// The position of the column.
- column:ColumnPosition;
+ column:ColumnPosition (id: 1);
// The sensor readings for the hood. The units and sign are defined the
// same as what's in the Goal message.
- hood:frc971.IndexPosition;
+ hood:frc971.IndexPosition (id: 2);
// Shooter wheel angle in radians.
- theta_shooter:double;
+ theta_shooter:double (id: 3);
}
root_type Position;
diff --git a/y2017/control_loops/superstructure/superstructure_status.fbs b/y2017/control_loops/superstructure/superstructure_status.fbs
index 217eb5b..88c335b 100644
--- a/y2017/control_loops/superstructure/superstructure_status.fbs
+++ b/y2017/control_loops/superstructure/superstructure_status.fbs
@@ -6,124 +6,124 @@
table IndexerStatus {
// The current average velocity in radians/second. Positive is moving balls up
// towards the shooter. This is the angular velocity of the inner piece.
- avg_angular_velocity:double;
+ avg_angular_velocity:double (id: 0);
// The current instantaneous filtered velocity in radians/second.
- angular_velocity:double;
+ angular_velocity:double (id: 1);
// True if the indexer is ready. It is better to compare the velocities
// directly so there isn't confusion on if the goal is up to date.
- ready:bool;
+ ready:bool (id: 2);
// True if the indexer is stuck.
- stuck:bool;
- stuck_voltage:float;
+ stuck:bool (id: 3);
+ stuck_voltage:float (id: 4);
// The state of the indexer state machine.
- state:int;
+ state:int32 (id: 5);
// The estimated voltage error from the kalman filter in volts.
- voltage_error:double;
+ voltage_error:double (id: 6);
// The estimated voltage error from the stuck indexer kalman filter.
- stuck_voltage_error:double;
+ stuck_voltage_error:double (id: 7);
// The current velocity measured as delta x / delta t in radians/sec.
- instantaneous_velocity:double;
+ instantaneous_velocity:double (id: 8);
// The error between our measurement and expected measurement in radians.
- position_error:double;
+ position_error:double (id: 9);
}
table ShooterStatus {
// The current average velocity in radians/second.
- avg_angular_velocity:double;
+ avg_angular_velocity:double (id: 0);
// The current instantaneous filtered velocity in radians/second.
- angular_velocity:double;
+ angular_velocity:double (id: 1);
// True if the shooter is ready. It is better to compare the velocities
// directly so there isn't confusion on if the goal is up to date.
- ready:bool;
+ ready:bool (id: 2);
// The estimated voltage error from the kalman filter in volts.
- voltage_error:double;
+ voltage_error:double (id: 3);
// The current velocity measured as delta x / delta t in radians/sec.
- instantaneous_velocity:double;
- filtered_velocity:double;
- fixed_instantaneous_velocity:double;
+ instantaneous_velocity:double (id: 4);
+ filtered_velocity:double (id: 5);
+ fixed_instantaneous_velocity:double (id: 6);
// The error between our measurement and expected measurement in radians.
- position_error:double;
+ position_error:double (id: 7);
}
table ColumnEstimatorState {
- error:bool;
- zeroed:bool;
- indexer:frc971.HallEffectAndPositionEstimatorState;
- turret:frc971.HallEffectAndPositionEstimatorState;
+ error:bool (id: 0);
+ zeroed:bool (id: 1);
+ indexer:frc971.HallEffectAndPositionEstimatorState (id: 2);
+ turret:frc971.HallEffectAndPositionEstimatorState (id: 3);
}
-table TurretProfiledSubsystemStatus {
+table TurretProfiledSubsystemStatus {
// Is the subsystem zeroed?
- zeroed:bool;
+ zeroed:bool (id: 0);
// The state of the subsystem, if applicable. -1 otherwise.
- state:int;
+ state:int (id: 1);
// If true, we have aborted.
- estopped:bool;
+ estopped:bool (id: 2);
// Position of the joint.
- position:float;
+ position:float (id: 3);
// Velocity of the joint in units/second.
- velocity:float;
+ velocity:float (id: 4);
// Profiled goal position of the joint.
- goal_position:float;
+ goal_position:float (id: 5);
// Profiled goal velocity of the joint in units/second.
- goal_velocity:float;
+ goal_velocity:float (id: 6);
// Unprofiled goal position from absoulte zero of the joint.
- unprofiled_goal_position:float;
+ unprofiled_goal_position:float (id: 7);
// Unprofiled goal velocity of the joint in units/second.
- unprofiled_goal_velocity:float;
+ unprofiled_goal_velocity:float (id: 8);
// The estimated voltage error.
- voltage_error:float;
+ voltage_error:float (id: 9);
// The calculated velocity with delta x/delta t
- calculated_velocity:float;
+ calculated_velocity:float (id: 10);
// Components of the control loop output
- position_power:float;
- velocity_power:float;
- feedforwards_power:float;
+ position_power:float (id: 11);
+ velocity_power:float (id: 12);
+ feedforwards_power:float (id: 13);
// State of the estimator.
- estimator_state:ColumnEstimatorState;
+ estimator_state:ColumnEstimatorState (id: 14);
- raw_vision_angle:double;
- vision_angle:double;
- vision_tracking:bool;
+ raw_vision_angle:double (id: 15);
+ vision_angle:double (id: 16);
+ vision_tracking:bool (id: 17);
- turret_encoder_angle:double;
+ turret_encoder_angle:double (id: 18);
}
table Status {
// Are all the subsystems zeroed?
- zeroed:bool;
+ zeroed:bool (id: 0);
// If true, we have aborted. This is the or of all subsystem estops.
- estopped:bool;
+ estopped:bool (id: 1);
// Each subsystems status.
- intake:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus;
- hood:frc971.control_loops.IndexProfiledJointStatus;
- shooter:ShooterStatus;
+ intake:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 2);
+ hood:frc971.control_loops.IndexProfiledJointStatus (id: 3);
+ shooter:ShooterStatus (id: 4);
- turret:TurretProfiledSubsystemStatus;
- indexer:IndexerStatus;
+ turret:TurretProfiledSubsystemStatus (id: 5);
+ indexer:IndexerStatus (id: 6);
- vision_distance:float;
+ vision_distance:float (id: 7);
}
root_type Status;