Kursy • Poradniki • Inspirujące DIY • Forum
OpenMV to kolejny startup, jego twórcy mieli na celu stworzenie platformy do komputerowego przetwarzania obrazu w oparciu o mikrokontroler. W dużym uproszczeniu, można powiedzieć, że OpenMV to kamerka, micro-python oraz biblioteki do rozpoznawania obrazu pracujące na STM32.
Więcej informacji znaleźć można na stronie projektu. Nie ukrywam, że moje pierwsze skojarzenie było: "to nie zadziała". Jednak po usłyszeniu bardzo pochlebnych opinii o tym projekcie postanowiłem zaryzykować i zamówić płytkę.
Zamówienie zajmuje tylko chwilę, ale pokazuje pierwszy i chyba najpoważniejszy
problem tego projektu - jego cenę.
Sama płytka kosztuje 75$. Jednak to nie koniec kosztów. Dochodzi przesyłka - 26$, a zanim obierzemy paczkę trzeba jeszcze wypełnić deklarację celną... I zapłacić VAT, czyli dodatkowe 23% plus koszty obsługi. Razem wyszło trochę ponad 100 USD plus trochę ponad 100 zł... Czyli jakieś 500 zł patrząc po dzisiejszym kursie dolara.
Cena trochę zaporowa, ale skoro pieniądze już wydane, nie ma co narzekać, czas rozpakować nową zabawkę. Płytka przychodzi w kopercie, wystarczy przykręcić obiektyw do kamerki, podłączyć kabelek USB (nie jest dołączany do zestawu) i można zaczynać zabawę.
Oprogramowanie OpenMV
Niewątpliwym plusem projektu jest przygotowane oprogramowanie. Możemy pobrać bardzo proste w obsłudze (bo wzorowane mocno na arduinowym) środowisko programistyczne.
Programy piszemy w micro-pythonie, co jest faktycznie bajecznie proste. Osoby które kiedyś lubiły Bascom-a, powinny pokochać ten dialekt języka. Zamiast skomplikowanej zabawy z rejestrami mamy banalne, bardzo intuicyjne programowanie wysokopoziomowe.
Do płytki dołączone są biblioteki obsługujące większość modułów peryferyjnych, w tym oczywiście samą kamerkę. Więcej o bibliotekach znajdziemy w udostępnionej dokumentacji.
Bardzo sympatyczna jest opcja podglądu bufora obrazu - w prawej części okna widzimy obraz prosto z mikrokontrolera. Spowalnia to trochę przetwarzanie, ale bardzo ułatwia eksperymenty.
Razem ze środowiskiem programistycznym dostajemy też sporą liczbę przykładów (podobnie jak do Arduino). Nie ukrywam, że pierwsze godziny minęły mi na zabawie tymi właśnie programami. Niestety szybko wyszły pierwsze problemy. Okazuje się, że nie wszystkie programy działają. Część działa tylko na wybranych płytkach, a ich uruchomienie kończy się zawieszeniem układu.
Sprzęt dostępny na OpenMV
Zanim przejdziemy dalej, krótkie podsumowanie sprzętu, który znajdziemy w OpenMV:
- mikrokontroler STM32F427 (Cortex-M4, 180MHz, 1MB flash, 256KB SRAM),
- przetwornik obrazu OV7725 (VGA 0.3 Mpx, 640x480),
- gniazdo kart micro-sd,
- gniazdo micro-usb do komunikacji i zasilania,
- dioda RGB oraz IR,
- 9 pinów I/O.
Szczegóły widoczne są na poniższej grafice:
Ogólne wrażenia
Nie ukrywam, że początki zabawy z płytką były fantastyczne, byłem pod dużym wrażeniem możliwości układu. Jednak pierwsze oczarowanie szybko minęło.
Pierwsze, co mnie zaskoczyło, to rozdzielczość obrazu z kamery. O ile przetwornik obsługuje rozdzielczość VGA (0.3 Mpx), to już sama płytka maksymalnie pracuje w QVGA, czyli 320x240.
Daje to "oszałamiającą" rozdzielczość 0.08 Mpx.
Kolejne rozczarowanie, to liczba klatek na sekundę. Rozdzielczość już znamy, FPS co ciekawe jest bardzo zmienny... Bywa, że możemy osiągnąć 30 FPS, a najczęściej jest to jednak 10-12 klatek, ale jeśli zasłonimy kamerę to wynik spadnie do 8 FPS.
W zależności od obrazu otrzymujemy różną ilość FPS.
Trochę poszukałem na ten temat w dokumentacji i jest to chyba spowodowane kompresją. Co ciekawe efekt występuje zarówno przy włączonym, jak i wyłączonym podglądzie obrazu.
Drugie rozczarowanie to algorytmy przetwarzania obrazu. Niby działają, ale porównywanie ich z OpenCV, to jakby porównywać małego fiata i ferrari. Oba jeżdżą, ale to tyle podobieństw. Kolejną rzecz, która szybko mnie rozdrażniła, to micro-python. Fakt, na mikrokontrolerze nie można oczekiwać cudów, to nie jest jednak pełny Python - trzeba pamiętać o wielu ograniczeniach.
Wcześniej używałem Pythona na Raspberry i innych płytkach
opartych na Linuksie, stąd moje rozczarowanie.
Więcej informacji na temat płytki znaleźć można na stronie zakończonej kampanii (Kickstarter):
Podsumowanie
Pierwsze momenty z OpenMV były zaskakująco pozytywne - projekt daje łatwą i szybką możliwość spróbowania sił z komputerowym przetwarzaniem obrazu. Niestety euforia szybko zamieniła się w rozczarowanie.
STM32 jest jednak tylko mikrokontrolerem i do przetwarzania obrazu
po prostu brakuje mu mocy i pamięci.
Nie pomaga też oparcie projektu na micro-pythonie, który chociaż miły, łatwy i wygodny, to jednak zabiera cenne zasoby. Natomiast tym co moim zdaniem dyskwalifikuje ten projekt jest jego cena. Za cenę płytki OpenMV można kupić Raspberry 3 z czterema rdzeniami Cortex-A, 1GB pamięci, kamerą 5 Mpx i pełnym Pythonem. Gdybym miał drugi raz kupować taką płytkę, to wybrałbym coś innego. Moim zdaniem to tylko bardzo droga ciekawostka.
Plusy:
- łatwe w instalacji i obsłudze środowisko,
- podgląd bufora obrazu,
- prosty język programowania,
- "zaskakujące, ale to działa".
Minusy:
- cena, cena, cena,
- za słaby mikrokontroler,
- za mało pamięci RAM,
- koszmarnie niska rozdzielczość,
- bardzo mała liczba klatek na sekundę,
- ograniczone możliwości bibliotek, szybko dochodzi konieczność pisania w C lub asm,
- brak możliwości pracy zdalnej,
- bardzo mało wyprowadzonych pinów.
To nie koniec, sprawdź również
Przeczytaj powiązane artykuły oraz aktualnie popularne wpisy lub losuj inny artykuł »
kamera, obraz, przetwarzanie, stm32
Trwa ładowanie komentarzy...