30 października 2016

Kult węża powraca - PyCon PL 2016, to była wspaniała konferencja

Jak zwykle niezmiernie miło gościć na konferencji, gdzie wiele osób z różnych branż wierzy w kult węża. Pamiętam mój wpis o wizycie na konferencji PyCon PL 2008, który odbył się w Rybniku i utkwił mi dobrze w pamięci. Najpewniej z powodu wygranej wówczas książki Agile Development, czyli w czasach kiedy SCRUM i XP były tylko teorią. Powód drugi to rok 2008 i ok. 130 osób łącznie obecnych i ok. 30 programistów Pythona a reszta raczej PHP.

Można powiedzieć, że w 2008 roku znałem wszystkich programistów Pythona w Polsce :-). I powrót do teraźniejszości - w 2016 roku następuje niezły skok w dziejach zainteresowanych językiem programowania Python: ok. 650 osób i wwygląda na to, że powyżej 600 to aktywni programiści Pythona. Naprawdę świetne wydarzenie, kreatywni ludzie i podręcznikowe warunki bytowe.
Moim zdaniem do 2020  język Python to będzie coś bliżej miejsca trzeciego w TOP5 wśród języków programowania ogólnego przeznaczenia. To jest przecież współczesny "BASIC" na sterydach ;-)

Szacunek w stronę organizatorów, że nadal po tylu latach jest drukowana tradycyjna książeczka PyCon PL z wybranymi wykładami na papierze. Wspominam o tym, bo w dobie PDFów, mobi, czytników ebooków to jest rarytas.

Nie przestaję uczyć się i eksperymentować w Pythonie i polecam wszystkim ziomkom, którzy dotknęli PHP oraz Java, gdyż można się przy programowaniu w Pythonie wyluzować. Nie spotkałem w Pythonie biblioteki, która nie spełniałaby założeń i wymagałaby grubego fixa. W PHP jest tego nadal moim zdaniem ~1/3 z popularnych libek. Co do Java, to ubolewam nad brakiem standardowego/jednolitego wsparcia do obróbki obrazków i oczywiście, jak to w świecie komercyjnym bywa za jakiś czas powstanie 40 libek.forków tej samej i będzie co testować ;)

Do zobaczenia na kolejnym PyCON PL :-)

23 października 2016

Platforma programistyczna do tworzenia robotów ROS (Robot Operating System) pomaga inżynierom już 8 lat

Jak większość ludzi z branży IT w tym również ja, nie przechodzę obojętnie obok robotów i tematów związanych z robotyką. Tym razem warto spojrzeć na platformę do oprogramowania robotów ROS.

Tak wiele jest przeróżnych amatorskich rozwiązań do zbudowania robotów w oparciu o OpenSource + Arduino + gotowe moduły, że każdy z Nas, po zbudowaniu kilku robotów i skopiowaniu/zmodyfikowaniu poprzedniej wersji kodu (udoskonaleniu lub zmianie algorytmów) przychodzi w stan refleksyjny z serii "co dalej...". Jak to była w inżynierii warto zastanowić się, jak daleko chcemy zajść w konstrukcjach robotycznych. Każda sklejanka bibliotek różnej maści, która działa i cieszy amatora konstruktora jest czymś pozytywnym i jak najbardziej odkrywczym. Jednak kiedy mamy plany dalekosiężne w budowanie robotów i chcemy odkrywać więcej ciekawych możliwości - i rozwijać się w oprogramowaniu ciekawszych - robotów przychodzi nam na myśl słowo framework. Najbardzej marzy się nam platforma do konstruowania robotów. Właściwą odpowiedzią an takie potrzeby będzie ROS (Robot Operating System), czyli projekt OpenSource, który doczekał się wersji produkcyjnej i w zagościł w laboratoriach wielu dużych graczy na rynku w konstrukowaniu nowoczesnych robotów.

