Fix Xbox controller diagonals

- Add some Sysid data
- Make drive motors break in neutral
This commit is contained in:
nathanrsxtn
2022-01-29 14:49:18 -07:00
parent a69de7795d
commit fb1afe0f62
12 changed files with 114441 additions and 55 deletions
@@ -1,13 +1,20 @@
package frc4388.utility.controller;
import edu.wpi.first.math.MathUtil;
import frc4388.robot.Constants;
import static frc4388.robot.Constants.OIConstants.AXIS_DEADBAND;
import edu.wpi.first.math.geometry.Translation2d;
public class DeadbandedRawXboxController extends RawXboxController {
public DeadbandedRawXboxController(int port) { super(port); }
@Override public double getLeftX() { return applyDeadband(super.getLeftX()); }
@Override public double getLeftY() { return applyDeadband(super.getLeftY()); }
@Override public double getRightX() { return applyDeadband(super.getRightX()); }
@Override public double getRightY() { return applyDeadband(super.getRightY()); }
private static double applyDeadband(double value) { return MathUtil.applyDeadband(value, Constants.OIConstants.AXIS_DEADBAND); }
@Override public double getLeftX() { return skewToDeadzonedCircle(super.getLeftX(), super.getLeftY()).getX(); }
@Override public double getLeftY() { return skewToDeadzonedCircle(super.getLeftX(), super.getLeftY()).getY(); }
@Override public double getRightX() { return skewToDeadzonedCircle(super.getRightX(), super.getRightY()).getX(); }
@Override public double getRightY() { return skewToDeadzonedCircle(super.getRightX(), super.getRightY()).getY(); }
public static Translation2d skewToDeadzonedCircle(double x, double y) {
Translation2d translation2d = new Translation2d(x, y);
double magnitude = translation2d.getNorm();
if (magnitude >= 1) return translation2d.div(magnitude);
if (magnitude < AXIS_DEADBAND) return new Translation2d(0,0);
return translation2d;
}
}
@@ -1,14 +1,21 @@
package frc4388.utility.controller;
import edu.wpi.first.math.MathUtil;
import static frc4388.robot.Constants.OIConstants.AXIS_DEADBAND;
import edu.wpi.first.math.geometry.Translation2d;
import edu.wpi.first.wpilibj.XboxController;
import frc4388.robot.Constants;
public class DeadbandedXboxController extends XboxController {
public DeadbandedXboxController(int port) { super(port); }
@Override public double getLeftX() { return applyDeadband(super.getLeftX()); }
@Override public double getLeftY() { return applyDeadband(super.getLeftY()); }
@Override public double getRightX() { return applyDeadband(super.getRightX()); }
@Override public double getRightY() { return applyDeadband(super.getRightY()); }
private static double applyDeadband(double value) { return MathUtil.applyDeadband(value, Constants.OIConstants.AXIS_DEADBAND); }
@Override public double getLeftX() { return skewToDeadzonedCircle(super.getLeftX(), super.getLeftY()).getX(); }
@Override public double getLeftY() { return skewToDeadzonedCircle(super.getLeftX(), super.getLeftY()).getY(); }
@Override public double getRightX() { return skewToDeadzonedCircle(super.getRightX(), super.getRightY()).getX(); }
@Override public double getRightY() { return skewToDeadzonedCircle(super.getRightX(), super.getRightY()).getY(); }
public static Translation2d skewToDeadzonedCircle(double x, double y) {
Translation2d translation2d = new Translation2d(x, y);
double magnitude = translation2d.getNorm();
if (magnitude >= 1) return translation2d.div(magnitude);
if (magnitude < AXIS_DEADBAND) return new Translation2d(0,0);
return translation2d;
}
}