hopefully fixed the PinpointLocalizer
This commit is contained in:
@ -44,7 +44,6 @@ import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.Vector;
|
|||||||
*/
|
*/
|
||||||
public class PinpointLocalizer extends Localizer {
|
public class PinpointLocalizer extends Localizer {
|
||||||
private HardwareMap hardwareMap;
|
private HardwareMap hardwareMap;
|
||||||
private Pose startPose;
|
|
||||||
private GoBildaPinpointDriver odo;
|
private GoBildaPinpointDriver odo;
|
||||||
private double previousHeading;
|
private double previousHeading;
|
||||||
private double totalHeading;
|
private double totalHeading;
|
||||||
@ -84,7 +83,7 @@ public class PinpointLocalizer extends Localizer {
|
|||||||
|
|
||||||
setStartPose(setStartPose);
|
setStartPose(setStartPose);
|
||||||
totalHeading = 0;
|
totalHeading = 0;
|
||||||
previousHeading = startPose.getHeading();
|
previousHeading = setStartPose.getHeading();
|
||||||
|
|
||||||
resetPinpoint();
|
resetPinpoint();
|
||||||
}
|
}
|
||||||
@ -97,9 +96,7 @@ public class PinpointLocalizer extends Localizer {
|
|||||||
@Override
|
@Override
|
||||||
public Pose getPose() {
|
public Pose getPose() {
|
||||||
Pose2D rawPose = odo.getPosition();
|
Pose2D rawPose = odo.getPosition();
|
||||||
Pose pose = new Pose(rawPose.getX(DistanceUnit.INCH), rawPose.getY(DistanceUnit.INCH), rawPose.getHeading(AngleUnit.RADIANS));
|
return new Pose(rawPose.getX(DistanceUnit.INCH), rawPose.getY(DistanceUnit.INCH), rawPose.getHeading(AngleUnit.RADIANS));
|
||||||
|
|
||||||
return MathFunctions.addPoses(startPose, MathFunctions.rotatePose(pose, startPose.getHeading(), false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -127,13 +124,15 @@ public class PinpointLocalizer extends Localizer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This sets the start pose. Changing the start pose should move the robot as if all its
|
* This sets the start pose. Since nobody should be using this after the robot has begun moving,
|
||||||
* previous movements were displacing it from its new start pose.
|
* and due to issues with the PinpointLocalizer, this is functionally the same as setPose(Pose).
|
||||||
*
|
*
|
||||||
* @param setStart the new start pose
|
* @param setStart the new start pose
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setStartPose(Pose setStart) {startPose = setStart;}
|
public void setStartPose(Pose setStart) {
|
||||||
|
odo.setPosition(new Pose2D(DistanceUnit.INCH, setStart.getX(), setStart.getY(), AngleUnit.RADIANS, setStart.getHeading()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This sets the current pose estimate. Changing this should just change the robot's current
|
* This sets the current pose estimate. Changing this should just change the robot's current
|
||||||
@ -144,8 +143,7 @@ public class PinpointLocalizer extends Localizer {
|
|||||||
@Override
|
@Override
|
||||||
public void setPose(Pose setPose) {
|
public void setPose(Pose setPose) {
|
||||||
resetPinpoint();
|
resetPinpoint();
|
||||||
Pose setPinpointPose = MathFunctions.subtractPoses(setPose, startPose);
|
odo.setPosition(new Pose2D(DistanceUnit.INCH, setPose.getX(), setPose.getY(), AngleUnit.RADIANS, setPose.getHeading()));
|
||||||
odo.setPosition(new Pose2D(DistanceUnit.INCH, setPinpointPose.getX(), setPinpointPose.getY(), AngleUnit.RADIANS, setPinpointPose.getHeading()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user