Lego MindStorms, robot, programowanie sterownika RCX, Lego Assembler, Visual Basic, projekty robotów
lego mindstorms, sterownik RCX, LASM, VB, sterowniki, robotyka, roboty, projekty lego, projekty robotów, algorytm
Tytuł mojej pracy magisterskiej: "Metody i algorytmy pozycjonowania robota mobilnego". Głównym założeniem projektu było pokazanie możliwości wykorzystania zestawów Lego MindStorms w praktyce poprzez zaimplementowanie systemu sterującego robotem, który wykorzystując algorytm planowania ruchu, umożliwi robotowi przemieszczenie się od zadanego punktu początkowego do końcowego unikając kolizji z przeszkodami i przy zapenieniu odpowiedniej jakości ruchu.

Celem pośrednim była implementacja aplikacji umożliwiającej w pełni sterowanie mikrosterownikiem RCX 1.0, który jest podstawowym modułem zestawu Lego MindStorms. Aplikacja może być wykorzystana do sterowana online dowolnym pojazdem lub inną konstrukcją zbudowaną z zestawów Lego MindStorms. Gotową aplikację możesz za darmo pobrać klikając tutaj.
Do budowy aplikacji wykorzystno dwa języki programowania - Visual Basic 6.0 (VB) oraz Lego Assembler (LASM). Visual Basic przetwarzał obraz z kamery oraz wyznaczał trajektorię robota przy użyciu algorytmu grafu widoczności. Lego Assembler odpowiadał za komunikację pomiędzy główną aplikacją napisaną w Visual Basicu a sterownikiem RCX. Visual Basic można pobrać za darmo klikając tutaj. Aby móc korzystać z LASM w VB konieczne jest zainstalowane LEGO MINDSTORMS SDK 2.0 , które możesz pobrać klikając tutaj. Po zainstalowaniu będziesz miał dostęp materiałów opisujących język LASM.
Aby robot mógł pracować w otoczeniu niezdeterminowanym i aby był zdolny reagować na sytuacje nieprzewidziane przez programującego go człowieka, należy robotowi zapewnić zdolność oglądania otoczenia, w którym ma się poruszać. Konieczne staje się zaopatrzenie robota w sztuczny system wizyjny. Robot bez układu wizji może co prawda funkcjonować m.in. dzięki wiedzy dostarczonej przez algorytm sterowania, jednak działanie to jest prawidłowe tylko przy założeniu niezmienności otoczenia. W pracy założono, że jako system wizyjny robota wykorzystana będzie kamera internetowa.
Obraz obserwowany przez kamerę przekształcany jest na postać cyfrową. Zastosowana kamera była czujnikiem biernym, którego głównym zadaniem było określenie położenia robota oraz pozostałych elementów otoczenia. Obraz z kamery przekazuje o wiele więcej danych, niż informacje pochodzące z czujników aktywnych. Daje to możliwość pełnego rozpoznania otoczenia oraz wyznaczenie dokładnej trajektorii robota mobilnego.
Do przechwytywania obrazu z kamery internetowej w Visual Basicu wykorzystano komponent stworzony przez Roy'a Mercer'a pod nazwą ezVidCap Component by Ray Mercer (VB6). Niezbędne pliki można pobrac za darmo klikając tutaj.
Metody planowania ruchu robotów mobilnych dzielimy na globalne i lokalne w zależności od zakresu dostępnej informacji o otoczeniu robota w fazie planowania ruchu. Metody globalne zakładają znajomość rozkładu wszystkich przeszkód w środowisku robota. Metody lokalne zakładają dostępność informacji o przeszkodach tylko w najbliższym otoczeniu pojazdu. Położenie kamery będącej jedynym czujnikiem wykorzystywanym w tej pracy, która nie zmieniała swojego położenia i rejestrowała cały obszar po którym poruszał się robot umożliwiała wykorzystanie tylko metody globalne. Wybrano metodę grafu widoczności.
Graf widoczności planuje bardzo efektywnie optymalny tor ruchu robota mobilnego na płaszczy1nie przy założeniu, że przeszkody przyjmują kształt wieloboków foremnych. Trajektorie wyznaczane są począwszy od punktu początkowego poprzez połączenie go z widocznymi krawędziami otaczających go przeszkód kończąc na punkcie docelowym.

Zadaniem algorytmu jest znalezienie optymalnej trajektorii ze wszystkich wyznaczonych. Nadając wagi poszczególnym ścieżkom można wykorzystać algorytm Floyda do znalezienia najkrótszej drogi pomiędzy wszystkimi parami wierzchołków w grafie ważonym.
Algorytm wyznaczania optymalnej ścieżki został zaprojektowany dla holonomicznego robota mobilnego. Robot został złożony wyłącznie z klocków wchodzących w skład zestawu Lego MindStorms. Na pojazd została nałożona tekturowa obudowa, która zamieniała obiekt zbudowany z wielu różnokolorowych elementów w obiekt jednorodny. Holonomiczność robota została zrealizowana przy użyciu napędu gąsienicowego, który umożliwiał szybkie i sprawne zmienianie orientacji w miejscu.

Przy projektowaniu aplikacji sterującej robotem mobilnym założono, że będzie on poruszał się do przodu bez możliwości jazdy po łuku. Zmiana kierunku jazdy robota zrealizowana była przez obrót w miejscu o dany kąt. W takim przypadku robot musiał kilkukrotnie zatrzymywać się na ułamek sekundy w czasie jazdy w celu zmiany kierunku przemieszczania.

Uzyskanie idealnych warunków do przeprowadzenia eksperymentów jest bardzo trudne. Wpływ na to ma wiele czynników, jednak wykorzystany system wizyjny niskiego poziomu okazał się wydajnym narzędziem detekcji obrazu.
Zastosowana metoda globalna minimalizowała obliczenia związane z obróbką obrazu, a graf widoczności planował bardzo efektywnie optymalny tor ruchu robota mobilnego.
Zestawy LEGO MindStorms umożliwiają szybkie budowanie różnorodnych konstrukcji mechanicznych, dzięki czemu można korzystać ze swobodnego eksperymentowania i prototypowania.