Entfernungssensor

Mit Hilfe des  Entfernungssensors kann der Roboter Entfernungen zu Gegenständen messen, bzw. evtl. Hndernisse erkennen. Der Entfernungssensor ist ein Ultraschallsensor. Signale werden also am Gegenstand reflektiert und aus der Laufzeit wird die Entfernung berechnet. Insofern werden Gegenstände mit rauer oder weicher Oberfläche schlechter erkannt, als Gegenstände  mit glatter Oberfläche.

Im "Distance" - Modus misst der Sensor die Entfernung zu anderen Objekten. Die Entfernung wird in Meter angegeben. Die Messwerte leigen so zwischen 0,03 und 2,5.

Quelltext

Beispiel:

import lejos.hardware.Button;
import lejos.hardware.lcd.LCD;
import lejos.hardware.port.SensorPort;
import lejos.hardware.sensor.EV3UltrasonicSensor;
import lejos.utility.Delay;

public class MeinRoboter {

	EV3UltrasonicSensor entfernungsSensor;
	float[] entfernung;

	MeinRoboter() {
		entfernungsSensor = new EV3UltrasonicSensor(SensorPort.S4);
		entfernungsSensor.setCurrentMode("Distance");
		entfernung = new float[entfernungsSensor.sampleSize()];
	}

	public static void main(String[] args) {
		MeinRoboter m = new MeinRoboter();
		while (Button.ESCAPE.isUp()) {
			m.entfernungsSensor.fetchSample(m.entfernung, 0);
			LCD.drawString(String.valueOf(m.entfernung[0]), 0, 1);
			Delay.msDelay(500);
			LCD.clear();
		}
	}
}

Aufgabe

  1. Teste die Genauigkeit und die Fehlerhäufigkeit des Entfernungssensors:
    • Bestimme die größte bzw. kleinste Entfernung, die man mit dem Entfernungssensor messen kann. Überprüfe die Messung mit Hilfe eines Meterstabes.
    • In welchem Winkelbereich (horizontal und vertikal) kann der Entfernungssensor Entfernungen noch richtig messen?
  2. Programmiere einen Roboter, der geradeaus fährt und
    • vor einer Wand im Abstand von 20 cm anhält,
    • vor einer Wand im Abstand von 20 cm anhält, sich abwendet und bis zum nächsten Hinderniss weiterfährt.
  3. Der Roboter soll sich langsam auf der Stelle drehen, wenn er ein Objekt erkennt soll er stehenbleiben und dann auf das Objekt zufahren.