Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2018/08/WP_20171208_13_57_24_Pro-1.jpg

System samolokalizacji robota mobilnego z wykorzystaniem oprogramowania Matlab&Simulink


Większości z nas Matlab i Simulink kojarzą się głównie z nudnymi zajęciami na uczelni. Nie warto się jednak do nich zniechęcać, ponieważ pakiet ten oferuje narzędzia umożliwiające modelowanie i wykonywanie różnorodnych symulacji układów dynamicznych, począwszy od prostych symulacji, a skończywszy na zaawansowanych technikach takich jak regulatory rozmyte czy sieci neuronowe. Za pomocą Matlaba można nawet zaprogramować robota mobilnego! W tej publikacji chciałbym przedstawić wam projekt systemu samolokalizacji robota mobilnego, który wykonałem na potrzeby pracy dyplomowej realizowanej na Politechnice Lubelskiej pod kierunkiem dr Pawła Stączka.


Wymagania projektowe

Robot mobilny ma za zadanie lokalizować się w obszarze pracy w oparciu o siatkę znaczników rozmieszonych na podłożu. Lokalizacja ma odbywać się z wykorzystaniem automatycznej analizy obrazu z kamery zainstalowanej na robocie. Robot będzie w stanie bezprzewodowo odbierać informacje na temat punktu zadanego z komputera osobistego oraz okresowo nadawać do niego informację na temat swojego aktualnego położenia, oraz orientacji.

Dla potrzeb niniejszego projektu sformułowano następujący ogólny algorytm nawigowania robota. Umieszczony w losowo wybranym miejscu robot poszukuje znacznika poruszając się po trajektorii zbliżonej do kwadratu, zwiększając po każdym zwrocie długość boku – dystans do przejechania. W momencie znalezienia znacznika robot ma za zadanie: zatrzymać się, przeanalizować obraz, odkodować identyfikator znacznika, określić swoją pozycję względem znacznika oraz w globalnym układzie współrzędnych. Następnie robot ma dojechać do punktu docelowego, który jest zadawany za pomocą komputera osobistego. Jeśli w punkcie docelowym znajduje się znacznik, to robot zatrzymuje się, uaktualnia swoją pozycję względem globalnego układu współrzędnych analizując znacznik i kończy działanie. Jeśli po minięciu punktu zadanego robot nie odnajdzie kolejnego znacznika, to rozpoczyna on od nowa proces poszukiwania znacznika, jeżdżąc po trajektorii zbliżonej do kwadratu o powiększanej długości boku.

Znaczniki pozycji rozmieszczone są na podłożu w węzłach prostokątnej siatki o jednakowych rozmiarach prostokątnej lub kwadratowej komórki. Siatka znaczników zbudowana jest na kształt prostokąta, w którego środku rozmieszczone są znaczniki pozycji. Znacznik składał się będzie z trzech kół o różnych średnicach oraz kodu kreskowego, do którego przypisane będą współrzędne (x,y) pozycji znacznika w globalnym układzie współrzędnych pracy robota. Wszystkie znaczniki będą zorientowane w kierunku równoległym do osi x i będą znajdować się na białym tle.

Struktura układu sterowania

W skład układu sterowania robota mobilnego wchodzą trzy urządzenia:

Pierwszym z nich jest mikrokontroler Arduino Due pracujący jako kontroler podrzędny. Jest on odpowiedzialny za regulację prędkości i drogi kół oraz realizację algorytmów obliczeniowych odometrii. Umożliwia to wyznaczanie aktualnego położenia robota w lokalnym układzie współrzędnych oraz jego aktualnego kąta względem położenia początkowego.

Drugim z kolei jest minikomputer Raspberry Pi 3 Model B, który pełni rolę kontrolera nadrzędnego. Jest on połączony interfejsem szeregowym z Arduino Due, z którym to cyklicznie się komunikuje w celu wymiany danych. Odpowiada on za przetwarzanie obrazu z kamery oraz planowanie trajektorii ruchów robota.

Ostatnim elementem systemu jest komputer osobisty. Jest on połączony siecią bezprzewodową Wi-Fi z Raspberry. Umożliwia on zdalne zadawanie przez operatora współrzędnych punktu, do którego ma dojechać robot oraz monitorowanie pracy układu sterowania.

Metoda kodowania współrzędnych znacznika

