Work on getting wpilib_interface finished
I moved all the constants together to make it somewhat easier to work. I
also finished renaming serializer to indexer because Austin is more
stubborn than the rest of the team combined.
It at least compiles now. The TODOs are also also much more specific to
the few remaining pieces.
Change-Id: Id3baf2b5be0a946345b152612c2099cf1b599727
diff --git a/y2017/constants.h b/y2017/constants.h
index 20fcb56..2c8916f 100644
--- a/y2017/constants.h
+++ b/y2017/constants.h
@@ -6,6 +6,13 @@
#include "frc971/constants.h"
+#include "y2017/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2017/control_loops/superstructure/shooter/shooter_plant.h"
+#include "y2017/control_loops/superstructure/intake/intake_plant.h"
+#include "y2017/control_loops/superstructure/turret/turret_plant.h"
+#include "y2017/control_loops/superstructure/indexer/indexer_plant.h"
+#include "y2017/control_loops/superstructure/hood/hood_plant.h"
+
namespace y2017 {
namespace constants {
@@ -20,8 +27,6 @@
// All ratios are from the encoder shaft to the output units.
struct Values {
- // TODO(constants): Update/check these with what we're using this year.
-
struct Intake {
double pot_offset;
::frc971::constants::PotAndIndexPulseZeroingConstants zeroing;
@@ -39,60 +44,73 @@
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 kDrivetrainCyclesPerRevolution = 256;
+ static constexpr double kDrivetrainEncoderCountsPerRevolution =
+ kDrivetrainCyclesPerRevolution * 4;
+ static constexpr double kDrivetrainEncoderRatio =
+ 1.0 * control_loops::drivetrain::kWheelRadius;
+ static constexpr double kMaxDrivetrainEncoderPulsesPerSecond =
+ control_loops::drivetrain::kFreeSpeed *
+ control_loops::drivetrain::kHighOutputRatio /
+ constants::Values::kDrivetrainEncoderRatio *
+ kDrivetrainEncoderCountsPerRevolution;
+ static constexpr double kShooterEncoderCountsPerRevolution = 2048 * 4;
static constexpr double kShooterEncoderRatio = 32.0 / 48.0;
+ static constexpr double kMaxShooterEncoderPulsesPerSecond =
+ control_loops::superstructure::shooter::kFreeSpeed *
+ control_loops::superstructure::shooter::kOutputRatio /
+ constants::Values::kShooterEncoderRatio *
+ kShooterEncoderCountsPerRevolution;
+ static constexpr double kIntakeEncoderCountsPerRevolution = 1024 * 4;
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 double kMaxIntakeEncoderPulsesPerSecond =
+ control_loops::superstructure::intake::kFreeSpeed * control_loops::superstructure::intake::kOutputRatio /
+ constants::Values::kIntakeEncoderRatio *
+ kIntakeEncoderCountsPerRevolution;
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};
+ -0.29878633 * 0.0254, 9.23012063 * 0.0254, (-0.29878633 + 0.125) * 0.0254,
+ (9.23012063 - 0.125) * 0.0254};
+ static constexpr double kHoodEncoderCountsPerRevolution = 2048 * 4;
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 double kMaxHoodEncoderPulsesPerSecond =
+ control_loops::superstructure::hood::kFreeSpeed * control_loops::superstructure::hood::kOutputRatio /
+ constants::Values::kHoodEncoderRatio * kHoodEncoderCountsPerRevolution;
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};
+ -0.39 * M_PI / 2.0, 37.11 * M_PI / 2.0, (-0.39 + 1.0) * M_PI / 2.0,
+ (37.11 - 1.0) * M_PI / 2.0};
+ static constexpr double kTurretEncoderCountsPerRevolution = 1024 * 4;
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 double kMaxTurretEncoderPulsesPerSecond =
+ control_loops::superstructure::turret::kFreeSpeed * control_loops::superstructure::turret::kOutputRatio /
+ constants::Values::kTurretEncoderRatio *
+ kTurretEncoderCountsPerRevolution;
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};
+ -460.0 / 2.0 * M_PI / 180.0, 460.0 / 2.0 * M_PI / 180.0,
+ -450.0 / 2.0 * M_PI / 180.0, 450.0 / 2.0 * M_PI / 180.0};
+ static constexpr double kMaxIndexerEncoderCountsPerRevolution = 256 * 4;
static constexpr double kIndexerEncoderRatio = (18.0 / 36.0) * (12.0 / 84.0);
static constexpr double kIndexerEncoderIndexDifference =
2.0 * M_PI * kIndexerEncoderRatio;
+ static constexpr double kMaxIndexerEncoderPulsesPerSecond =
+ control_loops::superstructure::indexer::kFreeSpeed *
+ control_loops::superstructure::indexer::kOutputRatio /
+ constants::Values::kIndexerEncoderRatio *
+ kMaxIndexerEncoderCountsPerRevolution;
double drivetrain_max_speed;