Sunday, March 12, 2017

Pierwsze koty za płoty

Jako że Raspberry Pi w wersji 3 czekał na półce od kilku dni, a nabyłem ostatni brakujący element, a mianowicie kartę microSD, postanowiłem odpalić sprzęta. Szybki look do internetów jak to zrobić i surprise surprise, oprócz różnych distro linuksów, dostępny jest Windows 10 IoT Core. Jego instalacja na karcie jest prostsza niż konstrukcja instrukcji warunkowej "switch", więc nie ma sensu się rozpisywać. Wystarczy ściągnąć narzędzie Windows 10 IoT Core Dashboard, pare kliknięć, kilka comboboxów i wuala! Już po 10 minutach na malinie śmiga Windows. Podłączenie klawiatury czy myszki jest automatycznie wykrywane, zobaczymy jak będzie z kamerką. 
Rzekomo cała ta platforma jest tak przezajebista, że będę mógł developować na desktopie w Visual Studio, a całość odpalać i debugować na malinie z poziomu samego IDE. No panie toż to się fizjologom nie śniło! Jeżeli to prawda to będzie bardzo fajnie. Tymczasem w następnym poście postaram się zorganizować jakiś plan projektu i nakreślić założenia projektowe. Życzę wszystkim miłego nadchodzącego tygodnia. 

Co w trawie piszczy


Zanim zaczniemy się brać do pracy, warto zaznajomić się z istniejącymi urządzeniami. Niepodobnym byłoby przecież planować jakieś rozwiązanie bez rozeznania jakie to robią inni. Przy takim podejściu może się okazać, że ktoś już zrobił to co my prościej i efektywniej. No i mimo, że to projekt dla funu, będziemy mieli poczucie że wykonaliśmy kawał dobrej, nikomu nie potrzebnej roboty.

1. Project Sentry Gun


Zadziwiająco fachowy amatorski projekt autonomicznego działka do paintballa. Porządna konstrukcja i solidne oprogramowanie. Bardzo dobrze radzi sobie ze śledzeniem celu przy użyciu kamery IP. Głowica na bazie serwomotorów z oddzielnymi sterownikami. Dostępny jest kod źródłowy programu. Niestety, oprogramowanie napisane w Javie, a działanie urządzenia obsługiwane jest z komputera. Tym niemniej, na stronie jest dużo wartościowych informacji, na pewno trzeba będzie wrócić po cenne wskazówki.

2. Real Tracking and Shooting Portal Turret


Nieruchoma kamerka internetowa, działka ruchome. Sterowanie serwosilnikami przez Arduino, przetwarzanie obrazu – PC + Matlab. Miałem na studiach do czynienia z taką kombinacją. Dobrze to wspominam, bo w Matlabie przetwarzanie obrazu można było sprawnie zrobić, jednak szybkość działania algorytmu dupy nie urywała. Wysoki poziom abstrakcji w zamian za obniżenie wydajności. Nie wiem dlaczego, ale Arduino działa na mnie jak płachta na byka. Niby ma ułatwiać rozpoczęcie przygody z programowaniem, ale dla mnie to jak uczenie się Esperanto jako języka obcego. Niby można, ale czemu od razu nie zacząć od czegoś bardziej przydatnego?

3. Motion Tracking Turret Robot 


Przykład tego jak niechciałbym, żeby ten projekt się skończył. Flaga na ścianie dopełnia obrazu nędzy i rozpaczy. Ale ale! Jest to co chciałem – projekt na Raspberaku i do tego w Pythonie. Kod źródłowy dostępny, być może będzie można się czegoś ciekawego dowiedzieć. Prędkość działania tego wszystkiego daje trochę do myślenia. Zastanawiam się czy da się to przyspieszyć, czy jednak malina to nie będzie wąskim gardłem całego projektu.

4. Hackerhouse tracking turret


No grubo poczynają. Projekt DIY, filmik na YT bardzo długi, pokazujący częściowo sposób budowy i działania urządzenia. Plany konstrukcji jak i kod udostępniony. Platforma RPI3+Python, więc mój target. Na uwagę zasługuje użycie silników krokowych, ale skoro tak to można było się pokusić o możliwość full obrotu wokół własnej osi. Następne źródło dalszej inspiracji.

Wnioski


