Bringup progress
Here's how far I got bringing the robot up. Turret needs to be
re-calibrated again, it keeps slipping.
Change-Id: Idf8cb73973434cf9c64fd737852f1b3092b79c75
Signed-off-by: milind-u <milind.upadhyay@gmail.com>
diff --git a/y2022/constants.cc b/y2022/constants.cc
index cab73e2..7162dfa 100644
--- a/y2022/constants.cc
+++ b/y2022/constants.cc
@@ -68,7 +68,7 @@
auto *const turret_params = &turret->subsystem_params;
turret_params->zeroing_voltage = 4.0;
- turret_params->operating_voltage = 8.0;
+ turret_params->operating_voltage = 4.0;
turret_params->zeroing_profile_params = {0.5, 2.0};
turret_params->default_profile_params = {15.0, 40.0};
turret_params->range = Values::kTurretRange();
@@ -161,9 +161,9 @@
intake_back->subsystem_params.zeroing_constants
.measured_absolute_position = 0.280099007470002;
- turret->potentiometer_offset = -9.99970387166721;
+ turret->potentiometer_offset = -9.99970387166721 + 0.06415943;
turret->subsystem_params.zeroing_constants.measured_absolute_position =
- 0.638321248163561;
+ 0.587661064668491;
flipper_arm_left->potentiometer_offset = -6.4;
flipper_arm_right->potentiometer_offset = 5.66;
diff --git a/y2022/constants.h b/y2022/constants.h
index 6d91083..494ca3d 100644
--- a/y2022/constants.h
+++ b/y2022/constants.h
@@ -152,8 +152,8 @@
}
// Flipper arms
- static constexpr double kFlipperArmSupplyCurrentLimit() { return 30.0; }
- static constexpr double kFlipperArmStatorCurrentLimit() { return 40.0; }
+ static constexpr double kFlipperArmSupplyCurrentLimit() { return 40.0; }
+ static constexpr double kFlipperArmStatorCurrentLimit() { return 60.0; }
// Voltage to open the flippers for firing
static constexpr double kFlipperOpenVoltage() { return 3.0; }
@@ -175,7 +175,7 @@
// If the flippers took more than this amount of time to open for firing,
// reseat the ball
static constexpr std::chrono::milliseconds kFlipperOpeningTimeout() {
- return std::chrono::milliseconds(250);
+ return std::chrono::milliseconds(1000);
}
// Don't use flipper velocity readings more than this amount of time in the
// past
@@ -220,7 +220,7 @@
return ::frc971::constants::Range{
.lower_hard = -1.0,
.upper_hard = 2.0,
- .lower = -0.90,
+ .lower = -0.91,
.upper = 1.57,
};
}
diff --git a/y2022/control_loops/python/catapult.py b/y2022/control_loops/python/catapult.py
index ce7496a..ad0e25a 100755
--- a/y2022/control_loops/python/catapult.py
+++ b/y2022/control_loops/python/catapult.py
@@ -41,8 +41,8 @@
J_cup = M_cup * lever**2.0 + M_cup * (ball_diameter / 2.)**2.0
-J = (J_ball + J_bar + J_cup * 1.5)
-JEmpty = (J_bar + J_cup * 1.5)
+J = (0.6 * J_ball + J_bar + J_cup * 0.0)
+JEmpty = (J_bar + J_cup * 0.0)
kCatapultWithBall = catapult_lib.CatapultParams(
name='Catapult',
@@ -52,14 +52,14 @@
radius=lever,
q_pos=2.8,
q_vel=20.0,
- kalman_q_pos=0.12,
+ kalman_q_pos=0.01,
kalman_q_vel=1.0,
kalman_q_voltage=1.5,
- kalman_r_position=0.05)
+ kalman_r_position=0.001)
kCatapultEmpty = catapult_lib.CatapultParams(
name='Catapult',
- motor=AddResistance(control_loop.NMotor(control_loop.Falcon(), 2), 0.03),
+ motor=AddResistance(control_loop.NMotor(control_loop.Falcon(), 2), 0.02),
G=G,
J=JEmpty,
radius=lever,
diff --git a/y2022/control_loops/superstructure/catapult/catapult.cc b/y2022/control_loops/superstructure/catapult/catapult.cc
index adc13c7..b99f59b 100644
--- a/y2022/control_loops/superstructure/catapult/catapult.cc
+++ b/y2022/control_loops/superstructure/catapult/catapult.cc
@@ -392,7 +392,7 @@
case CatapultState::RESETTING:
if (catapult_.controller().R(1, 0) > 0.0) {
- catapult_.AdjustProfile(7.0, 500.0);
+ catapult_.AdjustProfile(7.0, 1000.0);
} else {
catapult_state_ = CatapultState::PROFILE;
}
diff --git a/y2022/control_loops/superstructure/superstructure.cc b/y2022/control_loops/superstructure/superstructure.cc
index b9e0698..c93165d 100644
--- a/y2022/control_loops/superstructure/superstructure.cc
+++ b/y2022/control_loops/superstructure/superstructure.cc
@@ -253,8 +253,9 @@
const double flipper_open_position =
(flippers_open_ ? constants::Values::kReseatFlipperPosition()
: constants::Values::kFlipperOpenPosition());
+
+ // TODO(milind): add left arm back once it's fixed
flippers_open_ =
- position->flipper_arm_left()->encoder() >= flipper_open_position &&
position->flipper_arm_right()->encoder() >= flipper_open_position;
if (flippers_open_) {
diff --git a/y2022/control_loops/superstructure/superstructure_lib_test.cc b/y2022/control_loops/superstructure/superstructure_lib_test.cc
index cd5929b..c5eb110 100644
--- a/y2022/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2022/control_loops/superstructure/superstructure_lib_test.cc
@@ -818,7 +818,7 @@
EXPECT_EQ(superstructure_output_fetcher_->roller_voltage_front(), 0.0);
EXPECT_EQ(superstructure_output_fetcher_->roller_voltage_back(), 0.0);
- RunFor(chrono::seconds(1));
+ RunFor(chrono::seconds(2));
// Make sure that we are still transferring and the front transfer rollers
// still have a ball. The turret should now be at the loading position and the
@@ -1179,8 +1179,7 @@
goal_builder.add_auto_aim(true);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
// Give it time to stabilize.
diff --git a/y2022/joystick_reader.cc b/y2022/joystick_reader.cc
index 3126150..0065db7 100644
--- a/y2022/joystick_reader.cc
+++ b/y2022/joystick_reader.cc
@@ -39,9 +39,10 @@
// TODO(henry) put actually button locations here
// TODO(milind): integrate with shooting statemachine and aimer
+#if 0
const ButtonLocation kCatapultPos(4, 3);
const ButtonLocation kFire(3, 4);
-const ButtonLocation kFixedTurret(3, 1);
+const ButtonLocation kTurret(4, 15);
const ButtonLocation kIntakeFrontOut(4, 10);
const ButtonLocation kIntakeBackOut(4, 9);
@@ -49,6 +50,19 @@
const ButtonLocation kRedLocalizerReset(3, 13);
const ButtonLocation kBlueLocalizerReset(3, 14);
const ButtonLocation kLocalizerReset(3, 8);
+#else
+
+const ButtonLocation kCatapultPos(4, 3);
+const ButtonLocation kFire(4, 1);
+const ButtonLocation kTurret(4, 15);
+
+const ButtonLocation kIntakeFrontOut(4, 10);
+const ButtonLocation kIntakeBackOut(4, 9);
+
+const ButtonLocation kRedLocalizerReset(3, 13);
+const ButtonLocation kBlueLocalizerReset(3, 14);
+const ButtonLocation kLocalizerReset(3, 8);
+#endif
class Reader : public ::frc971::input::ActionJoystickInput {
public:
@@ -141,17 +155,17 @@
setpoint_fetcher_.Fetch();
// Default to the intakes in
- double intake_front_pos = 1.57;
- double intake_back_pos = 1.57;
+ double intake_front_pos = 1.47;
+ double intake_back_pos = 1.47;
double transfer_roller_speed = 0.0;
double roller_front_speed = 0.0;
double roller_back_speed = 0.0;
- double turret_pos = 1.5;
+ double turret_pos = 0.0;
- double catapult_pos = 0.3;
- double catapult_speed = 10.0;
+ double catapult_pos = 0.03;
+ double catapult_speed = 18.0;
double catapult_return_pos = 0.0;
bool fire = false;
@@ -166,12 +180,18 @@
BlueResetLocalizer();
}
+ if (data.IsPressed(kTurret)) {
+ turret_pos = -1.5;
+ } else {
+ turret_pos = 0.0;
+ }
+
// Keep the catapult return position at the shot one if kCatapultPos is
// pressed
if (data.IsPressed(kCatapultPos)) {
catapult_return_pos = 0.3;
} else {
- catapult_return_pos = -0.90;
+ catapult_return_pos = -0.908;
}
// Extend the intakes and spin the rollers
@@ -212,7 +232,7 @@
catapult_return_offset =
CreateStaticZeroingSingleDOFProfiledSubsystemGoal(
*builder.fbb(), catapult_return_pos,
- frc971::CreateProfileParameters(*builder.fbb(), 9.0, 40.0));
+ frc971::CreateProfileParameters(*builder.fbb(), 9.0, 50.0));
superstructure::CatapultGoal::Builder catapult_builder =
builder.MakeBuilder<superstructure::CatapultGoal>();