Refactor constants
Everything is layed out so you can actually read them (kind of) now.
Change-Id: I7e042c2257a8271c08fa94d46bfd2ea846c90c38
diff --git a/y2017/constants.h b/y2017/constants.h
index 92df517..20fcb56 100644
--- a/y2017/constants.h
+++ b/y2017/constants.h
@@ -9,90 +9,97 @@
namespace y2017 {
namespace constants {
-// Has all of the numbers that change for both robots and makes it easy to
-// retrieve the values for the current one.
+// Has all of our "constants", except the ones that come from other places. The
+// ones which change between robots are put together with a workable way to
+// retrieve the values for the current robot.
// Everything is in SI units (volts, radians, meters, seconds, etc).
// Some of these values are related to the conversion between raw values
// (encoder counts, voltage, etc) to scaled units (radians, meters, etc).
+//
+// All ratios are from the encoder shaft to the output units.
-// This structure contains current values for all of the things that change.
struct Values {
- // ///// Mutual constants between robots. /////
// TODO(constants): Update/check these with what we're using this year.
- static const int kZeroingSampleSize = 200;
-
- // The ratio from the encoder shaft to the drivetrain wheels.
-
- static constexpr double kDrivetrainEncoderRatio = 1.0 ;
-
- // Ratios for our subsystems.
- static constexpr double kShooterEncoderRatio = 32.0 / 48.0; //Encoder rotation to shooter wheel revolution
- static constexpr double kIntakeEncoderRatio = (16 * 0.25) * (20 / 40) / (2.0 * numpy.pi) * 0.0254; //Encoder rotation per Meter(inch per radian) of movement
- static constexpr double kIntakePotRatio = (16 * 0.25) / (2.0 * numpy.pi) * 0.0254; //Pot Rotation per Meter(inch per radian) of movement
- static constexpr double kHoodEncoderRatio = 20.0 / 345.0; //Encoder rotation to Hood rotation
- static constexpr double kHoodPotRatio = 20.0 / 345.0; //Pot Rotation per Hood rotation
- static constexpr double kTurretEncoderRatio = 16.0 / 92.0; //Encoder rotation toTurret rotation
- static constexpr double kTurretPotRatio = 16.0 / 92.0; //Pot Rotation per Turret rotation
- static constexpr double kIndexerEncoderRatio = (18.0 / 36.0) * (12.0 / 84.0); //Encoder rotation to Inner indexer rotation
-
- // Difference in radians between index pulses.
- static constexpr double kIntakeEncoderIndexDifference =
- 2.0 * M_PI * kIntakeEncoderRatio;
- static constexpr double kIndexerEncoderIndexDifference =
- 2.0 * M_PI * kIndexerEncoderRatio;
- static constexpr double kTurretEncoderIndexDifference =
- 2.0 * M_PI * kTurretEncoderRatio;
- static constexpr double kHoodEncoderIndexDifference =
- 2.0 * M_PI * kHoodEncoderRatio;
-
- static constexpr ::frc971::constants::Range kIntakeRange{
- // Lower hard stop in meters(inches)
- -0.600 * 0.0254,
- // Upper hard stop
- 8.655 * 0.0254,
- // Lower soft stop
- 0.000,
- // Upper soft stop
- 8.530 * 0.0254};
- static constexpr ::frc971::constants::Range kHoodRange{
- // Lower hard stop in radians
- -1.0 / 345.0 * 2.0 * M_PI,
- // Upper hard stop in radians
- 39.0 / 345.0 * 2.0 * M_PI,
- // Lower soft stop in radians
- 0.0,
- // Upper soft stop in radians
- (39.0 - 1.0) / 345.0 * 2.0 * M_PI};
- static constexpr ::frc971::constants::Range kTurretRange{
- // Lower hard stop in radians
- -460.0 / 2.0 * M_PI / 180.0,
- // Upper hard stop in radians
- 460.0 / 2.0 * M_PI / 180.0,
- // Lower soft stop in radians
- -450.0 / 2.0 * M_PI / 180.0,
- // Upper soft stop in radians
- 450.0 / 2.0 * M_PI / 180.0};
- // ///// Dynamic constants. /////
- double drivetrain_max_speed;
-
struct Intake {
double pot_offset;
::frc971::constants::PotAndIndexPulseZeroingConstants zeroing;
};
- Intake intake;
struct Turret {
double pot_offset;
::frc971::constants::PotAndIndexPulseZeroingConstants zeroing;
};
- Turret turret;
struct Hood {
double pot_offset;
::frc971::constants::PotAndIndexPulseZeroingConstants zeroing;
};
+
+ static const int kZeroingSampleSize = 200;
+
+ // TODO(Brian): This isn't all the way to the output yet.
+ static constexpr double kDrivetrainEncoderRatio = 1.0 ;
+
+ static constexpr double kShooterEncoderRatio = 32.0 / 48.0;
+
+ static constexpr double kIntakeEncoderRatio =
+ (16.0 * 0.25) * (20.0 / 40.0) / (2.0 * M_PI) * 0.0254;
+ static constexpr double kIntakePotRatio = (16 * 0.25) / (2.0 * M_PI) * 0.0254;
+ static constexpr double kIntakeEncoderIndexDifference =
+ 2.0 * M_PI * kIntakeEncoderRatio;
+
+ static constexpr ::frc971::constants::Range kIntakeRange{
+ // Lower hard stop in meters (from inches).
+ -0.600 * 0.0254,
+ // Upper hard stop in meters (from inches).
+ 8.655 * 0.0254,
+ // Lower soft stop in meters (from inches).
+ 0.000,
+ // Upper soft stop in meters (from inches).
+ 8.530 * 0.0254};
+
+ static constexpr double kHoodEncoderRatio = 20.0 / 345.0;
+ static constexpr double kHoodPotRatio = 20.0 / 345.0;
+ static constexpr double kHoodEncoderIndexDifference =
+ 2.0 * M_PI * kHoodEncoderRatio;
+
+ static constexpr ::frc971::constants::Range kHoodRange{
+ // Lower hard stop in radians.
+ -1.0 / 345.0 * 2.0 * M_PI,
+ // Upper hard stop in radians.
+ 39.0 / 345.0 * 2.0 * M_PI,
+ // Lower soft stop in radians.
+ 0.0,
+ // Upper soft stop in radians.
+ (39.0 - 1.0) / 345.0 * 2.0 * M_PI};
+
+ static constexpr double kTurretEncoderRatio = 16.0 / 92.0;
+ static constexpr double kTurretPotRatio = 16.0 / 92.0;
+ static constexpr double kTurretEncoderIndexDifference =
+ 2.0 * M_PI * kTurretEncoderRatio;
+
+ static constexpr ::frc971::constants::Range kTurretRange{
+ // Lower hard stop in radians.
+ -460.0 / 2.0 * M_PI / 180.0,
+ // Upper hard stop in radians.
+ 460.0 / 2.0 * M_PI / 180.0,
+ // Lower soft stop in radians.
+ -450.0 / 2.0 * M_PI / 180.0,
+ // Upper soft stop in radians.
+ 450.0 / 2.0 * M_PI / 180.0};
+
+ static constexpr double kIndexerEncoderRatio = (18.0 / 36.0) * (12.0 / 84.0);
+ static constexpr double kIndexerEncoderIndexDifference =
+ 2.0 * M_PI * kIndexerEncoderRatio;
+
+ double drivetrain_max_speed;
+
+ Intake intake;
+
+ Turret turret;
+
Hood hood;
double down_error;