เซนเซอร์วัดระยะ
เซนเซอร์วัดระยะจะวัดระยะห่างเป็นเมตร ถึงวัตถุชิ้นแรกที่อยู่ด้านหน้า ได้ไกลสุด 0.8 เมตร หุ่นยนต์เริ่มต้นมีเซนเซอร์นี้สามตัว ได้แก่ leftDist, frontDist และ rightDist ซึ่งหันไปทางซ้าย ด้านหน้า และขวา

การอ่านค่าเซนเซอร์
หัวข้อที่มีชื่อว่า “การอ่านค่าเซนเซอร์”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;}การหาผนัง
หัวข้อที่มีชื่อว่า “การหาผนัง”ช่อง (tile) หนึ่งช่องกว้าง 12 ซม. ดังนั้นเมื่อหุ่นยนต์อยู่กลางช่อง ผนังที่อยู่ด้านข้างจะห่างประมาณ 5 ซม. โปรแกรมนี้ตรวจสอบเซนเซอร์ทั้งสามตัว และพิมพ์ว่าตัวใดเห็นผนัง:
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;}เซนเซอร์วัดระยะจากตำแหน่งที่ติดตั้งอยู่บนหุ่นยนต์ ไม่ใช่จากจุดกึ่งกลางของหุ่นยนต์ ลองพิมพ์ค่าออกมาเมื่ออยู่ข้างผนัง เพื่อเลือกค่าเกณฑ์ (threshold) ของคุณเอง
