Fixed drivetrain so it doesn't use the battery voltage when shifting.
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index bfdd924..88dc242 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -542,24 +542,15 @@
} else {
// Any motor is not in gear. Speed match.
::Eigen::Matrix<double, 1, 1> R_left;
- R_left(0, 0) = left_motor_speed;
- const double wiggle =
- (static_cast<double>((counter_ % 4) / 2) - 0.5) * 3.5;
-
- loop_->U(0, 0) =
- ::aos::Clip((R_left / Kv)(0, 0) + wiggle, -position_.battery_voltage,
- position_.battery_voltage);
- right_cim_->X_hat = right_cim_->A() * right_cim_->X_hat +
- right_cim_->B() * loop_->U(0, 0);
-
::Eigen::Matrix<double, 1, 1> R_right;
+ R_left(0, 0) = left_motor_speed;
R_right(0, 0) = right_motor_speed;
- loop_->U(1, 0) =
- ::aos::Clip((R_right / Kv)(0, 0) + wiggle, -position_.battery_voltage,
- position_.battery_voltage);
- right_cim_->X_hat = right_cim_->A() * right_cim_->X_hat +
- right_cim_->B() * loop_->U(1, 0);
- loop_->U *= 12.0 / position_.battery_voltage;
+
+ const double wiggle =
+ (static_cast<double>((counter_ % 4) / 4.0) - 0.5) * 4.0;
+
+ loop_->U(0, 0) = ::aos::Clip((R_left / Kv)(0, 0) + wiggle, -12.0, 12.0);
+ loop_->U(1, 0) = ::aos::Clip((R_right / Kv)(0, 0) + wiggle, -12.0, 12.0);
}
}
@@ -649,8 +640,10 @@
dt_closedloop.SendMotors(output);
} else {
dt_openloop.SendMotors(output);
- dt_closedloop.SetExternalMotors(output->left_voltage,
- output->right_voltage);
+ if (output) {
+ dt_closedloop.SetExternalMotors(output->left_voltage,
+ output->right_voltage);
+ }
dt_closedloop.Update(output == NULL);
}
@@ -668,7 +661,6 @@
status->is_done = done;
status->robot_speed = dt_closedloop.GetEstimatedRobotSpeed();
}
-
}
} // namespace control_loops