13.4.1.1. Nástroj příkazové řádky openmv#
Instalace balíčku přidá spustitelný soubor openmv, který otevře prohlížeč pygame připojený ke kameře přes USB. Bez argumentů kromě sériového portu spustí malý vestavěný testovací skript, streamuje zpět výsledný frame buffer a zobrazí jej zvětšený a opatřený anotací s aktuální snímkovou frekvencí:
openmv --port /dev/ttyACM0
Cesta k portu závisí na hostitelské platformě. V Linuxu je to /dev/ttyACMx pro USB CDC a /dev/ttyUSBx pro převodník USB-na-UART. V macOS /dev/tty.usbmodem... nebo /dev/cu.usbmodem.... V systému Windows COMx.
Prohlížeč je nejrychlejší způsob, jak ověřit, že je balíček nainstalovaný, kamera dostupná a protokol funkční. Je to také užitečné demo prostředí během vývoje skriptů – vestavěný testovací skript stačí pomocí --script nahradit libovolným souborem MicroPython a sledovat výsledek bez opuštění terminálu.
Esc, Ctrl+C v terminálu nebo zavření okna prohlížeče vše čistě ukončí.
13.4.1.1.1. Spuštění vlastního skriptu#
--script nasměruje CLI na zdrojový soubor MicroPython na disku. Soubor se nahraje do kamery, spustí se místo vestavěného testovacího skriptu a všechny snímky, které vyprodukuje, se streamují zpět do prohlížeče:
openmv --port /dev/ttyACM0 --script my_script.py
Cokoli skript vypíše na stdout, se v reálném čase zrcadlí do hostitelského terminálu. Předáním --quiet to potlačíte, nebo --debug pro podrobné protokolové logování.
13.4.1.1.2. Náhled vlastního kanálu#
--channel NAME dotazuje vlastní datový kanál registrovaný běžícím skriptem na straně kamery a vypisuje do terminálu prvních deset bajtů každé aktualizace:
openmv --port /dev/ttyACM0 --channel ticks
Vestavěný testovací skript, který se spustí, když není zadán --script, registruje kanál ticks vracející dobu běhu kamery v milisekundách, takže --channel ticks demonstruje povrch obousměrných kanálů, který podrobně pokrývá Vlastní kanály – aniž byste museli psát jakýkoli kód na hostiteli nebo kameře.
13.4.1.1.3. Režim benchmarku#
--bench nahradí standardní testovací skript benchmarkem propustnosti (throughput) JPEG komprese:
openmv --port /dev/ttyACM0 --bench
Kamera zachytí jeden RGB565 QVGA snímek, zkomprimuje jej do JPEG a poté tentýž komprimovaný buffer odesílá v těsné smyčce. Prohlížeč hlásí surovou datovou rychlost USB namísto živě dekódovaného snímku, takže číslo na obrazovce je horní hranice, kterou linka dokáže k danému hostiteli udržet. Užitečné pro porovnání kamer nebo hostitelů bez kolísání způsobeného změnami toho, co se vlastně zachytává.
13.4.1.1.4. Profilování#
CLI dokáže překrýt živá data profileru přes streamované snímky. Překryv je užitečný pouze tehdy, když kamera běží na firmwarovém buildu s PROFILE_ENABLE=1 a registrovaným kanálem profile; na továrním firmwaru nemají ovládací prvky profilování žádný účinek.
--firmware PATH– načte firmwarový ELF, který kamera používá, aby překryv mohl převést adresy funkcí v záznamech profilu na lidsky čitelná jména. Bez toho překryv zobrazuje surové adresy.
Profiler v prohlížeči ovládají tři klávesové zkratky:
Klávesa | Akce |
|---|---|
| Přepíná překryv profileru: vypnuto, výkon, události. |
| Přepíná režim profileru mezi inkluzivním a exkluzivním. Inkluzivní měření připisuje čas volané funkce volajícímu; exkluzivní měření nikoli. |
| Vynuluje čítače profileru. |
13.4.1.1.5. Příznaky pro ladění protokolu#
Níže uvedené příznaky odpovídají parametrům konstruktoru třídy openmv.Camera. Výchozí hodnoty fungují na každé dodávané kameře; přepište je pouze při ladění vlastního firmwarového buildu nebo simulaci nepříznivých podmínek linky.
--baudrate N– výchozí hodnota je921600(magická hodnota, která přepne USB na protokol OpenMV). Přepište pouze u UART linek.--timeout SEC– časový limit na operaci v sekundách (výchozí1.0).--max-retry N– počet pokusů, než je linka prohlášena za nefunkční (výchozí3).--max-payload N– maximální velikost payloadu v bajtech (výchozí4096). Kamera vyjedná nižší hodnotu, pokud tolik nezvládne.--crc BOOL– povolí validaci CRC u každého paketu (výchozítrue).--seq BOOL– povolí validaci pořadových čísel (výchozítrue).--ack BOOL– povolí potvrzování jednotlivých paketů (výchozítrue).--events BOOL– povolí oznámení o událostech z kamery (výchozítrue).--drop-rate FLOAT– míra simulace zahazování paketů v rozsahu[0.0, 1.0](výchozí0.0). Pouze pro testování.
Jedno ladicí nastavení specifické pro CLI:
--poll MS– frekvence dotazování hlavní smyčky prohlížeče v milisekundách (výchozí4).
13.4.1.1.6. Různé příznaky#
Dva příznaky upravují, jak prohlížeč prezentuje stream, aniž by se měnilo chování na straně kamery:
--scale N– faktor zvětšení zobrazení (výchozí4). Užitečné, když jsou QVGA snímky na 4K displeji příliš malé na čtení.--raw– požádá kameru o odeslání pixelových bufferů nekomprimovaně namísto JPEG komprese. Užitečné na kamerách bez hardwarové podpory JPEG; kompromisy pokrývá Streamování snímků.
13.4.1.1.7. Co prohlížeč dělá#
CLI je samo o sobě program využívající openmv.Camera. Připojí se, zavolá stop() pro vyčištění jakéhokoli běžícího skriptu, nahraje skript pomocí exec(), povolí streamování pomocí streaming() a poté ve smyčce volá read_frame() (pro aktualizaci zobrazení), read_stdout() (pro zrcadlení výpisů skriptu) a read_status() (pro sledování aktivity každého dalšího registrovaného kanálu). Zdroj je na cli.py a je funkční referencí pro aplikaci, která ovládá kameru od začátku do konce.