Projektów autonomicznych działek w necie jest cała masa. Jest to jak widzę obiekt zainteresowań airsoftgun/paintball -owców. Jak widać wykonania są lepsze i gorsze. Na pewno nie chcę jakiegoś ustrojstwa zlepionego z kiblowych rurek poklejonych klejem na gorąco, aczkolwiek można się spodziewać, że projekt przejściowo będzie tak właśnie wyglądał. Wszystkie te projekty szczerze mówiąc pozostawiają trochę do życzenia. W sumie łatwo mi mówić – "zrób własne i pogadamy". Ale jakoś to wszystko wolno i tochę chaotycznie działa. Odnoszę wrażenie, że być może moje wyobrażenia, co można zrobić na Raspberry PI mogą być, że tak powiem, zbyt wygórowane. Nie traćmy jednak zapału i chęci, zobaczymy co da się zrobić.


Sunday, March 5, 2017

Hello world

Witam,
nie jestem wybitnie estetą, ale nie lubię jak mi ktoś sra na balkon. Generalnie tym kimś są gołębie, zakała każdego miasta. Ludzie mają na ten problem różne rozwiązania – niektórzy obwiązują balkon reklamówkami (?), niektórzy stawiają na poręczy wypchane orły, niektórzy zabudowują balkon. A ja chce wysłać tym skrytosrajcom wyraźny komunikat, że to miasto jest za małe dla nas dwóch. Zamiast chować im pod kołdrę głowę konia, postanowiłem zbudować działko, które będzie razić wrażych wrogów promieniami śmierci.

Cele projektu

Jak wiadomo zmusić się aby w wolnym czasie nad sobą pracować nie jest łatwo. Jeszcze trudniej, kiedy w tym wszystkim nie widać jakiegoś konkretnego celu. Poprzez zrobienie tego projektu chciałem sobie właśnie ten cel postawić. Nie przewidując jaki będzie finalny wygląd projektu, na pewno dostarczy sporo dobrej zabawy.

Jest to jeden z projektów z szuflady, który chodził mi po głowie już od kilku lat. Głównym jego celem projektu jest nauczenie się czegoś nowego. Mam na liście kilka technologii/urządzeń z którymi chciałbym się zapoznać, a z którymi w dotychczasowej pracy zawodowej jako elektronika/programisty embedded nie miałem styczności albo miałem ją w bardzo małym zakresie. W tym projekcie chciałbym skupić się na dwóch rzeczach szczególnie, a mianowicie:

1. Python
2. Raspberry PI

W pracy zawodowej przydaje się czasem znajomość jakiegoś języka skryptowego, aby szybko napisać jakiś programik do przetworzenia a to pliku tekstowego, a to do wygenerowania jakiegoś zestawu danych. Ludzie, którzy mają styczność z Pythonem wielce sobie go chwalą, że taki wspaniały program napisali, a zajął 4 linijki. No to czemu nie spróbować. Z tego co się orientuję jest w Pythonie wiele bibliotek ułatwiających wiele rzeczy. Dlaczego więc nie spróbować zaprząc go do przetwarzania obrazu z kamery? Gdzieś tam na studiach miałem zajęcia z przetwarzania obrazu, nawet to lubiłem, ale pamiętam że była masa obliczeń żeby tylko wykryć trójkąty i kwadraty na zdjęciu. Zobaczymy jak od tego czasu technika posunęła się do przodu.

Skoro już mamy program, trzeba go na czymś odpalić. Podłączenie kamery do peceta byłoby najprostszym wyjściem, ale daleko mu do przenośnego rozwiązania. Stąd wykorzystanie Raspberry PI, o którym wiele dobrego słyszałem. Może nie będzie to też idealnie zminiaturyzowane, ale użycie maliny rozwiązuje wiele problemów i oszczędza czas. Przede wszystkim nie trzeba będzie projektować dedykowanej płytki z mikrokontrolerem, ponadto mamy już gotowy system operacyjny i ogromne wsparcie internetów. Bez problemu można będzie programować w Pythonie, a przynajmniej tak mi się wydaje. Ponadto, używanie wszelkiego dodatkowego sprzętu będzie sporo ułatwione. Podłączenie na start jakiejś kamerki internetowej nie będzie wymagało dużo wysiłku, właściwie podejrzewam że sama się wykryje i zainstaluje. Będzie trzeba napisać kawałek firmwaru do niestandardowego sprzętu (na przykład armatki wodnej), ale napisanie driverka do hardwaru to sam miód i możliwość pozyskania dodatkowego doświadczenia.

Przewidywane komplikacje

Słabo znam się na linuksie, a jeszcze słabiej na pythonie. Znaczy na pythonie nie znam się w ogóle, trzeba więc będzie zacząć od „hello world”. Jakieś tam podstawy w programerce mam, robię głównie w C, ale Java czy C# nie jest mi obca. Więc może tak tragicznie nie będzie. No to trzeba zakasać rękawy, zebrać sprzęt i oprogramowanie i do roboty.