Aby pojedynczy znacznik był wystarczający do lokalizacji, powinien on zawierać w sobie dostateczną ilość informacji. Opracowany na potrzeby algorytmu płaski znacznik zbudowany jest z kodu kreskowego oraz trzech kół o różnych średnicach. W każdym z kodów kreskowych zakodowane są współrzędne x oraz y globalnego układu współrzędnych przypisanych do tego znacznika.  Koła umożliwiają określenie aktualnej pozycji robota względem znacznika. W celu lokalizowania robota w kilku miejscach, w pomieszczeniu został stworzony zestaw odróżnialnych znaczników, różniących się między sobą zakodowanym ciągiem cyfr. W celu ułatwienia dekodowania jest on czarnego koloru i znajduje się na białym tle. Wszystkie znaczniki są zorientowane w jednakowy sposób.

Znaczniki rozmieszczone są na podłodze w węzłach prostokątnej siatki. Każdy znacznik oddalony jest od najbliższego o stałą odległość L, która może być dowolnie modyfikowana. W celu odczytania współrzędnych znacznika należy zdekodować wartość liczbową przypisaną do kodu kreskowego. Po wymnożeniu pierwszej cyfry kodu przez stałą L otrzymuje się współrzędną znacznika w osi x, a po wymnożeniu dwunastej cyfry przez stałą L otrzymuje się współrzędną znacznika w osi y. Znacznik przedstawiony w początkowej części artykułu koduje wartość swoich współrzędnych w następujący sposób:                                                                                                                            x = 3 ∙ L                                                                                              y = 5 ∙ L

Algorytm odczytu pozycji

Głównym zadaniem opracowanego algorytmu przetwarzania obrazu jest ustalenie globalnych współrzędnych robota, posługując się lokalnym układem współrzędnych oraz znacznikiem pozycji. Proces lokalizacji robota z użyciem systemu wizyjnego i analizy obrazu przebiega według typowego schematu obróbki obrazu.

Każda zarejestrowana przez kamerę klatka obrazu jest przekształcana do postaci cyfrowej, a następnie filtrowana w celu poprawy jakości obrazu i ułatwienia dalszych operacji. Segmentacja ma na celu oddzielenie szukanych obiektów od tła obrazu, co w przypadku realizowanego systemu oznacza wyodrębnienie trzech kółek oraz kodu kreskowego. W procesie analizy znacznik jest dekodowany oraz ustalana jest jego pozycja w kartezjańskim układzie odniesienia.

Pierwszym etapem działania algorytmu jest poszukiwanie trzech kół wchodzących w skład znacznika. Zasada jego działania polega na analizę każdej klatki obrazu wejściowego i poszukiwaniu trzech kół o określonych polach powierzchni. Wejściowy obraz RGB konwertowany jest na obraz w odcieniach szarości, a następnie binaryzowany. Zbinaryzowany obraz poddawany jest segmentacji oraz analizie, podczas których algorytm zwraca takie wartości odnalezionych obiektów jak pole powierzchni, ekscentryczność i współrzędne środków, które wykorzystywane są później do identyfikacji kół przyporządkowanych do znacznika.

Wyznaczanie położenia robota względem znacznika

W celu wyznaczenia położenia robota względem odnalezionego znacznika należy odnaleźć środek znacznika, będący punktem odniesienia przy ustalaniu pozycji robota. W realizowanym projekcie założono, że środkiem znacznika będzie środek przeciwprostokątnej trójkąta powstałego poprzez połączenie ze sobą środków kół. Wszystkie te informacje nanoszone są na obraz przez Matlaba.

Kąt podjazdu robota na znacznik wyznaczono posługując się krawędziami obrazu. W tym celu zostały wyznaczone równania prostych równoległych do krawędzi obrazu, które pomagają w wyznaczeniu kąta pomiędzy przeciwprostokątną trójkąta a górną krawędzią obrazu.

Dekodowanie identyfikatora pozycji

Do dekodowania identyfikatora pozycji w postaci kodu kreskowego został użyty algorytm zawarty w przykładowych programach Matlaba o nazwie „Barcode Recognition”. Pozwala on na interpretacje kodów kreskowych typu GTIN-13, czyli standardowych kodów kreskowych używanych w przemyśle.

Wyznaczanie współrzędnych globalnych robota

