public void action() {
		
		//try to follow near the wall
		
		PilotProps pp = new PilotProps();
    	try {
			pp.loadPersistentValues();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	float wheelDiameter = Float.parseFloat(pp.getProperty(PilotProps.KEY_WHEELDIAMETER, "4.0"));
    	float trackWidth = Float.parseFloat(pp.getProperty(PilotProps.KEY_TRACKWIDTH, "18.0"));
    	boolean reverse = Boolean.parseBoolean(pp.getProperty(PilotProps.KEY_REVERSE,"false"));
    	
    	DifferentialPilot robot = new DifferentialPilot(wheelDiameter,trackWidth,leftMotor,rightMotor,reverse);
			
		if(sensorThread.getSonarDistance1() < sensorThread.getSonarDistance2()){
			do{
				robot.rotate(5);
			}
			while(sensorThread.getSonarDistance2()-sensorThread.getSonarDistance1() > ERROR);
		}else if(sensorThread.getSonarDistance2() < sensorThread.getSonarDistance1()){
			do{
				robot.rotate(-5);
			}
			while(sensorThread.getSonarDistance2()-sensorThread.getSonarDistance1() > ERROR);
		}
		
		while(rightMotor.isMoving() || leftMotor.isMoving()) {
			if(supressed) {
				controller.endAction();
				return;
			}
			
			Thread.yield();
		}
		
		controller.endAction();
	}