public void run() {
		Robot.getInstance().getMotion().getPilot().rotate(odo.getPose().relativeBearing(pose.getLocation()), true);
		while(Robot.getInstance().getMotion().getPilot().isMoving()) {
			if(!getInterrupted()) {
				Thread.yield();
			}
			else
				break;
		}
		if(!getInterrupted()) {
			Robot.getInstance().getMotion().getPilot().travel(Robot.getInstance().getOdometryPoseProvider().getPose().distanceTo(pose.getLocation()), true);
			while(Robot.getInstance().getMotion().getPilot().isMoving()) {
				if(!getInterrupted()) {
					Thread.yield();
				}
				else
					break;
			}
			if(!getInterrupted()) {
				Robot.getInstance().getMotion().getPilot().rotate(pose.getHeading() - Robot.getInstance().getOdometryPoseProvider().getPose().getHeading(), true);
				while(Robot.getInstance().getMotion().getPilot().isMoving()) {
					if(!getInterrupted()) {
						Thread.yield();
					}
					else
						break;
				}
				if(!getInterrupted()) {
					Robot.getInstance().getMotion().setRunnableRobot(null);
					Robot.getInstance().warn(new Event(TypeEvent.STRAIGHTMOVE_END));
				}
				else
					Robot.getInstance().warn(new Event(TypeEvent.INTERRUPTED, TypeEvent.STRAIGHTMOVE_END.toString()));
			}
			else
				Robot.getInstance().warn(new Event(TypeEvent.INTERRUPTED, TypeEvent.STRAIGHTMOVE_END.toString()));
		}
		else
			Robot.getInstance().warn(new Event(TypeEvent.INTERRUPTED, TypeEvent.STRAIGHTMOVE_END.toString()));
	}