Látomás#
Bevezetés#
A VEX AIR drón két vizuális érzékelővel rendelkezik, amelyek érzékelik és követik az AprilTag azonosítókat. Ezek lehetővé teszik a drón számára, hogy elemezze a környezetét, kövesse a tárgyakat, és a detektált vizuális adatok alapján reagáljon.
Az alábbiakban felsoroljuk az összes elérhető blokkot:
Műveletek – A Vision-hírfolyam vezérlése és objektumadatok rögzítése.
objektumadatok lekérése — Rögzíti az AprilTag azonosítók adatait.
Beállítások – Állítsa be, hogy mely észlelt objektumokhoz férhessen hozzá.
Látás objektum elem beállítása — Kiválaszt egy adott objektumot az észlelt objektumok listájából.
Értékek — Objektum jelenlétének, osztályozásának és tulajdonságainak lekérése.
Létezik egy objektum a látómezőben — Jelzi, hogy észlelt-e egy objektumot.
A Vision objektum az AprilTag ID — Ellenőrzi, hogy egy észlelt AprilTag ID egyezik-e egy adott azonosítóval.
Látható objektumok száma — Megjeleníti az észlelt objektumok számát.
Vision objektum tulajdonság — Olyan részleteket kér le, mint például:
centerX és centerY — Középponti koordináták az érzékelő nézetében.
bearing — A tárgy szöge az elülső vizuális érzékelőhöz képest, vagy a drónnak a tárgy felé fordulásához szükséges fokok.
forgatás — Az objektum tájolása.
originX és originY — A bal felső sarok pozíciókoordinátái az érzékelő nézetében.
id — Egy AprilTag ID azonosítószáma.
Műveletek#
objektumadatok lekérése#
Az objektumadatok lekérése veremblokk kiszűri az adatokat a Vision Sensor keretéből. A Vision Sensorok képesek az AprilTag azonosítók észlelésére.
Az adathalmaz a 0 indexszel kezdődően, szélesség szerint a legnagyobbtól a legkisebbig rendezett objektumokat tárolja. Az egyes objektumok tulajdonságai a Vision object property blokk segítségével érhetők el. Ha nem található egyező objektum, akkor üres adathalmazt jelez a rendszer.
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
Paraméter |
Leírás |
|---|---|
aláírás |
Úgy szűri az adathalmazt, hogy csak az adott aláírás adatait tartalmazza. Az elérhető aláírás minden AprilTags. |
kamera |
A vizuális érzékelő az adatok lekéréséhez, akár előre, akár lefelé. |
Példa
amikor elindul
[Climb upward when an AprilTag ID is detected.]
felszállás [300] [mm v] magasságra ▶
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
ha <Vision objektum létezik?> akkor
emelkedés [fel v] irányba [200] [mm v] értékkel ▶
Beállítások#
Látás objektum beállítása#
A Vision objektumelem beállítása veremblokk beállítja, hogy az adathalmaz melyik elemét kell használni.
Vision objektum elemének beállítása [1] értékre
Paraméterek |
Leírás |
|---|---|
tétel |
Az adathalmazban használandó elem száma. |
Példa
amikor elindul
[Display the smallest-appearing AprilTag ID.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
ha <Vision objektum létezik?> akkor
Vision objektum elemének beállítása (Vision objektumok száma) értékre
(Vision objektum [azonosító v]) nyomtatása a konzolon ▶
Értékek#
Látásobjektum létezik#
A Létezik a látás objektum logikai blokkja jelzi, hogy a megadott látásérzékelő jelenleg érzékel-e objektumokat.
Igaz – A megadott vizuális érzékelő objektumot érzékel.
Hamis – A megadott vizuális érzékelő nem érzékel tárgyat.
<Vision objektum létezik?>
Paraméter |
Leírás |
|---|---|
Ennek a blokknak nincsenek paraméterei. |
Példa
amikor elindul
[Climb upward when an AprilTag ID is detected.]
felszállás [300] [mm v] magasságra ▶
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
ha <Vision objektum létezik?> akkor
emelkedés [fel v] irányba [200] [mm v] értékkel ▶
A Vision objektum az AprilTag ID.#
A Vision objektum egy AprilTag ID logikai blokk, amely azt jelenti, hogy az AprilTag ID egy adott azonosítószám-e.
Igaz — Az AprilTag azonosító a szám.
Hamis — Az AprilTag azonosító nem a szám.
<Vision object is AprilTag ID [1]>
Paraméterek |
Leírás |
|---|---|
AprilTag azonosítószám |
Az észlelt AprilTag azonosító számmal összehasonlítandó szám 0 és 37 között. |
Példa
amikor elindul
[Display when the target AprilTag ID is detected.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
ha <Vision objektum létezik?> akkor
ha <Vision object is AprilTag ID [21]> akkor
[Target found!] nyomtatása a konzolon ▶
vége
Látóobjektumok száma#
A Vision objektumok száma riporterblokk egész számként jelenti az adathalmazban észlelt objektumok számát.
(Vision objektumok száma)
Paraméterek |
Leírás |
|---|---|
Ennek a blokknak nincsenek paraméterei. |
Példa
amikor elindul
[Display how many AprilTag IDs are detected.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
(Vision objektumok száma) nyomtatása a konzolon ▶
várakozás [0.2] másodpercig
Látásobjektum tulajdonsága#
Minden objektumhoz több tulajdonság tartozik (lásd alább), melyek a get object data blokk használata után tárolódnak.
(Vision objektum [szélesség v])
Az id kivételével az összes tulajdonságérték a detektált objektum pozícióját, méretét, tájolását vagy irányát írja le a get object data blokk használata pillanatában. Ezeket az értékeket pixelben vagy fokban mérjük. Minden vizuális érzékelőnek más a felbontása:
Előre néző: 640 x 480 pixel
Lefelé néző: 640 x 400 pixel
Paraméter |
Leírás |
|---|---|
ingatlan |
Which property of the detected object to use: |
szélesség#
A width tulajdonság a detektált objektum szélességét adja meg pixelben, 1 és 640 közötti egész számként.
(Vision objektum [szélesség v])
Példa
amikor elindul
[Show if the AprilTag ID appears large or small.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
ha <Vision objektum létezik?> akkor
ha <(Vision objektum [szélesség v]) [math_greater_than v] [100]> akkor
[Large] nyomtatása a konzolon ▶
különben
[Small] nyomtatása a konzolon ▶
vége
vége
várakozás [0.2] másodpercig
magasság#
A height tulajdonság a detektált objektum magasságát adja meg pixelben, 1 és 480 közötti egész számként.
(Vision objektum [magasság v])
Példa
amikor elindul
[Show if the AprilTag ID appears large or small.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
ha <Vision objektum létezik?> akkor
ha <(Vision objektum [magasság v]) [math_greater_than v] [100]> akkor
[Large] nyomtatása a konzolon ▶
különben
[Small] nyomtatása a konzolon ▶
vége
vége
várakozás [0.2] másodpercig
középX#
A centerX tulajdonság a detektált objektum középpontjának x koordinátáját adja meg pixelben, 1 és 640 közötti egész számként.
(Vision objektum [középX v])
Példa
amikor elindul
[Show if an AprilTag ID is to the left or the right of the camera.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
ha <Vision objektum létezik?> akkor
ha <(Vision objektum [középX v]) [math_less_than v] [320]> akkor
[To the left] nyomtatása a konzolon ▶
különben
[To the right] nyomtatása a konzolon ▶
vége
vége
várakozás [0.2] másodpercig
közép Y#
A centerY tulajdonság a detektált objektum középpontjának y koordinátáját adja meg pixelekben, 1 és 480 közötti egész számként.
(Vision objektum [középY v])
Példa
amikor elindul
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
felszállás [800] [mm v] magasságra ▶
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
ha <Vision objektum létezik?> akkor
ha <(Vision objektum [középY v]) [math_less_than v] [240]> akkor
[Below the target!] nyomtatása a konzolon ▶
különben
[Above the target!] nyomtatása a konzolon ▶
vége
különben
[No target found!] nyomtatása a konzolon ▶
hordozó#
A bearing tulajdonság egy szöget jelez, amely jelzi az objektum drónhoz viszonyított helyzetét. A viselkedés attól függ, hogy melyik vizuális érzékelőt használják.
A 0° érték azt jelzi, hogy az objektum közepe és az érzékelő egy vonalban vannak. A pozitív értékek azt jelentik, hogy az objektum jobbra, míg a negatív értékek azt jelentik, hogy az objektum balra van.
Érzékelő |
Visszaküldések |
|---|---|
Lefelé |
Hány fokban kell a drón elejének elfordulnia, hogy a tárgy közepéhez igazodjon, -180º és 180º között. |
Előre |
Az objektumnak a vizuális érzékelő közepétől balra vagy jobbra eltolt szöge –180º és 180º között. |
(Vision objektum [irányítási szög v])
Példák
amikor elindul
[Align the front of the drone to an AprilTag ID.]
fordulási sebesség beállítása (15)%
felszállás [500] [mm v] magasságra ▶
örökre
[összes AprilTag v] adatok lekérése a Vision [lefelé v] kamerából
ha <Vision objektum létezik?> akkor
ha <[-20] [math_less_than v] (Vision objektum [irányítási szög v]) [math_less_than v] [20]> akkor
[Hover once sensor is centered on the AprilTag ID.]
lebegés
[siker v] hang lejátszása ▶
különben ha <(Vision objektum [irányítási szög v]) [math_less_than v] [-21]> akkor
fordulás [balra v]
különben
fordulás [jobbra v]
forgás#
A rotation tulajdonság az észlelt AprilTag azonosító tájolását jelenti egész számként, 1 és 359 közötti fokban.
(Vision objektum [forgás v])
Példa
amikor elindul
[Turn left or right based on the rotation of an AprilTag ID.]
felszállás [1000] [mm v] magasságra ▶
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
ha <Vision objektum létezik?> akkor
ha <[240] [math_less_than v] (Vision objektum [forgás v]) [math_less_than v] [300]> akkor
fordulás [balra v] irányba [90] fokkal ▶
különben ha <[60] [math_less_than v] (Vision objektum [forgás v]) [math_less_than v] [120]> akkor
fordulás [jobbra v] irányba [90] fokkal ▶
különben
lebegés
eredetX#
Az originX tulajdonság a detektált objektum határolókeretének bal felső sarkának x koordinátáját adja meg pixelekben, 1 és 640 közötti egész számként.
(Vision objektum [kezdőX v])
Példa
amikor elindul
[Draw lines to the AprilTag ID origin from all corners.]
örökre
képernyő törlése
get [all AprilTags v] data from vision [forward v] camera
ha <Vision objektum létezik?> akkor
vonal rajzolása [0] [0] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vonal rajzolása [0] [480] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vonal rajzolása [640] [0] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vonal rajzolása [640] [480] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vége
várakozás [0.2] másodpercig
származásY#
Az originY tulajdonság a detektált objektum határolókeretének bal felső sarkának y koordinátáját adja meg pixelekben, 1 és 480 közötti egész számként.
(Vision objektum [kezdőY v])
Példa
amikor elindul
[Draw lines to the AprilTag ID origin from all corners.]
örökre
képernyő törlése
get [all AprilTags v] data from vision [forward v] camera
ha <Vision objektum létezik?> akkor
vonal rajzolása [0] [0] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vonal rajzolása [0] [480] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vonal rajzolása [640] [0] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vonal rajzolása [640] [480] (Vision objektum [kezdőX v]) (Vision objektum [kezdőY v]) a képernyőn
vége
várakozás [0.2] másodpercig
azonosító#
Az id tulajdonság egész számként jelenti az észlelt AprilTag azonosító azonosítószámát.
(Vision objektum [azonosító v])
Példa
amikor elindul
[Display the detected AprilTag ID.]
örökre
[összes AprilTag v] adatok lekérése a Vision [előre v] kamerából
konzol törlése
ha <Vision objektum létezik?> akkor
(Vision objektum [azonosító v]) nyomtatása a konzolon ▶
vége
várakozás [0.2] másodpercig