12.10. Yhteenveto¶
Kamera, joka on kytketty USB-kaapeliin, suoratoistaa kehyksiä isäntäohjelmaan, ottaa vastaan konfiguraatiopäivityksiä takaisin isännältä ja selviää irrotuksesta/uudelleenkytkennästä menettämättä synkronointia – piilotetuin uudelleenlähetyksin, useiden loogisten virtojen jakaessa yhden portin ja nollalla kehystyskoodilla sovelluksessa – syntyy noin neljästäkymmenestä rivistä kameran puolen koodia ja vastaavasta määrästä isännän puolella. Protokollakirjasto muuttaa tavuputken ohjelmoitavaksi kanavapinnaksi ja pitää kaiken sovelluksen alapuolella näkymättömänä.
12.10.1. Mitä luku rakensi¶
Nelikerroksinen ajatusmalli pinosta: kuljetus, kehystys, luotettavuus, kanavat. Kukin kerros ratkaisee yhden ongelman ja jättää kaiken yläpuolellaan huomiotta.
Linjalla kulkeva pakettiformaatti – 10 tavun otsikko CRC:llä, vaihteleva hyötykuorma, perän CRC. Riittävän pieni läpikäytäväksi tavu tavulta.
Kättely, jonka kamera ja isäntä suorittavat kuljetuksen yhdistyessä: PROTO_SYNC, kykyjen vaihto, kanavien löytäminen.
Luotettavuuskoneisto sen päällä: järjestysnumerot, ACK:t, NAK:t, uudelleenlähetykset eksponentiaalisella peruutuksella, kymmenen tilakoodia.
Kanavamalli: jopa 32 nimettyä loogista virtaa yhdellä linjalla, sisäänrakennetuilla
stdin/stdout/stream/profile-kanavilla ja Python-luokan kautta rekisteröidyillä sovelluskanavilla.Backend-rajapinta –
size,read,write,poll,lock/unlock,shape,ioctl,flush,is_active– ja kuinka protokollakirjasto käyttää backendissä olevia metodeja päättääkseen, mitä kanava tukee.Isännän puoli: openmv-python SDK:n
Camera-luokka,921600-baudin maaginen siirtonopeus, joka vaihtaa USB-CDC:n protokollatilaan, sekächannel_size/channel_read/channel_write-edestakaiskuviomalli.Kehyksen suoratoistomalli – yksipuskurinen kaappaus,
readplukolla,send_eventuuden kehyksen ilmoituksiin – ja kaksisuuntainen konfiguraatiomalli (isännän kirjoitettavissa oleva kanava, JSON-edestakaiskierros), jotka yhdessä muodostavat perustan jokaiselle interaktiiviselle kameratyökalulle.
12.10.2. Viiteopas¶
Kirjaston viitesivut ovat hakukohteet, kun jokin näistä ominaisuuksista tulee vastaan oikeassa koodissa:
protocol — OpenMV-protokollakanavat –
protocol-moduuli,protocol.init(),protocol.register(),ProtocolChannel, kanavalippuvakiot ja kamerakohtainen enimmäishyötykuormataulukko.Isännän SDK –
pip install openmv,openmv.camera.Camera. Tässä luvussa käsitellyt metodit:update_channels(),has_channel(),channel_size(),channel_read(),channel_write(),poll_events(),read_frame(),exec()jastop().openmv-projects -arkisto – protokollakirjastolle rakennettuja oikeita työkaluja. tools/ -hakemisto sisältää työkalut
thermal-overlay-calibration(RGB:n + lämpökuvan kohdistus-GUI),ccm-tuning(värikorjausmatriisin viritin),genx320-event-streamingjagenx320-overlay-calibration(tapahtumakameratyökalut). Jokainen niistä käyttää tämän luvun malleja alusta loppuun.
12.10.3. Mihin viedä seuraavaksi¶
Muutama suunta, johon kameraprojektit etenevät tästä:
Isännän GUI:n rakentaminen. Kehyskanava, joka syöttää videovimpaimen, yksi tai kaksi konfiguraatiokanavaa, jotka syöttävät liukusäätimiä ja painikkeita. Itse GUI-kerrokseen DearPyGui on luonteva valinta – puhdas Python, pip-asennettava, riittävän nopea live-esikatseluun ja se, mihin jokainen olemassa oleva OpenMV-isäntätyökalu ensimmäisenä tarttuu.
Monikanavainen telemetriakojelauta. Useita sovelluskanavia samalla kameralla (sensorilukemia, laskureita, tilatapahtumia), kukin päivittyy omassa takaisinkutsussaan, ja isännän GUI, joka lukee ne ajastimella ja renderöi kunkin erikseen. Kanavakerroksen itsenäinen vuonohjaus tarkoittaa, ettei yksi hidas luku pysäytä muita.
Etäviritys UART:n yli. Samat kanavan takaisinkutsut; sovellus kutsuu
protocol.init-metodia vaihtaakseen USB:stä UART-kuljetukseen. Kamera jatkaa toimintaa ilman näyttöä, ja Python-skripti Raspberry Pi:llä tai kannettavalla keskustelee sen kanssa sarjalinjan yli kenttäviritystä varten.
Linjaformaatti, luotettavuuskerros ja kanava-abstraktio eivät muutu. Käyttöönottoon sopivan kuljetuksen valitseminen ja kanavan lisääminen jokaiselle asialle, jonka isännän tarvitsee nähdä tai asettaa, on koko suunnittelutyö tästä eteenpäin.