Added hood constants to the file
Change-Id: I49c3b05794f0de59faaa739f7a6c233339053aea
diff --git a/y2020/BUILD b/y2020/BUILD
index 58788d4..1d281bb 100644
--- a/y2020/BUILD
+++ b/y2020/BUILD
@@ -33,6 +33,7 @@
"//frc971/control_loops:pose",
"//frc971/control_loops:static_zeroing_single_dof_profiled_subsystem",
"//y2020/control_loops/drivetrain:polydrivetrain_plants",
+ "//y2020/control_loops/superstructure/hood:hood_plants",
"@com_google_absl//absl/base",
],
)
diff --git a/y2020/constants.cc b/y2020/constants.cc
index 70876c3..a16b2f1 100644
--- a/y2020/constants.cc
+++ b/y2020/constants.cc
@@ -13,6 +13,8 @@
#include "aos/mutex/mutex.h"
#include "aos/network/team_number.h"
+#include "y2020/control_loops/superstructure/hood/integral_hood_plant.h"
+
namespace y2020 {
namespace constants {
@@ -26,6 +28,25 @@
const Values *DoGetValuesForTeam(uint16_t team) {
Values *const r = new Values();
+ ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
+ ::frc971::zeroing::AbsoluteEncoderZeroingEstimator> *const hood =
+ &r->hood;
+
+ // Hood constants.
+ hood->zeroing_voltage = 3.0;
+ hood->operating_voltage = 12.0;
+ hood->zeroing_profile_params = {0.5, 3.0};
+ hood->default_profile_params = {6.0, 30.0};
+ hood->range = Values::kHoodRange();
+ hood->make_integral_loop =
+ control_loops::superstructure::hood::MakeIntegralHoodLoop;
+ hood->zeroing_constants.average_filter_size = Values::kZeroingSampleSize;
+ hood->zeroing_constants.one_revolution_distance =
+ M_PI * 2.0 * constants::Values::kHoodEncoderRatio();
+ hood->zeroing_constants.zeroing_threshold = 0.0005;
+ hood->zeroing_constants.moving_buffer_size = 20;
+ hood->zeroing_constants.allowable_encoder_error = 0.9;
+ hood->zeroing_constants.middle_position = Values::kHoodRange().middle();
switch (team) {
// A set of constants for tests.
@@ -33,12 +54,15 @@
break;
case kCompTeamNumber:
+ hood->zeroing_constants.measured_absolute_position = 0.0;
break;
case kPracticeTeamNumber:
+ hood->zeroing_constants.measured_absolute_position = 0.0;
break;
case kCodingRobotTeamNumber:
+ hood->zeroing_constants.measured_absolute_position = 0.0;
break;
default:
diff --git a/y2020/constants.h b/y2020/constants.h
index 2e915f9..47b8543 100644
--- a/y2020/constants.h
+++ b/y2020/constants.h
@@ -10,6 +10,7 @@
#include "frc971/control_loops/pose.h"
#include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
#include "y2020/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2020/control_loops/superstructure/hood/hood_plant.h"
namespace y2020 {
namespace constants {
@@ -28,6 +29,32 @@
constants::Values::kDrivetrainEncoderRatio() *
kDrivetrainEncoderCountsPerRevolution();
}
+
+ // Hood
+ static constexpr double kHoodEncoderCountsPerRevolution() { return 4096.0; }
+
+ //TODO(sabina): Update constants
+ static constexpr double kHoodEncoderRatio() { return 1.0; }
+
+ static constexpr double kMaxHoodEncoderPulsesPerSecond() {
+ return control_loops::superstructure::hood::kFreeSpeed *
+ control_loops::superstructure::hood::kOutputRatio /
+ kHoodEncoderRatio() / (2.0 * M_PI) *
+ kHoodEncoderCountsPerRevolution();
+ }
+
+ static constexpr ::frc971::constants::Range kHoodRange() {
+ return ::frc971::constants::Range{
+ 0.00, // Back Hard
+ 0.79, // Front Hard
+ 0.14, // Back Soft
+ 0.78 // Front Soft
+ };
+ }
+
+ ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
+ ::frc971::zeroing::AbsoluteEncoderZeroingEstimator>
+ hood;
};
// Creates (once) a Values instance for ::aos::network::GetTeamNumber() and