Zacznij programować pojazdy autonomiczne
Temat pojazdów autonomicznych, choć z pozoru wydaje się abstrakcyjną wizją przyszłości, tak naprawdę dotyczy nas wszystkich. Transport to w końcu nie tylko samochody prywatne, ale także logistyka, służby czy transport zbiorowy - wszystko to, bez czego nie wyobrażamy sobie codzienności. Już teraz powszechne stają się samochody poruszające się bez udziału kierowcy, sterowane przez zaawansowane algorytmy oparte na sztucznej inteligencji. Takie pojazdy w przyszłości będą więc miały realny wpływ nie tylko na poprawę bezpieczeństwa na drogach, zmniejszenie ulicznych korków, ale również przyczynią się do usprawnienia systemu dostaw, interwencji służb czy optymalizacji zużycia paliwa.
Kim jesteśmy i czym się zajmujemy?
W obliczu dynamicznego wzrostu zainteresowania technologią pojazdów autonomicznych, zaistniała potrzeba rozwijania bezpiecznego i niezawodnego oprogramowania dla pojazdów autonomicznych. Nie czekając na gotowe rozwiązania, grupa studentów z Koła Naukowego Robotyków Politechniki Warszawskiej w ramach projektu “Selfie” pracuje nad pojazdami autonomicznymi w małej skali. Rozwijanie takich modeli daje możliwość testowania i ewaluacji algorytmów, które mogą zostać zastosowane w pojazdach o rzeczywistych rozmiarach.
W trakcie dwuletniej działalności zespół “Selfie” stworzył cztery w pełni autonomiczne pojazdy startujące z sukcesami w zawodach na całym świecie. Studenci mają na swoim koncie między innymi zwycięstwo na międzynarodowych zawodach IARRC w Kanadzie oraz udane występy na zawodach CaroloCup w Niemczech.
Osiągnięcie takich wyników nie byłoby możliwe bez zgranego zespołu, w skład którego wchodzą: elektronicy, mechanicy oraz programiści. Ci ostatni stanowią największą grupę i są odpowiedzialni za projektowanie oraz implementację algorytmów autonomicznej jazdy, wykorzystując w tym celu platformę programistyczną Robot Operating System – w skrócie ROS.
Ale czym tak naprawdę jest ROS?
Przy projektowaniu oprogramowania pojazdu autonomicznego należy wziąć pod uwagę wiele czynników i zależności. Aby pojazd mógł się poruszać w przestrzeni, konieczne jest dostarczenie informacji o otoczeniu, które następnie należy odpowiednio przetworzyć i na tej podstawie wysterować napędy pojazdu. Dodatkowym ograniczeniem jest fakt, że taki program musi działać w czasie rzeczywistym. Z pomocą przychodzi ROS - framework do tworzenia oprogramowania robotów.
ROS odciąża programistę od wielu niskopoziomowych zagadnień poprzez dostarczenie gotowych narzędzi do komunikacji, debugowania i wizualizacji. Ponadto umożliwia rejestrowanie danych testowych, które następnie można odtworzyć na innym komputerze. Dzięki temu każda zmiana w programie może być wstępnie przetestowana bez konieczności kontaktu z docelową platformą.
Jeżeli przyjrzymy się ilości zagadnień, które porusza program do autonomicznej jazdy, zamknięcie wszystkiego w jedną pętlę while
może okazać się niezbyt trafionym pomysłem. A gdyby tak zastosować znaną w informatyce zasadę „Dziel i zwyciężaj”, bazującą na rozbiciu większego zagadnienia na wystarczająco małe problemy, prostsze do rozwiązania? Takie podejście proponuje ROS, wprowadzając modularną budowę, której podstawą są małe podprogramy - węzły (ang. node).
Np. jeden z węzłów jest odpowiedzialny za obsługę kamery rejestrującej otoczenie pojazdu. Jego zadaniem jest odebranie klatki obrazu z kamery i przekazanie jej w odpowiedniej formie do kolejnego węzła, który zajmie się wykryciem linii na obrazie. Po tej operacji informacja przekazywana jest do kolejnego węzła, który wyznaczy ścieżkę, po której będzie poruszał się pojazd. Póki będzie możliwe wystawienie sygnału sterującego na napędy, informacja przejdzie jeszcze przez kilka węzłów. W tym samym czasie równolegle odbywać się będzie przetwarzanie kolejnych klatek obrazu. Taki schemat działania zapewnia spełnienie wymagań pojazdu autonomicznego.
Nie należy traktować platformy ROS jako systemu docelowego. Oprogramowanie implementowane na pojazdach rzeczywistych rozmiarów opiera się na dedykowanych systemach, które zapewniają odpowiednią wydajność i standardy bezpieczeństwa. ROS to przede wszystkim wygodny framework do szybkiego prototypowania rozwiązań, które mogą być wykorzystane w komercyjnych konstrukcjach. Mnogość zalet, szerokie zastosowanie oraz otwarty dostęp sprawiają, że jest to potężne narzędzie dla początkujących, którego znajomość jest niezbędna, aby rozpocząć przygodę z autonomią.
Podsumowanie i zaproszenie na event
Z reguły zagadnienia związane z platformą programistyczną ROS na pierwszy rzut oka wydają się skomplikowane i nieoczywiste. Zrozumienie samej budowy platformy stanowi nie lada wyzwanie, a zaprojektowanie całego systemu sterowania stanowi pewien rodzaj abstrakcji. Powyższy artykuł stanowi jedynie krótki opis będący wstępem do zagadnienia algorytmów pojazdów autonomicznych małej skali. Jeżeli ten temat Cię zaciekawił i chciałbyś dowiedzieć się więcej, zapraszamy na naszą prelekcję pt. ”Zróbmy sobie „Selfie” – oprogramowanie pojazdu autonomicznego”, którą wygłosimy w ramach Targów Kariery IT Career Summit 2019 już 26 września na Stadionie Legii w Warszawie.
Udział jest bezpłatny, ale ilość miejsc ograniczona, zatem nie czekaj i zarejestruj się już dziś.
Liczymy na Twoją obecność ?
Do zobaczenia.
Autorzy
Mateusz Marczuk
Junior Software Engineer
Maciej Krasa
Młodszy programista C# / C++