if (vision != null && visionEnabled && visionEnableTimer.hasElapsed(5)) {
vision.updateOdometry(poseEstimator, time -> getPoseAt(time).getRotation().getRadians(), slipped);
- double currentGyroYaw = gyroInputs.yawPosition.getRadians();
- Logger.recordOutput("GyroBias/CurrentGyroYaw", currentGyroYaw);
- Logger.recordOutput("GyroBias/SampleCount", gyroBiasEstimator.getSampleCount());
- Logger.recordOutput("GyroBias/CanSeeTag", vision.canSeeTag());
-
-
if (vision.canSeeTag()) {
slipped = false;
modulePoses.reset();
+ double currentGyroYaw = gyroInputs.yawPosition.getRadians();
+
// to compare bias
ArrayList<EstimatedRobotPose> visionPoses = vision.getEstimatedPoses(getPose());
if (!Double.isNaN(gyroYawAtTimestamp)) {
- // Log gyro and vision yaw data for debugging
- Logger.recordOutput("GyroBias GyroYaw", gyroYawAtTimestamp);
- Logger.recordOutput("GyroBias VisionYaw", visionYaw);
-
// use weighted observation
gyroBiasEstimator.addObservation(visionYaw, gyroYawAtTimestamp, 1.0);
}
if (gyroBiasEstimator.getSampleCount() >= GyroBiasConstants.MIN_SAMPLES) {
double fullBias = gyroBiasEstimator.getAndResetBias();
double bias = gyroBiasEstimator.applyPartialCorrection(fullBias);
-
- Logger.recordOutput("GyroBias CalculatedBias", bias);
-
if (Math.abs(bias) > GyroBiasConstants.MIN_CORRECTION_RAD) {
gyroIO.setYaw(new Rotation2d(currentGyroYaw + bias));
resetOdometry(