Na wstępnie filmik pokazujący możliwości jakie na dzień dzisisejszy posiada ROS - miłego oglądania.

Spróbuję wyjaśnić pokrótce, dlaczego platformę ROS uważam za profesjonalny produkt OpenSource.
Na wielu forach internetowych i w dyskusjach z ludźmi spotykam się z opiniami, że programiści oprogramowania robotów nie mają czasu poznać ROS, chociaż bardzo by chcieli. Jawi się im to jako zbyt duży system i niezbyt pasujący do ich np: samojezdnych robotów. Z drugiej strony wszelkie nowoczesne funkcjojnalności t.j. rozpoznawanie otoczenia przez robota, unikanie przeszkód, komunikacja intersystemowa, wizualizacja trasy w 3D, itp. chętnie by uruchomili na swoim robocie. Czas najwyraźniej zmienić sposóśb patrzenia na budowanego robota z zabawki na produkt. Jest wówczas spora szansa na uzyskanie wymienonych wyżej funkcjonalności niejako z paczki :-) Tak, dokładnie chodzi mi o "nie wymyślanie koła od nowo" i to daje programistom robotów platforma ROS.

Chciałbym przedstawić, co można zrobić w takiej platformie oprogramowania robotów Open Source jaką jest ROS. Przede wszystkim ROS to ekosystem, który składa się z:

Na poniższym filmie widać, że ROS to nie tylko soft do robotów, ale również do prototypowania interfejsów bazujących na szkieletowych/szablonowych ruchach człowieka używanych do sterowania (w tym przypadku żółwiem)

Poniżej zamieszczam przykład użycia platformy ROS do eksperymentu z robotem, który porusza się w środowiksu i poznaje je, dzięki czemu prędkość robota zależy od wiedzy o otoczeniu a nie jest blokowana przez kolizję z otoczeniem. Bardzo kompleksowy eksperyment, który naświetla też, jak wybgląda zestaw narzędziowy ROS i jak elastycznie można się nim posługiwać.

Kolejny przykład to połączenie ROS i OpenCV, czyli biblioteki do rozpoznawania/przetwarzania obrazów. Jest to bardzo silny trend w kierunku AI w robotach, aby używając kamery rozpoznawać kształy, kolory, śledzić cele.

Symulacja i możliwości uruchomienia robota "na sucho" stanowi założenie platformy ROS, więc jeśli chcesz stworzyć coś ciekawego i używać ROS możesz rozpocząć od serii dostępnych tutoriali. Polecam, jest to dość przemyślana platforma robotyczna i dzięku dodatkom rozwiążemy najczęstsze zagadki z robotycznego świata sprawniej, bo użyjemy implementacji wartościowych algorytmów w wersji Open Source. Więc nie trać czasu na zastanawianie się, gdzie warto zacząć uczyć się systemu operacyjnego robotów ROS - poniżej załączam szybki start.

Warto wspomnieć tutaj o wbudowanym w platformę ROS symulatorze 3D o nazwie GAZEBO, dzięki któremu można przećwiczyć system operacyjny naszego robota w wirtualnej rzeczywistości. Tak, można poustawiać meble, przeszkody, ściany, labirynty i obejrzeć, co zrobi nasz robot ew. farma robotów. Najważniejsze jest to, że zdarzenia systemowe na kolejkach oraz zmienne wystawione z robota możemy róœeniż podglądać na bierząco, co pozwoli nam wychwycić wcześnie wady naszego oprogramowania i pozwoli zaoszczędzić cenny czas.

Linki:
Wprowadzenie do systemu operacyjnego robotów ROS - przykład kodu w języku Python
Pi Robot - ROS pomaga w nawigacji
Polecane książki n.t. ROS Mastering ROS robotic programming ROS w przykładach
Hardware ROS
KOnferencja ROS 2016 - dostępne są filmy i filmy z każdej prelekcji
Nauka programowania robotów z użyciem języka Python