Add Teleop Gyro Lock

This commit is contained in:
HFocus
2018-03-05 20:52:31 -07:00
parent 6efa60ec6b
commit 9a896e2021
@@ -193,7 +193,8 @@ public class Drive extends Subsystem implements ControlLoopable
private AHRS gyroNavX; private AHRS gyroNavX;
private boolean useGyroLock; private boolean useGyroLock;
private double gyroLockAngleDeg; private double gyroLockAngleDeg;
private double kPGyro = 0.04; //private double kPGyro = 0.04;
private double kPGyro = 0.0625;
private boolean isCalibrating = false; private boolean isCalibrating = false;
private double gyroOffsetDeg = 0; private double gyroOffsetDeg = 0;
@@ -621,12 +622,30 @@ public class Drive extends Subsystem implements ControlLoopable
else if (controlMode == DriveControlMode.CLIMB) { else if (controlMode == DriveControlMode.CLIMB) {
m_moveOutput = climbSpeed; m_moveOutput = climbSpeed;
} }
m_steerOutput = adjustForSensitivity(m_steerScale, m_steerTrim,
m_steerInput, m_steerNonLinear, STEER_NON_LINEARITY); /*
if (m_steerInput == 0.0 && m_moveInput != 0.0 && !useGyroLock) { // If just stopped turning, turn on gyro lock
setGyroLock(true, false);
} else if (m_steerInput != 0.0 && useGyroLock){ // If just started turning, turn off gyro lock
setGyroLock(false, false);
} */
if (useGyroLock) {
if ((m_moveInput == 0.0) || (m_steerInput != 0.0)) {
setGyroLock(false, false);
}
} else {
if ((m_moveInput != 0.0) && (m_steerInput == 0.0)) {
setGyroLock(true, false);
}
}
if (useGyroLock) { if (useGyroLock) {
double yawError = gyroLockAngleDeg - getGyroAngleDeg(); double yawError = gyroLockAngleDeg - getGyroAngleDeg();
m_steerOutput = kPGyro * yawError; m_steerOutput = kPGyro * yawError;
} else {
m_steerOutput = adjustForSensitivity(m_steerScale, m_steerTrim,
m_steerInput, m_steerNonLinear, STEER_NON_LINEARITY);
} }
m_drive.arcadeDrive(m_moveOutput, m_steerOutput*.85); m_drive.arcadeDrive(m_moveOutput, m_steerOutput*.85);