Nagrywanie filmów z druku 3D z Raspberry Pi
Uchwyt do nagrywania filmów z druku 3D, wymyślony dla urządzenia Monkeyfab Prime3D, doczekał się kolejnej wersji. Zgodnie z zapowiedziami, do rejestracji obrazu zamiast smartfona postanowiłem użyć lekkiej kamerki do Raspberry Pi. W związku z tym zaprojektowałem nowe, pasujące do niej mocowanie – pracy było sporo, jednak jakość nagrań jest bez porównania lepsza niż przy poprzednich rozwiązaniach. Osoby, które nie czytały wcześniejszych artykułów na ten temat, a chciałyby poznać całą historię, odsyłam do wpisu I i wpisu II.
Wykorzystanie kamery z Raspberry Pi ma 2 duże zalety. Pierwszą z nich jest niewielka waga oraz wielkość tego modułu – kamera, podłączona za pomocą taśmy FPC waży około 4 gram i ma wymiary 25 x 20 x 9 mm. Dzięki temu nie zwiększa specjalnie bezwładności stołu (co mogłoby pogorszyć jakość druku) i nie wpada w takie drgania jak np. zamocowany telefon komórkowy (co pogarszało jakość samego nagrania). Drugą zaletą jest to, że w odróżnieniu od komórki możemy ją spokojnie zostawić na 10 godzin podczas nagrywania większego wydruku, i nikt w tym czasie na nią nie zadzwoni :)
Oczywiście rozwiązanie nie jest pozbawione wad – na Raspberry Pi razem z kamerą trzeba wydać jakieś 250 zł, choć ten minikomputer może przydać się też do innych rzeczy (np. do instalacji serwera www do zdalnej obsługi drukarki). Poza tym trzeba się nieco więcej pobawić, żeby uzyskać dobrą jakość nagrań, a samo ich zgrywanie na PC-ta może być (przynajmniej na początku) bardziej czasochłonne i skomplikowane, niż w przypadku prostego w obsłudze smartfona.
Po wyciągnięciu nieco zakurzonej maliny z szafy i podłączeniu do niej kamery okazało, się że obydwa elementy działają bez żadnych problemów. Do pierwszego testu umieściłem kamerę w uchwycie do smartfona tak, żeby sprawdzić jakość obrazu z tej pozycji:
Obraz był niestety trochę niewyraźny – kamera nie ma autofokusu i niezbyt dobrze sprawdza się przy fotografowaniu obiektów z odległości mniejszej niż 50-60 cm. W celu robienia zdjęć bliska niektórzy korzystają z różnego rodzaju dodatkowych soczewek – jednak istnieje inne rozwiązanie, które bardzo dobrze się u mnie sprawdziło. Soczewka, obecna w kamerze, jest wkręcona w jej obudowę i zalana niewielką ilością kleju. Klej ten można wydłubać, i jeśli zrobi się to w miarę ostrożnie, samą soczewkę można potem odrobinę odkręcić – w efekcie odległość ostrzenia ulegnie zmniejszeniu i będzie można robić wyraźne zdjęcia bliższych przedmiotów. Cały proces “podkręcania” jest opisany na stronie rasbperrypi.org – co prawda tekst jest o kamerze na podczerwień, jednak w przypadku podstawowej wersji wygląda to dokładnie tak samo.
Żeby przymocować kamerę do wysięgnika – aluminiowego profilu, połączonego ze stołem drukarki – zaprojektowałem kilka nowych elementów tworzących razem niewielki statyw. Jego poszczególne części skręcone są ze sobą śrubami – co pozwala na dość wygodną regulację i daje przyzwoitą sztywność po dokręceniu. Uchwyt do kamery można obracać we wszystkich osiach oraz podnosić góra-dół w zakresie ok. 6 cm.
Standardowa taśma FPC do kamery, mająca długość 15 cm, okazała się oczywiście za krótka. Na szczęście w internecie można kupić różnej długości taśmy – nawet takie długie na 2 metry. W moim przypadku wystarczyło 45 cm, żeby jednostka centralna mogła sobie spokojnie leżeć na stole. Kupiłem też 75 cm taśmę – ale póki co nie będzie potrzebna.
Jeśli chodzi o sam proces nagrywania – kamera do Raspberry może zarówno robić pojedyncze fotografie (5 Mpix), zdjęcia w trybie time-lapse, jak i kręcić filmy Full HD o 30 klatkach na sekundę. Po pozostałe parametry modułu odsyłam do specyfikacji. Filmy z pracy drukarki można kręcić na 2 sposoby:
- Nagrać cały proces druku jako zwykły film wideo. Niestety ograniczać nas będzie wielkość wynikowego pliku, która nie może przekroczyć 2 GB (podobno da się to obejść, ale… trzeba się trochę pobawić). Póki co najdłuższy film jaki nakręciłem miał ok. 30 minut – ale przy zredukowaniu bitrate’u powinno być możliwe robienie sporo dłuższych nagrań. Ta opcja daje najwięcej możliwości późniejszej obróbki, np. przyspieszania tylko wybranych fragmentów filmu.
- Skorzystać z trybu time-lapse – gdzie kamera będzie wykonywała oddzielne zdjęcia w zadanym odstępie czasowym, np. raz na sekundę. Wtedy ograniczeniem będzie jedynie wielkość karty SD, na której zainstalowany jest system operacyjny. Wynikowe jpeg-i będą wymagały późniejszego przetworzenia specjalnym narzędziem, żeby powstał z nich jeden film (nie jest to specjalnie trudne)
Kopiowanie plików wynikowych z Raspberry jest możliwe albo zdalnie przez FTP/SCP (jeśli jest ono na stałe podpięte do sieci) albo po prostu przez pendrive’a. U mnie malina jest podłączona do WiFi za pomocą specjalnej karty USB, ale transfer plików nie jest zbyt szybki – dlatego wygodniejszy okazał się ten drugi sposób. Pliki wideo trzeba dodatkowo przetworzyć na komputerze za pomocą ffmpeg (lub innego narzędzia) do formatu mp4 – zajmuje to kilkanaście sekund.
Na poniższym nagraniu można zobaczyć efekt końcowy:
Jeśli chodzi o dalszy rozwój wynalazku – chodzą mi po głowie takie ulepszenia:
- Streaming podglądu z kamery na komputer przez sieć – żeby nie trzeba było podłączać monitora do Raspberry Pi
- Schowanie maliny w tylnej części drukarki i puszczenie kabli wewnątrz aluminiowego profilu
- Zasilenie Raspberry z poziomu elektroniki drukarki (mniej kabli)
Warto zaznaczyć, że kamery można też użyć do zdalnego śledzenia poczynań naszej drukarki (funkcja taka jest dostępna np. w serwerze druku OctoPrint).
Jeśli ktoś chciałby wypróbować opisany system do nagrywania wideo u siebie, chętnie podzielę się plikami STL. Póki co – ze względu na planowane zmiany – nie będę ich jeszcze publikować w projektach na Thingiverse.