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

Přepíná překryv profileru: vypnuto, výkon, události.

M

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.

R

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 je 921600 (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.