Updated constants and wpilib_interface.
Updated wpilib_interface and the constants files to have the
superstructure components.
Updated the linear_system codegen to output free speed in radians.
Updated the intake python file with the correct gear ratio.
Created the superstructure plants.
Change-Id: I5a2b54fe3de8d9ae9b0f79820465a2f97baed22d
diff --git a/y2019/constants.h b/y2019/constants.h
index e68143c..5e1de7b 100644
--- a/y2019/constants.h
+++ b/y2019/constants.h
@@ -6,6 +6,10 @@
#include "frc971/constants.h"
#include "y2019/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2019/control_loops/superstructure/intake/intake_plant.h"
+#include "y2019/control_loops/superstructure/elevator/elevator_plant.h"
+#include "y2019/control_loops/superstructure/stilts/stilts_plant.h"
+#include "y2019/control_loops/superstructure/wrist/wrist_plant.h"
namespace y2019 {
namespace constants {
@@ -27,15 +31,94 @@
static constexpr double kDrivetrainEncoderCountsPerRevolution() {
return kDrivetrainCyclesPerRevolution() * 4;
}
- static constexpr double kDrivetrainEncoderRatio() {
- return (24.0 / 52.0);
- }
+ static constexpr double kDrivetrainEncoderRatio() { return (24.0 / 52.0); }
static constexpr double kMaxDrivetrainEncoderPulsesPerSecond() {
return control_loops::drivetrain::kFreeSpeed / (2.0 * M_PI) *
control_loops::drivetrain::kHighOutputRatio /
constants::Values::kDrivetrainEncoderRatio() *
kDrivetrainEncoderCountsPerRevolution();
}
+
+ // Elevator
+ static constexpr double kElevatorEncoderCountsPerRevolution() {
+ return 4096.0;
+ }
+
+ static constexpr double kElevatorEncoderRatio() {
+ return (1.0) * control_loops::superstructure::elevator::kRadius;
+ }
+
+ static constexpr double kMaxElevatorEncoderPulsesPerSecond() {
+ return control_loops::superstructure::elevator::kFreeSpeed *
+ control_loops::superstructure::elevator::kOutputRatio /
+ kElevatorEncoderRatio() / (2.0 * M_PI) *
+ kElevatorEncoderCountsPerRevolution();
+ }
+
+ static constexpr double kElevatorPotRatio() {
+ return (1.0) * control_loops::superstructure::elevator::kRadius;
+ }
+
+ // Intake
+ static constexpr double kIntakeEncoderCountsPerRevolution() { return 4096.0; }
+
+ static constexpr double kIntakeEncoderRatio() { return (18.0 / 38.0); }
+
+ static constexpr double kMaxIntakeEncoderPulsesPerSecond() {
+ return control_loops::superstructure::intake::kFreeSpeed *
+ control_loops::superstructure::intake::kOutputRatio /
+ kIntakeEncoderRatio() / (2.0 * M_PI) *
+ kIntakeEncoderCountsPerRevolution();
+ }
+
+ // Wrist
+ static constexpr double kWristEncoderCountsPerRevolution() { return 4096.0; }
+
+ static constexpr double kWristEncoderRatio() {
+ return (20.0 / 100.0) * (24.0 / 84.0);
+ }
+
+ static constexpr double kMaxWristEncoderPulsesPerSecond() {
+ return control_loops::superstructure::wrist::kFreeSpeed *
+ control_loops::superstructure::wrist::kOutputRatio /
+ kWristEncoderRatio() / (2.0 * M_PI) *
+ kWristEncoderCountsPerRevolution();
+ }
+
+ static constexpr double kWristPotRatio() { return (24.0) / (84.0); }
+
+ // Stilts
+ static constexpr double kStiltsEncoderCountsPerRevolution() { return 4096.0; }
+
+ static constexpr double kStiltsEncoderRatio() {
+ return (1.0 /* Gear ratio */) *
+ control_loops::superstructure::stilts::kRadius;
+ }
+
+ static constexpr double kMaxStiltsEncoderPulsesPerSecond() {
+ return control_loops::superstructure::stilts::kFreeSpeed *
+ control_loops::superstructure::stilts::kOutputRatio /
+ kStiltsEncoderRatio() / (2.0 * M_PI) *
+ kStiltsEncoderCountsPerRevolution();
+ }
+
+ static constexpr double kStiltsPotRatio() {
+ return (1.0 /* Gear ratio */) *
+ control_loops::superstructure::stilts::kRadius;
+ }
+
+ struct PotAndAbsConstants {
+ ::frc971::constants::PotAndAbsoluteEncoderZeroingConstants zeroing;
+ double potentiometer_offset;
+ };
+ PotAndAbsConstants elevator;
+ PotAndAbsConstants wrist;
+ PotAndAbsConstants stilts;
+
+ struct Intake {
+ ::frc971::constants::AbsoluteEncoderZeroingConstants zeroing;
+ };
+ Intake intake;
};
// Creates (once) a Values instance for ::aos::network::GetTeamNumber() and