Do wyznaczenia współrzędnych robota i jego orientacji w globalnym układzie współrzędnych została wykorzystana pozycja robota względem znacznika oraz współrzędne odczytane z identyfikatora pozycji.

Aby algorytm odpowiedzialny za odczytywanie kodu mógł zadziałać, co najmniej dwie linie skanujące muszą przechodzić przez kod. Robot może podjechać na znacznik z każdej strony, co powoduje, że kod kreskowy nie zawsze jest odczytywany. W celu korekcji położenia kodu kreskowego względem linii skanujących należy obrócić obraz o wyznaczony wcześniej kąt, a następnie obrócony obraz poddać analizie.  W efekcie obrotu obrazu znacznik znajduje w pozycji równoległej do dolnej krawędzi obrazu niezależnie od kąta najazdu robota na znacznik. Umożliwia to zdekodowanie identyfikatora pozycji bez względu na pozycję robota względem znacznika oraz odczytanie współrzędnych przypisanych do jego środka.

Dysponując odległością robota od znacznika oraz współrzędnymi środka znacznika można wyznaczyć współrzędne robota w globalnym układzie współrzędnych. Odległość robota od znacznika wyznaczana jest w układzie współrzędnych obrazu. Specyficzne rozmieszczenie i orientacja znaczników w globalnym układzie współrzędnych powodują, że układ współrzędnych obrazu jest obrócony względem globalnego układu o wcześniej wyznaczony kąt. Znając kąt, pod jakim zorientowane są między sobą dwa analizowane układy, można przenieść odległości z układu obrazu na układ globalny, posługując się funkcjami trygonometrycznymi. Wszystkie wyznaczone wartości oraz współrzędne globalne robota można monitorować w Simulinku w czasie rzeczywistym. Przy wyznaczaniu współrzędnych znacznika przyjęto, że L = 600mm.

Algorytm wyznaczania trasy przejazdu

Algorytm wyznaczania trasy ściśle współpracuje z algorytmem przetwarzania obrazu. W jego skład wchodzi moduł odometrii oraz algorytm zapisany w postaci diagramu stanów, który w zależności od sygnałów z kamery oraz enkoderów oblicza wartości zadane prędkości dla układu sterowania silnikami kół. Efektem działania algorytmu jest poszukiwanie przez robota znacznika, zlokalizowanie się w globalnym układzie współrzędnych i dojazd do punktu docelowego.

Poszukiwanie znacznika pozycji

Robot poszukuje znacznika, poruszając się po trajektorii zbliżonej do kwadratu, przy czym co drugi zwrot długość boku kwadratu jest zwiększana. W efekcie tego robot porusza się po „kwadratowej spirali”. Kolejne odcinki trajektorii zwiększane są o długość równą połowie szerokości obrazu widzianego przez kamerę, co eliminuje ryzyko ominięcia znacznika przez robota. Algorytm poszukiwania znacznika wykorzystuje informacje o pozycji oraz orientacji robota estymowane z odometrii. Po przejechaniu zadanego dystansu robot obraca się o 90 stopni, a następnie ponownie przejeżdża ten sam dystans. Odległość do przejechania zwiększana jest co 180 stopni, dając efekt „spirali”.

Jazda do punktu docelowego

Ostatnim etapem działania algorytmu jest dojazd do punktu o współrzędnych zadanych z poziomu komputera osobistego. Znając współrzędne globalne robota oraz współrzędne punktu docelowego można obliczyć kąt, o jaki robot musi się obrócić, aby był on skierowany w kierunku punktu zadanego. W tym celu należy rozważyć położenie robota względem zadanego punktu. Kierunek obrotu jest zależny od wartości kąta, o jaki musi obrócić się robot i dobierany jest w taki sposób, aby kąt obrotu nie był większy niż 180 stopni.

