Zum Inhalt springen
ErebusDoku
v26
Deutsch
Dies ist die Dokumentation für Erebus v26, das nicht mehr die aktuelle Version ist.Zur aktuellen Dokumentation

Abstandssensor

Ein Abstandssensor misst die Entfernung in Metern zum ersten Objekt vor ihm, bis zu 0,8 m. Der Starter-Roboter hat drei davon: leftDist, frontDist und rightDist, die nach links, nach vorne und nach rechts schauen.

Drei Abstandssensoren von oben gesehen, nach links, vorne und rechts gerichtet

from controller import Robot
robot = Robot()
timeStep = int(robot.getBasicTimeStep())
frontDist = robot.getDevice("frontDist") # Get the sensor by name
frontDist.enable(timeStep) # Enable it
while robot.step(timeStep) != -1:
print("Front:", round(frontDist.getValue(), 3), "m")

Eine Kachel ist 12 cm breit. Steht der Roboter also in der Mitte einer Kachel, ist eine Wand an seiner Seite etwa 5 cm entfernt. Dieses Programm prüft die drei Sensoren und gibt aus, welche davon eine Wand sehen:

from controller import Robot
robot = Robot()
timeStep = int(robot.getBasicTimeStep())
# Keep the sensors in a dictionary, to use them by name
sensors = {}
for name in ["leftDist", "frontDist", "rightDist"]:
sensors[name] = robot.getDevice(name)
sensors[name].enable(timeStep)
WALL = 0.07 # Closer than 7 cm counts as a wall next to the robot
while robot.step(timeStep) != -1:
walls = [name for name, sensor in sensors.items() if sensor.getValue() < WALL]
print("Walls:", walls)

Die Sensoren messen von ihrer Position am Roboter aus, nicht von seiner Mitte. Gib die Werte neben einer Wand aus, um deine eigenen Grenzwerte festzulegen.