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.

Einen Sensor auslesen
Abschnitt betitelt „Einen Sensor auslesen“from controller import Robot
robot = Robot()timeStep = int(robot.getBasicTimeStep())
frontDist = robot.getDevice("frontDist") # Get the sensor by namefrontDist.enable(timeStep) # Enable it
while robot.step(timeStep) != -1: print("Front:", round(frontDist.getValue(), 3), "m")#include <iostream>#include <webots/Robot.hpp>#include <webots/DistanceSensor.hpp>
using namespace webots;using namespace std;
int main() { Robot *robot = new Robot(); int timeStep = (int)robot->getBasicTimeStep();
DistanceSensor *frontDist = robot->getDistanceSensor("frontDist"); // Get the sensor by name frontDist->enable(timeStep); // Enable it
while (robot->step(timeStep) != -1) cout << "Front: " << frontDist->getValue() << " m" << endl;
delete robot; return 0;}Wände finden
Abschnitt betitelt „Wände finden“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 namesensors = {}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)#include <iostream>#include <string>#include <vector>#include <webots/Robot.hpp>#include <webots/DistanceSensor.hpp>
using namespace webots;using namespace std;
int main() { Robot *robot = new Robot(); int timeStep = (int)robot->getBasicTimeStep();
vector<string> names = {"leftDist", "frontDist", "rightDist"}; vector<DistanceSensor *> sensors; for (const string &name : names) { sensors.push_back(robot->getDistanceSensor(name)); sensors.back()->enable(timeStep); }
const double WALL = 0.07; // Closer than 7 cm counts as a wall next to the robot
while (robot->step(timeStep) != -1) { cout << "Walls:"; for (size_t i = 0; i < sensors.size(); i++) if (sensors[i]->getValue() < WALL) cout << " " << names[i]; cout << endl; }
delete robot; return 0;}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.
