Győződjön meg arról, hogy színaláírás és színkód van konfigurálva az AI Vision Sensorral, hogy azokat a blokkjaival együtt tudja használni. Ha többet szeretne megtudni ezek konfigurálásáról, olvassa el az alábbi cikkeket:
- Színaláírások konfigurálása az AI Vision Signature segítségével a VEXcode V5-ben
- Színkódok konfigurálása az AI Vision aláírással a VEXcode V5-ben
Az AI Vision Sensor az AI osztályozásokat és az AprilTag-eket is képes észlelni. Ha meg szeretné tudni, hogyan engedélyezheti ezeket az észlelési módokat, látogasson el ide:
Szerezzen vizuális adatokat az AI Vision Sensor segítségével
Minden AI Vision Sensor parancs a konfigurált AI Vision Sensor nevével kezdődik. A cikkben szereplő összes példa esetében a használt AI Vision Sensor neve AIVision
lesz.
Pillanatfelvétel készítése
A takeSnapshot
módszer leképezi azt, amit az AI Vision Sensor jelenleg lát, és adatokat gyűjt a pillanatfelvételből, amelyeket aztán felhasználhat egy projektben. Pillanatfelvétel készítésekor meg kell adnia, hogy az AI Vision Sensor milyen típusú objektumról gyűjtsön adatokat:
- ASzínaláírás vagySzínkód
- Ezek a vizuális aláírások az AI Vision Sensor nevével kezdődnek, dupla aláhúzással, majd a vizuális aláírás nevével, például:
AIVision1__Blue
.
- Ezek a vizuális aláírások az AI Vision Sensor nevével kezdődnek, dupla aláhúzással, majd a vizuális aláírás nevével, például:
-
::ALL_AIOBJS
-
április Címkék-
aivision::ALL_TAGS
A pillanatfelvétel készítése létrehoz egy tömböt az összes megadott észlelt objektumból. Például, ha egy "kék" színaláírástakart észlelni, és az AI Vision Sensor 3 különböző kék objektumot észlelt, akkor mindhárom adatai a tömbbe kerülnek.
Ebben a példában pillanatfelvétel készül a AIVision1
AI Vision Sensor„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ép készítése az összes kék színű objektumról.
AIVision.takeSnapshot(AIVision1__Kék);
// Az adatok lehívása előtt ellenőrizze, hogy észlelt-e egy objektumot a pillanatfelvételen.
if (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
vár(5, msec);
}
tárgyakat
A pillanatképek minden objektumának különböző tulajdonságai vannak, amelyek felhasználhatók az adott objektumra vonatkozó információk jelentésére. Az objektum metódus lehetővé teszi ezekhez a tulajdonságokhoz való hozzáférést.
Az elérhető tulajdonságok a következők:
- id
- centerX és centerY
- eredetX és eredetY
- szélesség
- magasság
- szög
- létezik
- pontszám
Az objektum tulajdonságainak eléréséhez használja az AI Vision Sensor nevét, majd az objektum metódust, majd az objektum indexét.
Az objektum index azt jelzi, hogy melyik objektum tulajdonságát szeretné lekérni. Pillanatfelvétel készítése után az AI Vision Sensor automatikusan méret szerint rendezi az objektumokat. A legnagyobb objektumhoz 0 index tartozik, a kisebb objektumok pedig magasabb indexszámot kapnak.
Például a legnagyobb objektum szélességének meghívása AIVision1.objects[0].width
lenne.
id
A id
tulajdonság csak április án érhető el. Tags és AI Classifications.
EgyAprilTagesetén a id
tulajdonság az észleltAprilTag(s) azonosítószámot jelenti.
Konkrét azonosítása AprilTags szelektív navigációt tesz lehetővé. Beprogramozhatja robotját úgy, hogy bizonyos címkék felé haladjon, miközben figyelmen kívül hagyja a többieket, és hatékonyan használja őket útjelző táblákként az automatizált navigációhoz.
AI-osztályozásesetén a id
tulajdonság az észlelt mesterséges intelligencia-besorolás adott típusát jelöli.
Konkrét AI besorolások azonosításalehetővé teszi a robot számára, hogy csak meghatározott objektumokra összpontosítson, például csak egy piros Buckyball felé akar navigálni, egy kékre nem.
Tekintse meg ezeket a cikkeket, ha további információra van szüksége AprilTags and AI Classifications -ról, valamint arról, hogyan engedélyezheti észlelésüket az AI Vision Utility programban.
centerX
és centerY
Ez az észlelt objektum középponti koordinátái pixelben.
A CenterX és CenterY koordináták segítik a navigációt és a helymeghatározást. Az AI Vision Sensor felbontása 320 x 240 pixel.
Láthatja, hogy az AI Vision Sensorhoz közelebb eső objektum középponti Y koordinátája alacsonyabb, mint egy távolabbi objektum.
Ebben a példában, mivel az AI Vision Sensor nézetének közepe (160, 120), a robot jobbra fordul mindaddig, amíg az észlelt objektum centerX koordinátája nem haladja meg a 150 képpontot, de nem éri el a 170 képpontot.
while (true) {
// Pillanatkép készítése az összes kék színű objektumról.
AIVision.takeSnapshot(AIVision__Kék);
// Az adatok lehívása előtt győződjön meg arról, hogy objektumot észlelt a pillanatképben.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Hajtáslánc.turn(jobbra);
} else {
Drivetrain.stop();
}
}
vár(5, msec);
}
eredetX
és eredetY
Az OriginX és az OriginY az észlelt objektum bal felső sarkában lévő koordináta pixelben.
Az OriginX és OriginY koordináták segítik a navigációt és a helymeghatározást. Ha ezt a koordinátát kombinálja az objektum szélességével és magasságával, meghatározhatja az objektum határolókeretének méretét. Ez segíthet a mozgó objektumok nyomon követésében vagy az objektumok közötti navigálásban.
szélesség
és magasság
Ez az észlelt objektum szélessége vagy magassága pixelben.
A szélesség- és magasságmérés segít a különböző tárgyak azonosításában. Például egy Buckyball magasabb lesz, mint egy gyűrű.
A szélesség és a magasság az objektum távolságát is jelzi az AI Vision Sensortól. A kisebb méretek általában azt jelentik, hogy az objektum távolabb van, míg a nagyobb méretek azt jelzik, 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özelíti az objektumot, amíg a szélessége el nem ér egy meghatározott méretet, mielőtt megállna.
while (true) {
// Pillanatkép készítése az összes kék objektumról.
AIVision.takeSnapshot(AIVision1__Kék);
// Az adatok lehívása előtt győződjön meg arról, hogy objektumot észlelt a pillanatképben.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].width < 250.0) {
Hajtáslánc.hajtás(előre);
} else {
Drivetrain.stop();
}
}
várakozás(5, msec);
}
szög
A szög
tulajdonság csakszínkód ésAprilTagsesetén érhető el.
Ez azt jelzi, hogy az észlelt Color Codevagy AprilTag eltérő tájolású.
Megnézheti, hogy a robot aColor Code vagyAprilTag hoz képest eltérően áll-e, és ennek megfelelően hozhatja meg a navigációs döntéseket.
Például, ha a színkódot nem érzékeli megfelelő szögben, akkor előfordulhat, hogy az általa képviselt tárgyat a robot nem tudja megfelelően felvenni.
pontszám
A pontszám
tulajdonság akkor használatos, ha az AI Vision SensorralAI-besorolást észlel.
A megbízhatósági pontszám azt jelzi, hogy az AI Vision Sensor mennyire biztos az észlelésében. Ezen a képen 99%-ban biztos abban, hogy azonosítja e négy objektum mesterséges intelligencia osztályozását. Ezzel a pontszámmal biztosíthatja, hogy robotja csak a nagyon magabiztos észlelésekre összpontosítson.
létezik
A létezik
tulajdonság annak észlelésére szolgál, hogy a rendszer észlelt-e egy meghatározott Visual Signature at az utolsó pillanatfelvételen.
Ezzel ellenőrizheti, hogy az előző pillanatfelvételen észlelt-e észlelt objektumokat. Ez a tulajdonság True értéket ad vissza, ha egy objektum létezik, és False értéket, ha az objektum nem létezik.
objectCount
Az objectCount metódus az utolsó pillanatképben észlelt objektumok mennyiségét adja vissza.
Ebben a példában két objektumot észleltünk aColor Signature "Kék" értékkel. Mindkettő a tömbbe kerül a takeSnapshot metódus használatakor.
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 elküldi a 2-es értéket, jelezve, hogy két objektumot észlelt.
while (true) {
// Pillanatkép készítése az összes kék objektumról.
AIVision.takeSnapshot(AIVision__Kék);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Az adatok lehívása előtt győződjön meg arról, hogy észlelt-e egy objektumot a pillanatfelvételen.
if (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
vár(5, msec);
}