
6. hét – Haladó szenzorok
A 6. hét célja, hogy bemutassa a haladó szenzorok alkalmazását a robotokban, valamint azok programozását. Itt a fókusz a Camera (kamera), GPS, Compass, és InertialUnit (IMU) szenzorok használatán van, valamint a szenzorfúzió alapjainak megértésén. Ezen szenzorok integrálása lehetővé teszi a robot számára, hogy környezetét érzékelje, navigáljon, és pontos információkat nyújtson a helyzetéről és mozgásáról.
1. Camera használata
A robot kamera szenzora lehetővé teszi a környezetének vizuális érzékelését. A kamera segítségével képeket vagy videókat készíthetünk, amelyeket később feldolgozhatunk a robot navigálásához, objektumok felismeréséhez vagy más feladatokhoz.
Hogyan működik a Camera?
-
A Webots szimulátorban a kamera szögletes látószöggel rendelkezik, és folyamatosan képeket készít, amelyeket ki tudunk olvasni.
-
A kamera képeit általában RGB színskálán (vörös, zöld, kék) tárolja.
Példa kód kamera használatához (Webots Python):
from controller import Robot, Camera
# Robot vezérlő példány létrehozása
robot = Robot()
# Alap időintervallum
timestep = int(robot.getBasicTimeStep())
# Kamera inicializálása
camera = robot.getCamera('camera') # A kamera neve
camera.enable(timestep) # Kamera engedélyezése, hogy folyamatosan képeket készítsen
# Végtelen ciklus a kamera képeinek kiolvasására
while robot.step(timestep) != -1:
image = camera.getImage() # A kamera képe
width = camera.getWidth() # A kép szélessége
height = camera.getHeight() # A kép magassága
# A képet képpontok tömbjeként lehet kiolvasni
pixel = camera.getImageArray() # Képpontok tömbje (RGB)
print(f"Image size: {width}x{height}")
-
A
getImageArray()
metódus segítségével a képpontok tömbjét tudjuk kiolvasni, amelyet további feldolgozásokra, például objektumfelismerésre használhatunk.
2. GPS és Compass
A GPS és Compass szenzorok lehetővé teszik a robot számára, hogy meghatározza a saját helyzetét és irányát. A GPS segít a földrajzi helymeghatározásban, míg a Compass a robot irányát határozza meg a térben.
GPS használata:
A GPS szenzor folyamatosan mérni tudja a robot pozícióját 3D térben (x, y, z koordináták).
Compass használata:
A Compass szenzor meghatározza a robot irányát (az északhoz viszonyítva). Ez különösen fontos akkor, ha a robotnak pontos irányt kell tartania egy adott cél felé.
Példa kód GPS és Compass használatára (Webots Python):
from controller import Robot, GPS, Compass
# Robot vezérlő példány létrehozása
robot = Robot()
# Alap időintervallum
timestep = int(robot.getBasicTimeStep())
# GPS és Compass inicializálása
gps = robot.getGPS('gps') # GPS szenzor
compass = robot.getCompass('compass') # Compass szenzor
# Engedélyezzük a GPS és Compass adatokat
gps.enable(timestep)
compass.enable(timestep)
# Végtelen ciklus a robot helyzetének és irányának kiolvasására
while robot.step(timestep) != -1:
# GPS koordináták kiolvasása
gps_coordinates = gps.getValues() # [x, y, z]
print(f"GPS Coordinates: {gps_coordinates}")
# Compass irány kiolvasása
compass_direction = compass.getValues() # [x, y, z] irányvektor
print(f"Compass Direction: {compass_direction}")
-
GPS a robot 3D pozícióját adja meg, míg a Compass az irányvektort adja meg, amely az északhoz viszonyított irányt jelzi.
3. InertialUnit (IMU)
Az IMU (Inertial Measurement Unit) egy olyan szenzor, amely gyorsulást, forgási sebességet és irányt mér. Az IMU használata lehetővé teszi a robot számára, hogy érzékelje saját mozgását és orientációját anélkül, hogy külső referenciapontokra lenne szüksége (mint a GPS vagy a Compass).
Hogyan működik az IMU?
-
Az IMU három fő komponensből áll: gyorsulásmérő (accelerometer), giroszkóp (gyroscope), és iránytű (magnetometer).
-
A gyorsulásmérő mérni tudja a robot gyorsulását három tengelyen (x, y, z).
-
A giroszkóp a robot forgási sebességét méri.
-
Az iránytű segítségével meghatározhatjuk a robot irányát a föld mágneses teréhez viszonyítva.
Példa kód IMU használatára (Webots Python):
from controller import Robot, InertialUnit
# Robot vezérlő példány létrehozása
robot = Robot()
# Alap időintervallum
timestep = int(robot.getBasicTimeStep())
# IMU inicializálása
imu = robot.getInertialUnit('inertial_unit') # IMU szenzor
imu.enable(timestep) # Engedélyezzük az IMU működését
# Végtelen ciklus az IMU adatainak kiolvasására
while robot.step(timestep) != -1:
imu_data = imu.getRollPitchYaw() # [roll, pitch, yaw] adatok
print(f"IMU Data: Roll={imu_data[0]}, Pitch={imu_data[1]}, Yaw={imu_data[2]}")
- Tanár: User Admin