Updated queue definition to be more generic.

Change-Id: Iac858a242d6e479470a8b542f75f4c55b0a47676
diff --git a/y2017/control_loops/python/hood.py b/y2017/control_loops/python/hood.py
index 5be85cd..376a22a 100755
--- a/y2017/control_loops/python/hood.py
+++ b/y2017/control_loops/python/hood.py
@@ -42,8 +42,10 @@
     self.G2 = self.G1 * (14.0 / 36.0)
     # Third axle gear ratio off the motor
     self.G3 = self.G2 * (14.0 / 36.0)
+    # The last gear reduction (encoder -> hood angle)
+    self.last_G = (18.0 / 345.0)
     # Gear ratio
-    self.G = (12.0 / 60.0) * (14.0 / 36.0) * (14.0 / 36.0) * (18.0 / 345.0)
+    self.G = (12.0 / 60.0) * (14.0 / 36.0) * (14.0 / 36.0) * self.last_G
 
     # 36 tooth gear inertia in kg * m^2
     self.big_gear_inertia = 0.5 * 0.039 * ((36.0 / 40.0 * 0.025) ** 2)
@@ -319,6 +321,8 @@
     integral_hood = IntegralHood('IntegralHood')
     integral_loop_writer = control_loop.ControlLoopWriter('IntegralHood', [integral_hood],
                                                           namespaces=namespaces)
+    integral_loop_writer.AddConstant(control_loop.Constant('kLastReduction', '%f',
+          integral_hood.last_G))
     integral_loop_writer.Write(argv[3], argv[4])
 
 
diff --git a/y2017/control_loops/superstructure/superstructure.q b/y2017/control_loops/superstructure/superstructure.q
index 5fe207e..4f36449 100644
--- a/y2017/control_loops/superstructure/superstructure.q
+++ b/y2017/control_loops/superstructure/superstructure.q
@@ -43,7 +43,7 @@
   .frc971.ProfileParameters profile_params;
 
   // Voltage to send to the rollers. Positive is sucking in.
-  float voltage_rollers;
+  double voltage_rollers;
 };
 
 struct SerializerGoal {
@@ -65,7 +65,7 @@
 
 struct HoodGoal {
   // Angle the hood is currently at
-  double angle_hood;
+  double angle;
 
   // Caps on velocity/acceleration for profiling. 0 for the default.
   .frc971.ProfileParameters profile_params;
@@ -166,19 +166,23 @@
   };
 
   message Position {
+    // TODO(austin): The turret and intake really should be absolute.  Switch
+    // them over when that class is ready.
+
     // Position of the intake, zero when the intake is in, positive when it is
     // out.
-    .frc971.PotAndAbsolutePosition intake;
+    .frc971.PotAndIndexPosition intake;
 
     // Serializer angle in radians.
     double theta_serializer;
 
     // The sensor readings for the turret. The units and sign are defined the
     // same as what's in the Goal message.
-    .frc971.PotAndAbsolutePosition turret;
+    .frc971.PotAndIndexPosition turret;
 
-    // Position of the hood in radians
-    double theta_hood;
+    // The sensor readings for the hood. The units and sign are defined the
+    // same as what's in the Goal message.
+    .frc971.PotAndIndexPosition hood;
 
     // Shooter wheel angle in radians.
     double theta_shooter;
@@ -186,17 +190,17 @@
 
   message Output {
     // Voltages for some of the subsystems.
-    float voltage_intake;
-    float voltage_serializer;
-    float voltage_shooter;
+    double voltage_intake;
+    double voltage_serializer;
+    double voltage_shooter;
 
     // Rollers on the intake.
-    float voltage_intake_rollers;
+    double voltage_intake_rollers;
     // Roller on the serializer
-    float voltage_serializer_rollers;
+    double voltage_serializer_rollers;
 
-    float voltage_turret;
-    float voltage_hood;
+    double voltage_turret;
+    double voltage_hood;
   };
 
   queue Goal goal;