Kódolás AI Vision Sensorral VEXcode V5 C++-ban

Győződjön meg róla, hogy színaláírások és 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:

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:

Ha többet szeretne megtudni ezekről az egyes parancsokról és a VEXcode-ban való használatukról, látogasson el az API webhelyére.


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.
  • 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);

// Adatok lehívása előtt ellenőrzi, hogy észlelhető-e objektum a pillanatképben.
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.

Három négyzet alakú azonosító jelölő, melyeken a 0, 9 és 3 azonosító látható, mindegyikhez a megfelelő koordináták és méretek fehér szöveggel jelennek meg. A 0-s azonosító a bal oldalon, a 9-es azonosító a jobb oldalon, a 3-as azonosító pedig alul középen található. Minden jelölő egyedi fekete-fehér mintázattal rendelkezik egy négyzetben.

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.

Két labda és két gyűrű azonosítva a képen, a címkék pedig jelzik a helyüket, méretüket és pontszámukat. A piros golyó bal oldalon, a kék golyó jobb oldalon, a zöld gyűrű bal alsó sarokban, a piros gyűrű pedig jobb alsó sarokban található. Minden objektumot egy fehér keret vesz körül, és az olyan részletek, mint az X és Y koordináták, a szélesség, a magasság és a 99%-os pontszám fehér szöveggel jelennek meg.

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.

Egy kék Buckyballt követ egy számítógépes látórendszer. A tárgyat egy fehér négyzet keretezi, a körvonalon belül pedig egy kisebb piros négyzet vesz körül egy középre igazított fehér keresztet. A kép bal felső sarkában egy címke jelzi, hogy az objektum kék, koordinátái X:176, Y:117, méretei pedig Sz:80, M:78.

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.

Két kék kocka alakú tárgy, amelyet egy látórendszer követ. A felső objektum X:215, Y:70 koordinátákkal, valamint W:73, H:84 méretekkel van jelölve, fehér körvonallal és középre igazított fehér kereszttel. Az alsó objektum X:188, Y:184 koordinátákkal, valamint W:144, H:113 méretekkel van jelölve, amelyeket szintén fehér színnel körvonalaztak, középen egy fehér kereszttel.

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.

Egy kék Buckyballt követ egy látórendszer. Egy fehér körvonal veszi körül az objektumot, a körvonalon belül egy középre igazított fehér kereszttel. A bal felső címke a tárgy színét kékként jelzi, az X:176, Y:117 koordinátákkal és a W:80, H:78 méretekkel együtt. Egy kis piros négyzet jelöli az objektum bal felső sarkát.

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 való kombinálásával meghatározhatja az objektum határolókeretének méretét. 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 képen egy kék Buckyball látható, amelyet egy fehér négyzet alakú körvonal követ. A bal felső sarokban egy felirat jelzi, hogy ez egy kék színű objektum, amelynek koordinátái X:176, Y:117, méretei pedig Sz:80, M:78. A piros nyilak az objektum szélességét és magasságát jelölik.

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.

Két kék kocka alakú tárgyat követ egy vizuális felismerő rendszer. A felső kocka fehér körvonallal rendelkezik, amelyen egy címke jelzi a pozícióját: X:215, Y:70, méreteit pedig W:73, H:84. Az alsó kocka hasonló fehér körvonallal rendelkezik, a címkén X:188, Y:184 jelölés, a méretek pedig W:144, H:113. Minden kockán egy középen elhelyezett fehér kereszt található, amely valószínűleg a követés fókuszpontját jelzi. A címkék kiemelik az egyes objektumok méreteit és követési adatait.

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éretek általában azt jelentik, hogy a tárgy távolabb van, míg a nagyobb méretek 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

Egy forgó gif, amelyen piros és zöld blokkok láthatók. Amikor a blokkok tökéletesen vízszintesen helyezkednek el a pirostól a zöldig, akkor 0 fokosnak látszanak. Ha a piros blokk függőlegesen a zöld blokk tetején van, akkor 90 fokos szögben van. Ha a blokkok vízszintesen zöldtől pirosig terjednek, akkor az 180 fok. Ha a zöld blokk függőlegesen a piros blokk tetején van, akkor az 20 fok.

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.

Két kockából álló halom, egy felül zöld és egy alul kék, amelyeket egy látórendszer követ. Mindkét kockát fehér körvonal veszi körül, a zöld kocka közepén egy fehér kereszt található. A kép alján található címke a Green_Blue A:87° feliratot mutatja, amely a detektált színeket és egy szögmérést jelez. Ez alatt a koordináták X:117, Y:186 alakban vannak elrendezve, W:137, H:172 méretekkel, amelyek a keretben egymásra rakott kockák helyzetét és méretét jelölik.

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.

Két kocka, egy zöld és egy kék, egymás mellé helyezve és egy látórendszerrel követve. Mindkét kockát fehér körvonal veszi körül, középen egy fehér kereszttel. A bal felső címke a Green_Blue A:0° értéket jelzi, amely a detektált színekre és egy szögmérésre utal. Alatta a koordináták X:150, Y:102 formában, a W:179, H:109 méretekkel láthatók, amelyek a kockák kereten belüli helyzetét és méretét jelzik.

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 képen négy, egy látórendszer által követett objektum látható: két golyó és két gyűrű. A piros golyó koordinátái X:122, Y:84, W:67, H:66, az eredmény pedig 99%. A kék golyó X:228, Y:86, W:70, H:68 koordinátákkal rendelkezik, 99%-os eredménnyel. A zöld gyűrű koordinátái X:109, Y:186, W:98, H:92, az értéke pedig 99%. A piros gyűrű X:259, Y:187, W:89, H:91 felirattal van ellátva, 99%-os pontszámmal. Minden objektum fehér körvonallal van körvonalazva, jelezve a követési pontosságot.

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.

Az AI Vision Utility felülete, a bal oldalon két kék kockával, amelyek X és Y koordinátáikkal és méreteivel vannak jelölve. A rendszer csatlakoztatva van, az AprilTags be van kapcsolva, míg az AI Classification ki van kapcsolva. A jobb oldalon a Kék színbeállítások láthatók állítható színárnyalat- és telítettségtartományokkal, amelyek rendre 22-re, illetve 0,34-re vannak beállítva. Lehetőség van szín hozzáadására vagy beállítására, valamint a videó kimerevítésére. A firmware naprakész, az 1.0.0.b16 verziót futtatja, és alul található egy bezárás gomb.

Ebben a példában két objektumot észleltünkszínaláírással, gyel ("Kék"). 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);
}

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: