12.10. Összegzés¶
Egy USB-kábelre csatlakoztatott kamera, amely képkockákat streamel egy gazdaprogramnak, fogadja a gazdagéptől visszaérkező konfigurációs frissítéseket, és kihúzást/visszadugást is túlél a szinkron elvesztése nélkül – elrejtett újraküldésekkel, egyetlen porton osztozó több logikai streammel, és az alkalmazásban nulla keretezési kóddal – mindez körülbelül negyven sornyi kameraoldali kódból és hasonló mennyiségű gazdaoldali kódból jön ki. A protokollkönyvtár egy bájtcsövet programozható csatornafelületté alakít, és mindent láthatatlanul tart az alkalmazás alatt.
12.10.1. Mit épített fel a fejezet¶
A verem négyrétegű gondolati modellje: átvitel, keretezés, megbízhatóság, csatornák. Minden réteg egyetlen problémát old meg, és mindent figyelmen kívül hagy, ami felette van.
A vezetéken használt csomagformátum – 10 bájtos fejléc CRC-vel, változó hasznos terhelés, záró CRC. Elég kicsi ahhoz, hogy bájtról bájtra végigjárjuk.
A kézfogás, amelyet a kamera és a gazdagép futtat, amikor egy átvitel csatlakozik: PROTO_SYNC, képesség-egyeztetés, csatornafelderítés.
A megbízhatósági gépezet a tetején: sorszámok, ACK-k, NAK-ok, újraküldések exponenciális visszalépéssel, a tíz állapotkód.
A csatornamodell: legfeljebb 32 elnevezett logikai stream egyetlen vezetéken, beépített
stdin/stdout/stream/profilecsatornákkal és Python osztály által regisztrált alkalmazáscsatornákkal.A háttérprogram-interfész –
size,read,write,poll,lock/unlock,shape,ioctl,flush,is_active–, és az, ahogyan a protokollkönyvtár a háttérprogramon jelen lévő metódusok alapján eldönti, mit támogat a csatorna.A gazdagép oldala: az openmv-python SDK
Cameraosztálya, a921600baudos varázssebesség, amely a USB-CDC-t protokoll módba kapcsolja, valamint achannel_size/channel_read/channel_writeoda-vissza minta.Egy képkocka-streamelési minta – egypufferes rögzítés,
readpretesszel,send_eventaz új képkockáról szóló értesítésekhez –, valamint egy kétirányú konfigurációs minta (gazdagép által írható csatorna, JSON oda-vissza), amelyek együtt minden interaktív kameraeszköz alapját képezik.
12.10.2. Referencia-útiterv¶
A könyvtár-referenciaoldalak a keresési célpontok, amikor ezek a funkciók valós kódban felmerülnek:
protocol — OpenMV protokollcsatornák – a
protocolmodul, aprotocol.init(), aprotocol.register(), aProtocolChannel, a csatornajelző konstansok, valamint a kameránkénti maximális hasznos terhelést tartalmazó táblázat.A gazda SDK –
pip install openmv,openmv.camera.Camera. Az ebben a fejezetben érintett metódusok:update_channels(),has_channel(),channel_size(),channel_read(),channel_write(),poll_events(),read_frame(),exec()ésstop().Az openmv-projects tároló – a protokollkönyvtárra épülő valós eszközök. A tools/ könyvtár tartalmazza a
thermal-overlay-calibration(RGB + hőkép-illesztési grafikus felület), accm-tuning(színkorrekciós mátrixhangoló), agenx320-event-streamingés agenx320-overlay-calibration(eseménykamera-eszközök) elemeket. Mindegyik a fejezet mintáit használja az elejétől a végéig.
12.10.3. Merre tovább¶
Néhány irány, amerre a kameraprojektek innen elmozdulnak:
Gazdaoldali grafikus felület építése. Egy képkocka-csatorna, amely egy videowidgetet táplál, és egy vagy két konfigurációs csatorna, amely csúszkákat és gombokat táplál. Magához a grafikus felület réteghez a DearPyGui a természetes választás – tiszta Python, pip-pel telepíthető, elég gyors az élő előnézethez, és minden meglévő OpenMV gazdaeszköz először ehhez nyúl.
Többcsatornás telemetriai műszerfal. Több alkalmazáscsatorna ugyanazon a kamerán (érzékelő-leolvasások, számlálók, állapotesemények), mindegyik a saját visszahívásában frissítve, és egy gazdaoldali grafikus felület, amely időzítőn olvassa be őket, és mindegyiket külön jeleníti meg. A csatornaréteg független folyamvezérlése azt jelenti, hogy egy lassú olvasás nem akasztja meg a többit.
Távoli hangolás UART-on keresztül. Ugyanazok a csatorna-visszahívások; az alkalmazás a
protocol.inithívással vált USB-ről UART-átvitelre. A kamera fejetlenül fut tovább, egy Raspberry Pi-n vagy laptopon futó Python szkript pedig soros vonalon keresztül beszél vele a terepi hangoláshoz.
A vezetékformátum, a megbízhatósági réteg és a csatornaabsztrakció nem változik. A telepítéshez illő átvitel kiválasztása és egy csatorna hozzáadása minden olyan dologhoz, amit a gazdagépnek látnia vagy beállítania kell, innentől az egész mérnöki feladat.