Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

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.<<

 



21 sierpnia 2018 / Kategoria: ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.



.

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Ochrona przed przepięciami

Ochrona przed przepięciami

>KLIKNIJ<

e-Factory Information Center: Fabryka Przyszłości to udoskonalanie procesów produkcyjnych

e-Factory Information Center: Fabryka Przyszłości to udoskonalanie procesów produkcyjnych

>KLIKNIJ<

Nowe granice szybkości i skalowalności – pakowanie termozgrzewalne

Nowe granice szybkości i skalowalności – pakowanie termozgrzewalne

>KLIKNIJ<

Ciągły wzrost sieci przemysłowych pomimo pandemii

Ciągły wzrost sieci przemysłowych pomimo pandemii

>KLIKNIJ<

SERIA 7M – NOWE INTELIGENTNE LICZNIKI ENERGII

SERIA 7M – NOWE INTELIGENTNE LICZNIKI ENERGII

>KLIKNIJ<

Pomiary ciśnienia rodem z przyszłości – przetworniki z Heartbeat Technology

Pomiary ciśnienia rodem z przyszłości – przetworniki z Heartbeat Technology

>KLIKNIJ<

Video – Łatwa i intuicyjna wizualizacja HMI – poznaj technologię mapp View

Video – Łatwa i intuicyjna wizualizacja HMI – poznaj technologię mapp View

>KLIKNIJ<

Co należy wziąć pod uwagę podczas automatyzacji procesów produkcyjnych przy użyciu robotów?

Co należy wziąć pod uwagę podczas automatyzacji procesów produkcyjnych przy użyciu robotów?

>KLIKNIJ<

Niezawodne zarządzanie wirtualną elektrownią

Niezawodne zarządzanie wirtualną elektrownią

>KLIKNIJ<

Łączniki sterownicze obrotowe T oraz rozłączniki izolacyjne P firmy Eaton

Łączniki sterownicze obrotowe T oraz rozłączniki izolacyjne P firmy Eaton

>KLIKNIJ<

Tramwaj przyszłości – automatyzacja w ruchu publicznym

Tramwaj przyszłości – automatyzacja w ruchu publicznym

>KLIKNIJ<

Twórz, dobieraj, kompletuj szafy elektryczne w nowym sklepie My Rittal

Twórz, dobieraj, kompletuj szafy elektryczne w nowym sklepie My Rittal

>KLIKNIJ<

Firma Martini udoskonaliła pakowanie dzięki technologii OMRON – case study

Firma Martini udoskonaliła pakowanie dzięki technologii OMRON – case study

>KLIKNIJ<

Głowica odczytująco-zapisująca IUT-F190-B40 UHF ze zintegrowanym przemysłowym interfejsem Ethernet oraz REST API rozszerza ofertę produktów RFID firmy Pepperl+Fuchs

Głowica odczytująco-zapisująca IUT-F190-B40 UHF ze zintegrowanym przemysłowym interfejsem Ethernet oraz REST API rozszerza ofertę produktów RFID firmy Pepperl+Fuchs

>KLIKNIJ<

Twój klucz do sukcesu: transmisja danych

Twój klucz do sukcesu: transmisja danych

>KLIKNIJ<

Jak odczarowałem automatykę? Historia prawdziwa [obejrzyj zapis live]

Jak odczarowałem automatykę? Historia prawdziwa [obejrzyj zapis live]

>KLIKNIJ<

PRZELOTOWA ZŁĄCZKA INSTALACYJNA 221 INLINE

PRZELOTOWA ZŁĄCZKA INSTALACYJNA 221 INLINE

>KLIKNIJ<

sHUB czyli koncentrator danych dla serwonapędów

sHUB czyli koncentrator danych dla serwonapędów

>KLIKNIJ<

Roboty, a odkrycia w mikrobiologii

Roboty, a odkrycia w mikrobiologii

>KLIKNIJ<

Jaki przekaźnik do elektrozaworów?

Jaki przekaźnik do elektrozaworów?

Reklama



MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • SICK oferuje całą gamę elektronicznych przetworników pomiarowych ciśnienia i presostatów, które ze względu na inteligentne i wszechstronne możliwości konfiguracji dają się optymalnie dopasować do indywidualnych wymagań klienta. W typowy dla...
  • Rozwiązania wizyjne nadają się idealnie do zautomatyzowanych zadań kontrolnych i pomiarowych. Kamery wizyjne 2D i 3D firmy SICK sprawdzają się w ogromnej ilości aplikacji, polegających na pomiarze, lokalizacji, kontroli i identyfikacji. Nas...
  • Producenci maszyn, integratorzy, operatorzy mediów, firmy serwisujące rozproszone obiekty, np. farmy fotowoltaiczne i wielu innych, wszystkich ich łączy potrzeba zdalnego dostępu do urządzeń za które ponoszą w różny sposób odpowiedzialność....
  • Wyświetlacz słupkowy ITP15 jest kompaktowym wskaźnikiem procesowym, który wizualizuje analogowy sygnał wejściowy w zakresie od 0 do 100% z 10 słupkami po 10%. Sygnałem wejściowym może być liniowy sygnał napięciowy 0 (2) -10 V lub sygnał prą...
  • Przy użyciu flexROOM® można szybko i łatwo realizować automatykę budynkową na potrzeby biur i budynków administracyjnych, zgodną z obowiązującymi normami i efektywną energetycznie. flexROOM® to szeroki wachlarz rozwiązań dla automatyki budy...
  • Nowe modułowe sterowniki programowalne PLC firmy Eaton umożliwiają producentom maszyn i systemów opracowywanie nowoczesnych koncepcji automatyki, zwłaszcza w połączeniu z systemem XN300 I/O i panelem dotykowym XV300. Modułowy sterownik zape...