Po obliczeniu wymaganego kąta obrotu robot obraca się o żądany kąt, a następnie porusza się ruchem prostoliniowym w kierunku punktu zadanego. Odległość pomiędzy robotem a punktem zadanym jest obliczana na bieżąco podczas jazdy. Początkowo porusza się on z dużą prędkością, lecz gdy zbliży się do punktu docelowego na odległość mniejszą niż 250 milimetrów, to prędkość się zmniejsza. Algorytm poszukuje znacznika, dopiero gdy robot zmniejszy swoją prędkość, co uniemożliwia odczytanie innego znacznika niż ten, który znajduje się we współrzędnych punktu zadanego. Z uwagi na małą dokładność odometrii oraz błędy spowodowane przetwarzaniem obrazu i przeliczaniem pikseli na milimetry możliwe jest, że robot nie trafi na znacznik docelowy. Jeśli tak się stanie i robot przejedzie punkt docelowy, nie rejestrując identyfikatora pozycji, to rozpoczyna on poszukiwanie znacznika, poruszając się po „kwadratowej spirali”. Gdy robot odnajdzie znacznik, to się zatrzymuje, aktualizuje swoją pozycję w globalnym układzie współrzędnych i algorytm oczekuje wyznaczenia kolejnego punktu docelowego.

Test działania systemu

Na powyższym filmie widoczny jest cały proces działania systemu – począwszy na poszukiwaniu najbliższego znacznika, a skończywszy na dojeździe do punktu docelowego (w tym przypadku dolny prawy znacznik). Robot po włączeniu zasilania oczywiście nie zna swojej pozycji. W prawym dolnym rogu widoczny jest podgląd z kamery oraz podgląd działania algorytmu przetwarzania obrazu (celowo zamrożona, aby odciążyć kontroler). Na zakończenie widoczny jest zrzut ekranu z widoczną trajektorią przejazdu robota wyznaczona z odometrii.

Jak widać, system spełnia swoją funkcję, lecz nie jest wystarczająco dokładny. Dokładność lokalizacji robota zależy przede wszystkim od prędkości jego ruchu. Algorytm przetwarzania obrazu okazał się zbyt wymagający dla kontrolera robota, co skutkuje opóźnieniem estymacji rzeczywistej pozycji robota. To z kolei jest przyczyną spóźnionej reakcji na odnaleziony znacznik i mijania go. Występują również błędy w odtwarzaniu zadanej trajektorii ruchu robota. Pomimo stosunkowo szybkiej komunikacji pomiędzy kontrolerami oraz zastosowaniu poprawki korygującej zdarzało się, że robot zatrzymywał się w pozycji kątowej różniącej się od wymaganej o +/- 2°, co wpływa znacząco na kierunek jazdy robota i szansę na trafienie na znacznik docelowy.

Wszystkie algorytmy użyte w projekcie zostały zakodowane i skompilowane z użyciem środowiska programistycznego Matlab&Simulink.

 

>>Dodane w ramach konkursu iAutomatyka. Weź udział i wygrywaj nagrody.<<

 



Utworzono: / Kategoria: ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Selektor napędów Panasonic umożliwia przeglądanie napędów z serii MINAS, wyszukiwanie ich w prosty sposób, a nawet porównywanie ze sobą. Dzięki wyszukiwaniu po słowach kluczowych i przy użyciu funkcji filtrowania, potrzeba zaledwie sekund a...
  • W trybie refleksyjnym sygnał ultradźwiękowy jest nieustannie odbijany przez zamontowany na stałe element odbijający wiązkę, tzw. element odniesienia. Jako elementu odbijającego wiązkę można używać odpowiednio ustawionego panelu z plastiku l...
  • Obsługa za pomocą urządzeń mobilnych zapewnia wygodę i ciągłość pracy Operatorzy maszyn mogą teraz płynnie przełączać kontrolę nad maszyną między głównym interfejsem HMI a urządzeniami mobilnymi. Nowa funkcja systemu mapp View firmy B&R...
  • Ekonomiczne monitorowanie i sterowanie, teraz także dzięki panelom 2 generacji. Dzięki odpowiedniemu doborowi funkcji HMI, panele Basic 2 generacji stanowią doskonałe rozwiązanie przy produkcji maszyn lub w małych aplikacjach przemysłowych....
  • To rozwiązanie oparte o technologię LoRaWAN pozwala skutecznie realizować działania ograniczające ryzyko rozprzestrzeniania się wirusa . Możliwość automatycznej kontroli dystansu z jednoczesnym monitoringiem relacji i wstecznym śledzeniem k...
  • System MasterIN firmy Finder składa się z przekaźnikowych modułów sprzęgających z terminalami Push-in. Technologia ta reprezentuje najnowsze osiągnięcia w bezśrubowych ‘sprężynowych’ zaciskach, oferujących szybką instalację. W porównaniu do...