Metody i algorytmy sztucznej inteligencji.

Prowadzący dr inż. Witold Paluszyński

Autor: Leszek Kubiak
Nr indeksu: 133114
Data: 20.06.2007

Implementacja metod logiki rozmytej w robocie sumo do śledzenia i podążania za obiektem


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): Jako wyjście systemu przyjęto prędkość kół robota. Wyjścia: Prędkość kół robota jest sterowana cyfrową wartością z przedziały 0-255, gdzie 128-stop silników, 255-max ruch do przodu, 0-max ruch silników do tyłu.

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. Funkcje przynależności

Po przeanalizowaniu prędkości poruszania się robotów sumo, założono, że:

Funkcje przynależności

Zakresy funkcji przynależności dla zmiennej lingwistycznej Kąt obrotu zostały ustalone na podstawie obserwacji walk robotów. Założono, że robot-przeciwnik jest maksymalnie na lewo, ze stopniem przynależności 1, dla kąta obrotu do 10 stopni, trochę na lewo dla kąta z zakresu 40-70 stopni oraz na wprost dla kąta 85-95 stopni (analogiczna analiza przeprowadzona jest dla kątów powyżej 90 stopni). SP = 0 przyjęto następująco dla: φ >= 40 (atrybut max_na_lewoi), φ <= 20 lub φ >= 85 (atrybut troche_na_lewo), φ <= 75 lub φ >= 105 (atrybut na_wprost) φ <= 95 lub φ >= 160 (atrybut troche_na_prawo) i φ <= 140 (atrybut max_na_prawo). Dla pozostałych zakresów kątów wykonano obliczenia odpowiednich prostych analogicznie jak dla zbioru odległość.
Poniżej przedstawiona jest wyjściowa funkcja przynależności dla prędkości kół robota (identyczna dla lewego i prawego koła). Wartości prędkości są uzależnione od zastosowanego sterownika silników. Dla wartości 129-255 ruch koła do przodu, dla wartości 0-127 ruch koła do tyłu.
Wyjscie rozmyte

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).
Wyjscie rozmyte
Powyższe reguły były tworzone wg przykładowej zależności dla silnika 1:
JEŚLI odległość == daleko I kat == max_na_lewo TO prędkosc = cofaj_wolno
Przyjęto tu fuzzy-operator AND - minimum ze stopni przynależności, który daje nam stopień prawdy dwu połączonych wypowiedzi.

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

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