13.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.