Arbitraż¶
Cel ćwiczenia¶
Zaprogramowanie arbitrażu zachowań jako maszyny stanów skończonych.
Wstęp teoretyczny¶
W poprzednich ćwiczeniach zaprogramowano robota, który potrafi dotrzeć do celu (punktu o zadanych współrzędnych) oraz takiego, który omija przeszkody. Prawidłowo napisany program realizuje trzy zachowania:
jazda do celu: go_to_goal
omijanie przeszkód: avoid_obstacles
zatrzymanie u celu: hold.
W bieżącym ćwiczeniu wszystkie te zachowania należy połączyć. Do dyspozycji mamy dwie metody arbitrażu (wyboru) zachowań: przełączanie (hard switching) oraz łączenie (blending). Do realizacji obu zastosujemy prostą maszynę stanów skończonych.
Hard switching¶
Robot inicjalizuje się w stanie go_to_goal. Jadąc do celu jednocześnie mierzy odległość od przeszkody oraz estymuje swoje położenie. Gdy robot niebezpiecznie zbliży się do przeszkody, tzn. odległość od przeszkody jest mniejsza, niż pewna zadana wartość \(d_o\) (guard at_obstacle), robot porzuca jazdę do celu i zaczyna jechać od przeszkody (jest w stanie avoid_obstacles). W momencie, gdy robot oddali się od przeszkody na bezpieczną odległość \(d_o+\varepsilon\) (guard obstacle_cleared), przełącza się z powrotem do zachowania go_to_goal. Jednocześnie w obu tych stanach, jeśli odległość od celu jest mniejsza, niż np. połowa szerokości robota \(L\) (guard at_goal), robot przechodzi do zachowania Hold i program kończy swoje działanie. Pełną maszynę stanów przedstawia poniższy schemat.
Blending¶
Blending polega na łączeniu obu zachowań. Wektor sterujący robota jest sumą ważoną wektorów \(u_{gtg}\) oraz \(u_{ao}\). Waga \(\alpha\) jest albo zadana na stałe, albo jest np. funkcją odległości od przeszkody (jak w przykładach omawianych na wykładzie). Wektory przed sumowaniem należy znormalizować. Wypadkowy wektor sterujący ma postać:
Blending w programie jest implementowany jako oddzielny stan. Maszyna stanów składa się z tylko dwóch stanów (blending oraz hold) oraz jednego przejścia między nimi (guard at_goal).
Kompletna maszyna stanów¶
Kompletna maszyna stanów realizuje wszystkie wymienione wcześniej zachowania. Robot startuje w stanie go_to_goal, przy pewnej odległości od przeszkody (guard at_obstacle i powrotny obstacle_cleared) przechodzi do stanu blend. Jeśli robot realizujący zachowanie blend znajdzie się niebezpiecznie blisko przeszkody (guard unsafe oraz powrotny safe), to przełącza się do zachowania avoid_obstacles. W każdym z tych zachowań jeśli robot dojedzie do celu, to przełącza się do stanu hold i program kończy działanie. Pełną maszynę stanów przedstawia poniższy diagram.
Modyfikacja avoid_obstacles¶
W poprzednim ćwiczeniu wyznaczanie wektora dla zachowania avoid_obstacles różniło się od tego, które było omawiane na wykładzie. Aby otrzymać “czysty” wektor skierowany od przeszkody należy kod z poprzedniego ćwiczenia zmodyfikować. Najprościej można to zrobić odejmując od wartości odczytywanej przez każdy z czujników odpowiednią wartość maksymalną. Wtedy wektor od czujnika nie widzącego przeszkody będzie zerowy, a dla czujnika widzącego przeszkodę wektor będzie skierowany przeciwnie a jego wartość będzie rosła ze zbliżaniem się do przeszkody.
Wykonanie ćwiczenia¶
W ćwiczeniu wykorzystany jest robot educator z trzema czujnikami odległości.
Zaprogramuj robota, który będzie potrafił dojechać do zadanego celu omijając przeszkody. Zadanie można wykonać na kilka sposobów:
Robot realizuje strategię hard switching.
Robot realizuje blending.
Robot realizuje kompletną maszynę stanów.
Przetestuj robota na przykładowym torze (np. wykorzystując markery z poprzednich ćwiczeń.
Na końcu zajęć wszystkie roboty powinny wziąć udział w wyścigu. Roboty startują w drzwiach laboratorium (A/0/06) i powinny korytarzem dojechać do drzwi A/0/06’. Roboty powinny ominąć przeszkody ustawione w korytarzu. Współrzędne startu: \((0,0)\), współrzędne celu: \((0, -350)\) (odległości w centymetrach).
Wyniki wyścigu (czas przejazdu i odległość od celu - środka drzwi) zapisz w arkuszu.
Opis sprawozdania¶
Sprawozdanie z ćwiczenia powinno zawierać:
Listingi programów (pliki .py i/lub .ev3) z optymalnymi wartościami parametrów.
Tabela wyników.
Wnioski – dyskusja wyników.