}
public Pose goTo(Point destination) {
Pose pose = poseProvider.getPose();
if (pilot instanceof RotatePilot) { // optimize for RotatePilot
float turnAngle = pose.angleTo(destination) - pose.getHeading();
while (turnAngle < -180)turnAngle += 360;
while (turnAngle > 180) turnAngle -= 360;
((RotatePilot) pilot).rotate(turnAngle);
pilot.travel(pose.distanceTo(destination));
} else {