13.3.1.1. openmv CLI¶
Instalacija paketa dodaje izvršnu datoteku openmv koja otvara pygame preglednik povezan s kamerom preko USB-a. Bez argumenata nakon serijskog priključka pokreće malu ugrađenu testnu skriptu, prenosi nastali međuspremnik slike natrag i prikazuje ga skaliranog i označenog trenutnom brzinom sličica:
openmv --port /dev/ttyACM0
Putanja priključka ovisi o platformi domaćina. Na Linuxu, /dev/ttyACMx za USB CDC i /dev/ttyUSBx za USB-na-UART most. Na macOS-u, /dev/tty.usbmodem... ili /dev/cu.usbmodem.... Na Windowsu, COMx.
Preglednik je najbrži način da se potvrdi da je paket instaliran, da je kamera dostupna i da protokol radi. Ujedno je koristan demonstracijski okvir tijekom razvoja skripti – zamijenite ugrađenu testnu skriptu bilo kojom MicroPython datotekom pomoću --script i promatrajte rezultat bez napuštanja terminala.
Esc, Ctrl+C u terminalu ili zatvaranje prozora preglednika – sve uredno završava rad.
13.3.1.1.1. Pokretanje prilagođene skripte¶
--script usmjerava CLI na MicroPython izvornu datoteku na disku. Datoteka se prenosi na kameru, izvršava umjesto ugrađene testne skripte, a sve sličice koje proizvede prenose se natrag u preglednik:
openmv --port /dev/ttyACM0 --script my_script.py
Sve što skripta ispiše na stdout zrcali se u terminal domaćina u stvarnom vremenu. Proslijedite --quiet da to potisnete ili --debug za opširno zapisivanje protokola.
13.3.1.1.2. Pregled prilagođenog kanala¶
--channel NAME ispituje prilagođeni podatkovni kanal registriran od strane skripte koja se izvodi na kameri i ispisuje prvih deset bajtova svakog ažuriranja u terminal:
openmv --port /dev/ttyACM0 --channel ticks
Ugrađena testna skripta koja se pokreće kada --script nije naveden registrira kanal ticks koji vraća vrijeme rada kamere u milisekundama, pa --channel ticks demonstrira dvosmjernu površinu kanala koju Prilagođeni kanali detaljno opisuje – bez pisanja ikakvog koda na domaćinu ili kameri samostalno.
13.3.1.1.3. Način mjerenja performansi (benchmark)¶
--bench zamjenjuje standardnu testnu skriptu mjerenjem propusnosti JPEG kompresije:
openmv --port /dev/ttyACM0 --bench
Kamera snima jednu RGB565 QVGA sličicu, komprimira je u JPEG, a zatim u uskoj petlji prebacuje isti komprimirani međuspremnik. Preglednik prijavljuje sirovu brzinu prijenosa USB podataka umjesto sličice dekodirane uživo, pa je broj na zaslonu gornja granica koju veza može održati prema tom domaćinu. Korisno za usporedbu kamera ili domaćina bez varijabilnosti koja nastaje promjenom onoga što se zapravo snima.
13.3.1.1.4. Profiliranje¶
CLI može preklopiti podatke profilera uživo na prenesene sličice. Preklop je koristan samo kada kamera izvodi ugrađeni program (firmware) izgrađen s PROFILE_ENABLE=1 uz registriran kanal profile; na tvorničkom ugrađenom programu (firmware) kontrole profiliranja nemaju učinka.
--firmware PATH– učitava firmware ELF koji kamera izvodi kako bi preklop mogao razriješiti adrese funkcija u zapisima profila u nazive čitljive ljudima. Bez toga preklop prikazuje sirove adrese.
Tri tipkovnička prečaca u pregledniku upravljaju profilerom:
Tipka |
Radnja |
|---|---|
|
Kruženje kroz preklop profilera: isključeno, performanse, događaji. |
|
Prebacuje način profilera između uključivog i isključivog. Uključivo mjerenje vremena pripisuje vrijeme pozvanog pozivatelju; isključivo mjerenje to ne čini. |
|
Resetira brojače profilera. |
13.3.1.1.5. Zastavice za podešavanje protokola¶
Zastavice u nastavku zrcale parametre konstruktora klase openmv.Camera. Zadane vrijednosti rade na svakoj isporučenoj kameri; nadjačajte ih samo pri otklanjanju pogrešaka prilagođene firmware verzije ili simuliranju nepovoljnih uvjeta veze.
--baudrate N– zadano921600(čarobna vrijednost koja prebacuje USB na OpenMV protokol). Nadjačajte samo na UART vezama.--timeout SEC– istek vremena po operaciji u sekundama (zadano1.0).--max-retry N– broj ponovnih pokušaja prije nego što se veza proglasi prekinutom (zadano3).--max-payload N– maksimalna veličina korisnog sadržaja u bajtovima (zadano4096). Kamera pregovara nižu vrijednost ako ne može obraditi toliko.--crc BOOL– omogućuje CRC provjeru na svakom paketu (zadanotrue).--seq BOOL– omogućuje provjeru rednog broja (zadanotrue).--ack BOOL– omogućuje potvrdu po paketu (zadanotrue).--events BOOL– omogućuje obavijesti o događajima s kamere (zadanotrue).--drop-rate FLOAT– stopa simulacije gubitka paketa u[0.0, 1.0](zadano0.0). Samo za testiranje.
Jedna postavka za podešavanje specifična za CLI:
--poll MS– stopa ispitivanja za glavnu petlju preglednika, u milisekundama (zadano4).
13.3.1.1.6. Razne zastavice¶
Dvije zastavice prilagođavaju kako preglednik prikazuje tok bez promjene ponašanja na strani kamere:
--scale N– faktor zumiranja prikaza (zadano4). Korisno kada su QVGA sličice premale za čitanje na 4K zaslonu.--raw– zahtijeva da kamera šalje međuspremnike piksela nekomprimirane umjesto JPEG-komprimirane. Korisno na kamerama bez hardverske JPEG podrške; Prijenos sličica u stvarnom vremenu pokriva kompromise.
13.3.1.1.7. Što preglednik radi¶
CLI je sam po sebi program klase openmv.Camera. Povezuje se, poziva stop() da očisti svaku skriptu koja se izvodi, prenosi skriptu pomoću exec(), omogućuje prijenos uz streaming(), a zatim u petlji poziva read_frame() (za ažuriranje prikaza), read_stdout() (za zrcaljenje ispisa skripte) i read_status() (za nadzor svakog drugog registriranog kanala radi aktivnosti). Izvorni kod nalazi se na cli.py i predstavlja radnu referencu za aplikaciju koja upravlja kamerom od početka do kraja.