Update intake and climber constants
Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: Ib7318810b000d3c1bc1a9a086af7048c3c9704da
diff --git a/y2024/constants.h b/y2024/constants.h
index 1d0f5d3..44c5c23 100644
--- a/y2024/constants.h
+++ b/y2024/constants.h
@@ -55,9 +55,7 @@
return 4096.0;
}
- static constexpr double kIntakePivotEncoderRatio() {
- return (16.0 / 64.0) * (18.0 / 62.0);
- }
+ static constexpr double kIntakePivotEncoderRatio() { return (15.0 / 24.0); }
static constexpr double kMaxIntakePivotEncoderPulsesPerSecond() {
return control_loops::superstructure::intake_pivot::kFreeSpeed /
@@ -67,20 +65,22 @@
kIntakePivotEncoderCountsPerRevolution();
}
- // TODO(Filip): Update climber values once we have them.
static constexpr double kClimberEncoderCountsPerRevolution() {
return 4096.0;
}
- static constexpr double kClimberEncoderRatio() {
- return (16.0 / 64.0) * (18.0 / 62.0);
+ static constexpr double kClimberEncoderRatio() { return (16.0 / 60.0); }
+
+ static constexpr double kClimberPotMetersPerRevolution() {
+ return 16 * 0.25 * 0.0254 * kClimberEncoderRatio();
}
- static constexpr double kClimberPotRatio() { return 16.0 / 64.0; }
+ static constexpr double kClimberEncoderMetersPerRevolution() {
+ return kClimberPotMetersPerRevolution();
+ }
- static constexpr double kClimberPotRadiansPerVolt() {
- return kClimberPotRatio() * (3.0 /*turns*/ / 5.0 /*volts*/) *
- (2 * M_PI /*radians*/);
+ static constexpr double kClimberPotMetersPerVolt() {
+ return kClimberPotMetersPerRevolution() * (10.0 /*turns*/ / 5.0 /*volts*/);
}
static constexpr double kMaxClimberEncoderPulsesPerSecond() {
diff --git a/y2024/constants/common.jinja2 b/y2024/constants/common.jinja2
index bcf0362..cb663fa 100644
--- a/y2024/constants/common.jinja2
+++ b/y2024/constants/common.jinja2
@@ -16,9 +16,8 @@
}
%}
-{# TODO(Filip): Update climber values #}
-{% set climber_encoder_ratio = (1.0 / 1.0) %}
-{% set climber_radius = 0.436496 %}
+{% set climber_encoder_ratio = (16.0 / 60.0) %}
+{% set climber_radius = 16.0 * 0.25 / 2.0 / pi %}
{%
set climber_zero = {
"average_filter_size": zeroing_sample_size,
diff --git a/y2024/control_loops/python/climber.py b/y2024/control_loops/python/climber.py
index 10aeff9..9dd347b 100644
--- a/y2024/control_loops/python/climber.py
+++ b/y2024/control_loops/python/climber.py
@@ -14,19 +14,19 @@
except gflags.DuplicateFlagError:
pass
-# TODO(Filip): Update information the climber when design is finalized.
kClimber = linear_system.LinearSystemParams(
name='Climber',
- motor=control_loop.Falcon(),
- G=(1.0 / 4.0) * (1.0 / 3.0) * (1.0 / 3.0),
- radius=22 * 0.25 / numpy.pi / 2.0 * 0.0254,
- mass=2.0,
+ motor=control_loop.KrakenFOC(),
+ G=(8. / 60.) * (16. / 60.),
+ radius=16 * 0.25 / numpy.pi / 2.0 * 0.0254,
+ mass=1.0,
q_pos=0.10,
q_vel=1.35,
kalman_q_pos=0.12,
kalman_q_vel=2.00,
kalman_q_voltage=35.0,
- kalman_r_position=0.05)
+ kalman_r_position=0.05,
+)
def main(argv):
diff --git a/y2024/control_loops/python/intake_pivot.py b/y2024/control_loops/python/intake_pivot.py
index f32aa8b..81a616f 100644
--- a/y2024/control_loops/python/intake_pivot.py
+++ b/y2024/control_loops/python/intake_pivot.py
@@ -20,8 +20,8 @@
kIntakePivot = angular_system.AngularSystemParams(
name='IntakePivot',
motor=control_loop.KrakenFOC(),
- G=(16.0 / 60.0) * (18.0 / 62.0) * (18.0 / 62.0) * (15.0 / 24.0),
- J=0.34, # Borrowed from 2022, 0.035 seems too low
+ G=(16. / 60.) * (18. / 62.) * (18. / 62.) * (15. / 24.),
+ J=0.25,
q_pos=0.40,
q_vel=20.0,
kalman_q_pos=0.12,
@@ -52,4 +52,4 @@
if __name__ == '__main__':
argv = FLAGS(sys.argv)
glog.init()
- sys.exit(main(argv))
\ No newline at end of file
+ sys.exit(main(argv))
diff --git a/y2024/wpilib_interface.cc b/y2024/wpilib_interface.cc
index b396426..8050b57 100644
--- a/y2024/wpilib_interface.cc
+++ b/y2024/wpilib_interface.cc
@@ -78,7 +78,7 @@
constexpr double kMaxBringupPower = 12.0;
double climber_pot_translate(double voltage) {
- return voltage * Values::kClimberPotRadiansPerVolt();
+ return voltage * Values::kClimberPotMetersPerVolt();
}
double drivetrain_velocity_translate(double in) {
@@ -140,7 +140,8 @@
CopyPosition(climber_encoder_, builder->add_climber(),
Values::kClimberEncoderCountsPerRevolution(),
- Values::kClimberEncoderRatio(), climber_pot_translate, true,
+ Values::kClimberEncoderMetersPerRevolution(),
+ climber_pot_translate, true,
robot_constants_->robot()
->climber_constants()
->potentiometer_offset());