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/y2020/control_loops/superstructure/superstructure_goal.fbs b/y2020/control_loops/superstructure/superstructure_goal.fbs
index 9200082..792b6b4 100644
--- a/y2020/control_loops/superstructure/superstructure_goal.fbs
+++ b/y2020/control_loops/superstructure/superstructure_goal.fbs
@@ -5,10 +5,10 @@
 table ShooterGoal {
   // Angular velocity in rad/s of the slowest (lowest) wheel in the kicker.
   // Positive is shooting the ball.
-  velocity_accelerator:double;
+  velocity_accelerator:double (id: 0);
 
   // Angular velocity in rad/s of the flywheel. Positive is shooting.
-  velocity_finisher:double;
+  velocity_finisher:double (id: 1);
 }
 
 table Goal {
diff --git a/y2020/control_loops/superstructure/superstructure_output.fbs b/y2020/control_loops/superstructure/superstructure_output.fbs
index fd57825..005d930 100644
--- a/y2020/control_loops/superstructure/superstructure_output.fbs
+++ b/y2020/control_loops/superstructure/superstructure_output.fbs
@@ -2,35 +2,35 @@
 
 table Output {
   // Votage sent to the hood. Positive moves up.
-  hood_voltage:double;
+  hood_voltage:double (id: 0);
 
   // Voltage sent to motors on intake joint. Positive extends rollers.
-  intake_joint_voltage:double;
+  intake_joint_voltage:double (id: 1);
 
   // Voltage sent to rollers on intake. Positive rolls inward.
-  intake_roller_voltage:double;
+  intake_roller_voltage:double (id: 2);
 
-  //Voltage sent to the motors.
-  //Positive rotates counterclockwise from a birds eye view.
-  turret_voltage:double;
+  // Voltage sent to the motors.
+  // Positive rotates counterclockwise from a birds eye view.
+  turret_voltage:double (id: 3);
 
   // Voltage sent to the feeder belt. Positive is feeding.
-  feeder_voltage:double;
+  feeder_voltage:double (id: 4);
 
   // Voltage sent to the washing_machine and control panel spinner.
   // Positive runs the washing machine CCW facing the front of the robot, and
   // the spinner runs CCW from a top down view.
-  washing_machine_spinner_voltage:double;
+  washing_machine_spinner_voltage:double (id: 5);
 
   // Voltage sent to the kicker. Positive is shooting.
-  accelerator_left_voltage:double;
-  accelerator_right_voltage:double;
+  accelerator_left_voltage:double (id: 6);
+  accelerator_right_voltage:double (id: 7);
 
   // Voltage sent to the flywheel. Positive is shooting.
-  finisher_voltage:double;
+  finisher_voltage:double (id: 8);
 
   // Positive is deploying climber and to climb; cannot run in reverse
-  climber_voltage:double;
+  climber_voltage:double (id: 9);
 }
 
 root_type Output;
diff --git a/y2020/control_loops/superstructure/superstructure_position.fbs b/y2020/control_loops/superstructure/superstructure_position.fbs
index ed4ba18..f139381 100644
--- a/y2020/control_loops/superstructure/superstructure_position.fbs
+++ b/y2020/control_loops/superstructure/superstructure_position.fbs
@@ -4,29 +4,29 @@
 
 table ShooterPosition {
   // Flywheel angle in radians, positive is shooting.
-  theta_finisher:double;
+  theta_finisher:double (id: 0);
 
   // Kicker angle in radians of the slowest (lowest) wheel, positive is
   // accelerating the ball toward the shooter.
-  theta_accelerator_left:double;
-  theta_accelerator_right:double;
+  theta_accelerator_left:double (id: 1);
+  theta_accelerator_right:double (id: 2);
 }
 
 table Position {
   // Zero is at the horizontal, positive towards the front (radians).
-  hood:frc971.AbsolutePosition;
+  hood:frc971.AbsolutePosition (id: 0);
 
   // Position of the intake. 0 when four-bar is vertical, positive extended.
-  intake_joint:frc971.AbsolutePosition;
+  intake_joint:frc971.AbsolutePosition (id: 1);
 
   // See goal for definition of 0
-  turret:frc971.PotAndAbsolutePosition;
+  turret:frc971.PotAndAbsolutePosition (id: 2);
 
   // Position of the kicker and flywheel
-  shooter:ShooterPosition;
+  shooter:ShooterPosition (id: 3);
 
    // Position of the control panel, relative to start, positive counterclockwise from above.
-  control_panel:frc971.RelativePosition;
+  control_panel:frc971.RelativePosition (id: 4);
 }
 
 root_type Position;
diff --git a/y2020/control_loops/superstructure/superstructure_status.fbs b/y2020/control_loops/superstructure/superstructure_status.fbs
index dc6116c..fb94d32 100644
--- a/y2020/control_loops/superstructure/superstructure_status.fbs
+++ b/y2020/control_loops/superstructure/superstructure_status.fbs
@@ -6,63 +6,63 @@
 table FlywheelControllerStatus {
   // The current average velocity in radians/second over the last kHistoryLength
   // in shooter.h
-  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);
 
   // The target speed selected by the lookup table or from manual override
   // Can be compared to velocity to determine if ready.
-  angular_velocity_goal:double;
+  angular_velocity_goal:double (id: 2);
 
   // Voltage error.
-  voltage_error:double;
+  voltage_error:double (id: 3);
 }
 
 table ShooterStatus {
   // The final wheel shooting the ball
-  finisher:FlywheelControllerStatus;
+  finisher:FlywheelControllerStatus (id: 0);
 
   // The subsystem to accelerate the ball before the finisher
   // Velocity is the fastest (top) wheel
-  accelerator_left:FlywheelControllerStatus;
-  accelerator_right:FlywheelControllerStatus;
+  accelerator_left:FlywheelControllerStatus (id: 1);
+  accelerator_right:FlywheelControllerStatus (id: 2);
 }
 
 table AimerStatus {
   // The current goal angle for the turret auto-tracking, in radians.
-  turret_position:double;
+  turret_position:double (id: 0);
   // The current goal velocity for the turret, in radians / sec.
-  turret_velocity:double;
+  turret_velocity:double (id: 1);
   // Whether we are currently aiming for the inner port.
-  aiming_for_inner_port:bool;
+  aiming_for_inner_port:bool (id: 2);
   // The current distance to the target, in meters.
-  target_distance:double;
+  target_distance:double (id: 3);
   // The current "shot distance." When shooting on the fly, this may be
   // different from the static distance to the target.
-  shot_distance:double;
+  shot_distance:double (id: 4);
 }
 
 table Status {
   // All subsystems know their location.
-  zeroed:bool;
+  zeroed:bool (id: 0);
 
   // If true, we have aborted. This is if one or all subsystem estops.
-  estopped:bool;
+  estopped:bool (id: 1);
 
   // Subsystem status.
-  hood:frc971.control_loops.AbsoluteEncoderProfiledJointStatus;
-  intake:frc971.control_loops.AbsoluteEncoderProfiledJointStatus;
-  turret:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus;
+  hood:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 2);
+  intake:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 3);
+  turret:frc971.control_loops.PotAndAbsoluteEncoderProfiledJointStatus (id: 4);
 
   // Shooter subsystem status.
-  shooter:ShooterStatus;
+  shooter:ShooterStatus (id: 5);
 
   // Status of the control_panel
-  control_panel:frc971.control_loops.RelativeEncoderProfiledJointStatus;
+  control_panel:frc971.control_loops.RelativeEncoderProfiledJointStatus (id: 6);
 
   // Status of the vision auto-tracking.
-  aimer:AimerStatus;
+  aimer:AimerStatus (id: 7);
 }
 
 root_type Status;