Győződjön meg róla, hogy színaláírások és , valamint a színkódok konfigurálva vannak az AI látásérzékelőjével, hogy azok használhatók legyenek a blokkokkal. Ha többet szeretne megtudni a konfigurálásukról, olvassa el az alábbi cikkeket:
- Színaláírások konfigurálása az AI Vision aláírással a VEXcode EXP-ben
- Színkódok konfigurálása az AI Vision Signature segítségével a VEXcode EXP-ben
Az AI Vision Sensor képes AI osztályozásokat és AprilTags címkéket is érzékelni. Az észlelési módok engedélyezésének megtudásához látogasson el ide:
- AI osztályozások az AI Vision Sensorral a VEXcode EXP-ben
- AprilTags a VEXcode EXP mesterséges intelligenciájú vizuális érzékelőjével
Vizuális adatok kinyerése mesterséges intelligencia által vezérelt látásérzékelővel
Minden AI Vision Sensor parancs a konfigurált AI Vision Sensor nevével kezdődik. A cikkben szereplő összes példában a használt AI Vision Sensor neve AIVisionlesz.
Pillanatkép készítése
A takeSnapshot metódus egy képet készít arról, amit az AI Vision Sensor éppen lát, és ebből a pillanatképből adatokat nyer ki, amelyeket aztán egy projektben felhasználhatunk. Pillanatkép készítésekor meg kell adnia, hogy milyen típusú objektumról gyűjtsön adatokat a mesterséges intelligencia által biztosított vizuális érzékelő:
- ASzínaláírás vagySzínkód
- Ezek a vizuális aláírások az AI Vision Sensor nevével, dupla aláhúzásjellel, majd a vizuális aláírás nevével kezdődnek, például:
AIVision1__Blue.
- Ezek a vizuális aláírások az AI Vision Sensor nevével, dupla aláhúzásjellel, majd a vizuális aláírás nevével kezdődnek, például:
-
MI-besorolások -
aivision::ALL_AIOBJS -
ÁprilisCímkék-
aivision::ALL_TAGS
Egy pillanatkép készítése létrehozza az összes megadott észlelt objektum tömbjét. Például, ha egy „kék” színjelzésűet szeretne érzékelni, és az AI Vision Sensor 3 különböző kék objektumot észlelt, akkor mindhárom adata a tömbbe kerülne.
Ebben a példában egy pillanatkép készül a AIVision1nevű AI Vision érzékelő „Kék” Színaláírásáról. Megjeleníti a tömbben észlelt objektumok számát, és 0,5 másodpercenként új pillanatképet készít.
while (true) {
// Pillanatképet készít az összes kék színű objektumról.
AIVision.takeSnapshot(AIVision1__Blue);
// Ellenőrzi, hogy észlelt-e objektumot a pillanatképben az adatok lekérése előtt.
ha (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
vár(5, ms);
} }
tárgyak
Egy pillanatkép minden objektumának különböző tulajdonságai vannak, amelyek felhasználhatók az adott objektumról szóló információk jelentésére. Az objects metódus lehetővé teszi ezeknek a tulajdonságoknak a elérését.
Az elérhető ingatlanok a következők:
- azonosító
- középpont X és középpont Y
- eredetX és eredetY
- szélesség
- magasság
- szög
- létezik
- pontszám
Egy objektum tulajdonságának eléréséhez használd az AI Vision Sensor nevét, majd az objects metódust, végül pedig az objektum indexét.
Az objektumindex jelzi, hogy melyik konkrét objektum tulajdonságát szeretnéd lekérni. Pillanatkép készítése után az AI Vision Sensor automatikusan méret szerint rendezi a tárgyakat. A legnagyobb objektumhoz 0 indexet rendelünk, a kisebb objektumok pedig magasabb indexszámot.
Például a legnagyobb objektum szélességének meghívása a következő lenne AIVision1.objects[0].width.
azonosító
A id tulajdonság csak AprilTags és AI osztályozásokhoz érhető el.
EgyAprilTagesetén a id tulajdonság az észleltAprilTag(s) azonosítószámot jelöli.
A konkrét AprilTags azonosítása lehetővé teszi a szelektív navigációt. Beprogramozhatod a robotodat úgy, hogy bizonyos címkék felé haladjon, miközben másokat figyelmen kívül hagy, így hatékonyan használhatod őket jelzőtáblákként az automatikus navigációhoz.
AI osztályozásesetén a id tulajdonság az észlelt AI osztályozás konkrét típusát jelöli.
Specifikus objektumok azonosítása A mesterséges intelligencia besorolásalehetővé teszi a robot számára, hogy csak meghatározott objektumokra összpontosítson, például csak egy piros Buckyball felé akarjon navigálni, egy kék felé ne.
További információért áprilisi címkékről, és mesterséges intelligencia osztályozásokról és az AI Vision Utilityben történő észlelésük engedélyezéséről tekintse meg ezeket a cikkeket.
középpontX és középpontY
Ez a detektált objektum középpontjának koordinátái pixelben.
A CenterX és CenterY koordináták segítenek a navigációban és a pozicionálásban. A mesterséges intelligenciával ellátott látásérzékelő felbontása 320 x 240 pixel.
Látható, hogy egy, az AI Vision Sensorhoz közelebb lévő objektum alacsonyabb CenterY koordinátával rendelkezik, mint egy távolabb lévő objektum.
Ebben a példában, mivel az AI Vision Sensor nézetének középpontja (160, 120), a robot jobbra fordul, amíg az érzékelt objektum középponti X koordinátája nagyobb, mint 150 pixel, de kisebb, mint 170 pixel.
while (true) {
// Pillanatképet készít az összes kék színű objektumról.
AIVision.takeSnapshot(AIVision__Blue);
// Adatok kinyerése előtt ellenőrzi, hogy a pillanatképben észlelhető-e objektum.
ha (AIVision.objectCount > 0) {
ha (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Hajtás.fordulás(jobbra);
} else {
Hajtás.megállás();
}
}
vár(5, ms);
}
eredetX és eredetY
Az OriginX és az OriginY a detektált objektum bal felső sarkában található koordináta pixelben.
Az OriginX és OriginY koordináták segítenek a navigációban és a pozicionálásban. Ennek a koordinátának a szélességével és magasságával kombinálva meghatározható az objektum határolókeretének mérete. Ez segíthet a mozgó objektumok követésében vagy az objektumok közötti navigálásban.
szélesség és magasság
Ez a detektált objektum szélessége vagy magassága pixelben.
A szélesség és magasság mérése segít a különböző tárgyak azonosításában. Például egy Buckyball nagyobb magasságú lesz, mint egy Ring.
A szélesség és a magasság a tárgy és a mesterséges intelligencia által vezérelt látószenzor közötti távolságot is jelzi. A kisebb mérések általában azt jelentik, hogy a tárgy távolabb van, míg a nagyobb mérések azt sugallják, hogy közelebb van.
Ebben a példában az objektum szélességét használjuk a navigációhoz. A robot addig közeledik a tárgyhoz, amíg annak szélessége el nem éri az adott méretet, mielőtt megáll.
while (true) {
// Pillanatképet készít az összes Kék objektumról.
AIVision.takeSnapshot(AIVision1__Blue);
// Adatok kinyerése előtt ellenőrzi, hogy a pillanatképben észlelhető-e objektum.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].width < 250.0) {
Hajtás.drive(előre);
} else {
Hajtás.stop();
}
}
vár(5, ms);
} }
szög
A angle tulajdonság csakColor Codes ésAprilTags,
esetében érhető el.
Ez azt jelzi, hogy az észlelt Color Codevagy AprilTag eltérő orientációjú-e.
Láthatja, hogy a robot aColor Code vagyAprilTag hoz képest másképp orientálódik-e, és ennek megfelelően hozhat navigációs döntéseket.
Például, ha egyszínkódú nem megfelelő szögben érzékel a robot, akkor előfordulhat, hogy az általa jelképezett objektumot a robot nem tudja megfelelően felvenni.
pontszám
A pontszám tulajdonságot akkor használja a rendszer, haAI osztályozást észlel az AI Vision Sensor.
A megbízhatósági pontszám azt jelzi, hogy az AI Vision Sensor mennyire biztos az érzékelésében. Ezen a képen 99%-os valószínűséggel azonosítja a négy objektum mesterséges intelligencia alapú osztályozását. Ezzel a pontszámmal biztosíthatja, hogy a robot csak a nagyon megbízható észlelésekre összpontosítson.
létezik
A létezik tulajdonság annak észlelésére szolgál, hogy a megadott vizuális aláírás észlelésre került-e a legutóbb készített pillanatképben.
Ez lehetővé teszi annak ellenőrzését, hogy az előző pillanatképben észleltek-e objektumokat. Ez a tulajdonság Igaz értéket ad vissza, ha az objektum létezik, és Hamis értéket, ha az objektum nem létezik.
objektumszámlálás
Az objectCount metódus visszaadja az utolsó pillanatképben észlelt objektumok számát.
Ebben a példában két objektumot észleltünkszínaláírással, "Kék"-kel. Mindkettő bekerül a tömbbe, amikor a takeSnapshot metódust használjuk.
Ez a kódrészlet folyamatosan frissíti az EXP Brain-t az észlelt objektumok számával. A megadott példa alapján ismételten a 2-es értéket fogja küldeni, jelezve, hogy két objektumot észlelt.
while (true) {
// Pillanatkép készítése az összes kék objektumról.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Ellenőrzi, hogy a pillanatképben észlelhető-e objektum az adatok kinyerése előtt.
ha (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
vár(5, ms);
}