Cel projektu
Celem projektu było zastosowanie metod logiki rozmytej w sterowaniu robotem sumo i sprawdzenie jej przydatności (skuteczności) podczas walki. Głównym nacisk położony został na śledzenie znalezionego robota-przeciwnika oraz poruszanie się w odpowiedni sposób, który umożliwiłby zwycięstwo na ringu.Założenia projektowe
Założono, że robot ma możliwość pomiaru odległości oraz jest w stanie określić orientację przeciwnika względem swojego układu odniesienia. Na tej podstawie zostały stworzone odpowiednie funkcje przynależności i reguły logiki rozmytej.Dlaczego logika rozmyta
Podczas walki sumo robotów często okazuje się, że dane otrzymywane z czujników nie zawsze dają rzeczywisty obraz otoczenia, nie są proste do analizy, a co za tym idzie nie można wybrać odpowiedniego (optymalnego) zachowania robota w każdej chwili. Logika rozmyta daje nam możliwość sterowania na podstawie wyników obserwacji eksperta, które pomagają w określeniu strategii działania przy niepewnych danych otrzymywanych z czujników. Na strategię tę składa się zbiór nieprecyzyjnych, heurystycznych reguł decyzyjnych, które mogą być trudne do użycia w podejściu konwencjonalnym (logika sztywna). Podstawowym elementem przetwarzania rozmytej informacji jest reguła. Składa się ona z części gdy - warunku i to - wniosku. Istnieją rózne sposoby obrabiania reguł rozmytych. W projekcie wybrano operator minimum ze zbiorów rozmytych.Realizacja projektu
Oprogramowanie logiki rozmytej dla robota zostało napisane w języku C (środowisko AVRStudio). W dalszej części rozdziału przedstawiono zastosowane odpowiednie funkcje przynależności oraz reguły rozmyte.Wejścia i wyjścia systemu rozmytego
Dane o odległości dla robota były dostarczane przez moduł sonaru SFR08, dane o orientacji obiektu względem układu naszego robota dostarczało położenie wału serwomechanizmu. Położenie to ustalane było na podstawie sygnałów z cyfrowych czujników optycznych umieszczonych na serwomechanizmie. Wejścia (zmienne lingwistyczne):Funkcje przynależności
Funkcje przynależności zostały stworzone na podstawie intuicji eksperta i obserwacji walk robotów sumo. Jako postacie funkcji przyjęto typowe funkcje trapezowe, rosnące oraz malejące.Lista reguł rozmytych
Reguły stanowią funkcje logiczne, które wiążą zmienne warunków ze zmiennymi postulowanego działania. Lista reguł utworzona została na podstawie doświadczeń eksperta. Mamy tu dwie tabele reguł-oddzielną dla silnika lewego i prawego robota, które określają kierunek i prędkość ruchu robota. Reguły zostały sformułowane dla całego zakresu zmienności zmiennych lingwistycznych (Odległość, Kat).Defuzzyfikacja
Po dokonaniu rozmycia i wnioskowania otrzymujemy zbiór rozmyty, z którego należy uzyskać jednoznaczną wartość prędkości. Obliczanie sygnału wyjściowego wykonywane jest na podstawie metody "środka ciężkości" ze wzoru (1), który pozwala na określenie wartości liczbowej mówiącej o prędkości każdego z kół robota.Uzyskane wyniki
Ze względy na uszkodzenie robota sumo, nie można było przetestować napisanych funkcji w warunkach walki. Eksperymenty miały polegać na umieszczeniu robota na dohyo w róznych pozycjach oraz pomiarze czasu potrzenego robotowi do zepchnięcia robota-przeciwnika poruszającego się w jeden (ściśle zaprogramowany) sposób (jazda w tył i w przód do napotkania białej linii). Udało się jedynie przetestować poprawność zaimplementowanych metod fuzzy poprzez wykonanie symulacji, które polegały na podaniu w symulatorze mikrokontrolera Atmega128 określonych wartości kąta i odległości oraz wyliczeniu predkosci zadanej dla poszczególnych kół robota.Wnioski
Niestety uszkodzenie robota nie dało możliwości stwierdzenia czy logika rozmyta byłaby lepsza od logiki sztywnej przy sterowaniu robotem klasy sumo. Podobny projekt wykonany rok temu pokazał, że logika rozmyta nie daje dobrych efektów w sterowaniu robotami kołowymi. Projekt ten miał potwierdzić lub zaprzeczyć temu stwierdzeniu.Źródła