Fix all the climber signs and make them all work
Now that the HW exists, let's do it. Zero is all the way down against
the hard stop.
Change-Id: I8661c25e6ce8badab26a6d1b642bcc9d754d4878
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/y2022/constants.cc b/y2022/constants.cc
index 2e7c5a9..0b4a591 100644
--- a/y2022/constants.cc
+++ b/y2022/constants.cc
@@ -88,7 +88,7 @@
climber->subsystem_params.zeroing_voltage = 3.0;
climber->subsystem_params.operating_voltage = 12.0;
climber->subsystem_params.zeroing_profile_params = {0.5, 0.1};
- climber->subsystem_params.default_profile_params = {6.0, 1.0};
+ climber->subsystem_params.default_profile_params = {5.0, 1.0};
climber->subsystem_params.range = Values::kClimberRange();
climber->subsystem_params.make_integral_loop =
control_loops::superstructure::climber::MakeIntegralClimberLoop;
@@ -162,7 +162,7 @@
break;
case kCompTeamNumber:
- climber->potentiometer_offset = 0.0;
+ climber->potentiometer_offset = -0.0463847608752;
intake_front->potentiometer_offset = 2.79628370453323;
intake_front->subsystem_params.zeroing_constants
diff --git a/y2022/constants.h b/y2022/constants.h
index 21ea7a4..2c0c5a1 100644
--- a/y2022/constants.h
+++ b/y2022/constants.h
@@ -45,7 +45,7 @@
// Climber
static constexpr ::frc971::constants::Range kClimberRange() {
return ::frc971::constants::Range{
- .lower_hard = -0.01, .upper_hard = 0.6, .lower = 0.0, .upper = 0.5};
+ .lower_hard = -0.01, .upper_hard = 0.55, .lower = 0.005, .upper = 0.48};
}
static constexpr double kClimberPotMetersPerRevolution() {
return 22 * 0.25 * 0.0254;
diff --git a/y2022/joystick_reader.cc b/y2022/joystick_reader.cc
index 8423f47..f73058b 100644
--- a/y2022/joystick_reader.cc
+++ b/y2022/joystick_reader.cc
@@ -57,6 +57,8 @@
const ButtonLocation kTurret(4, 15);
const ButtonLocation kAutoAim(4, 2);
+const ButtonLocation kClimberExtend(4, 6);
+
const ButtonLocation kIntakeFrontOut(4, 10);
const ButtonLocation kIntakeBackOut(4, 9);
const ButtonLocation kSpit(3, 3);
@@ -169,6 +171,8 @@
double turret_pos = 0.0;
+ double climber_position = 0.01;
+
double catapult_pos = 0.03;
double catapult_speed = 18.0;
double catapult_return_pos = 0.0;
@@ -185,6 +189,12 @@
BlueResetLocalizer();
}
+ if (data.IsPressed(kClimberExtend)) {
+ climber_position = 0.50;
+ } else {
+ climber_position = 0.01;
+ }
+
if (data.IsPressed(kTurret)) {
if (setpoint_fetcher_.get()) {
turret_pos = setpoint_fetcher_->turret();
@@ -273,6 +283,11 @@
*builder.fbb(), catapult_return_pos,
frc971::CreateProfileParameters(*builder.fbb(), 9.0, 50.0));
+ flatbuffers::Offset<StaticZeroingSingleDOFProfiledSubsystemGoal>
+ climber_offset = CreateStaticZeroingSingleDOFProfiledSubsystemGoal(
+ *builder.fbb(), climber_position,
+ frc971::CreateProfileParameters(*builder.fbb(), 1.0, 5.0));
+
superstructure::CatapultGoal::Builder catapult_builder =
builder.MakeBuilder<superstructure::CatapultGoal>();
catapult_builder.add_return_position(catapult_return_offset);
@@ -287,6 +302,7 @@
superstructure_goal_builder.add_intake_front(intake_front_offset);
superstructure_goal_builder.add_intake_back(intake_back_offset);
superstructure_goal_builder.add_turret(turret_offset);
+ superstructure_goal_builder.add_climber(climber_offset);
superstructure_goal_builder.add_catapult(catapult_offset);
superstructure_goal_builder.add_fire(fire);
diff --git a/y2022/wpilib_interface.cc b/y2022/wpilib_interface.cc
index 69883b4..f23d3e2 100644
--- a/y2022/wpilib_interface.cc
+++ b/y2022/wpilib_interface.cc
@@ -79,7 +79,7 @@
double climber_pot_translate(double voltage) {
return voltage * Values::kClimberPotRatio() *
- (10.0 /*turns*/ / 5.0 /*volts*/) *
+ (5.0 /*turns*/ / 5.0 /*volts*/) *
Values::kClimberPotMetersPerRevolution();
}
@@ -510,7 +510,7 @@
}
void Write(const superstructure::Output &output) override {
- WritePwm(output.climber_voltage(), climber_falcon_.get());
+ WritePwm(-output.climber_voltage(), climber_falcon_.get());
WritePwm(output.intake_voltage_front(), intake_falcon_front_.get());
WritePwm(output.intake_voltage_back(), intake_falcon_back_.get());