• Nie Znaleziono Wyników

Zasada priorytetyzowania wychodzących

W dokumencie Index of /rozprawy2/11382 (Stron 55-61)

Behawioralne algorytmy koordynacji ruchu robotów

4.3 Zasada priorytetyzowania wychodzących

Społeczeństwa bardziej rozwinięte opracowały wspólne zasady, które są znane i sto-sowane przez wszystkich członków grupy. Na przykład osoby wsiadające do autobusu muszą ustąpić pierwszeństwa osobom z niego wysiadającym i odpowiednio, osoby wcho-dzące do budynku – osobom z niego wychodzącym. Co ważniejsze, osoby opuszczające autobus czy budynek mogą założyć, że osoby oczekujące na wejście wypuszczą je jako pierwsze.

Obserwacja ustępujących pierwszeństwa w trakcie wychodzenia ludzi stanowiła in-spirację do za-modelowania zasady priorytetyzowania wychodzących. W celu określenia woli robota do przejścia przez drzwi, zaproponowana została wirtualna strefa wejściowo-wyjściowa. Roboty znajdujące się w tej strefie podlegają dodatkowemu czynnikowi wpływającemu na ich efektywny priorytet podczas przejazdu przez wąskie przejście.

Zasady priorytetyzowania wychodzących zostały za-modelowane za pomocą wzorów:

4.3, 4.4 oraz 4.5.

Algorytm wykorzystujący zasadę priorytetyzowania wychodzących został zaprezen-towany po raz pierwszy w pracy [91].

pj Czynnik przejścia przez drzwi dla j-tego robota.

ψ (djl) Funkcja określająca w jakim stopniu robot jest w zasięgu działania drzwi.

λ(αj, γl) Funkcja, która decyduje czy robot j-ty wchodzi do pomieszczenia, czy wychodzi z niego.

τ ∈ R+ Współczynnik definiujący wpływ czynnika przejścia na pierwszeństwo.

W eksperymentach przyjęliśmy wartość τ = 1, ale możliwe jest dyna-miczne określanie tego współczynnika na przykład na podstawie stosunku zagęszczeń robotów w sąsiadujących pomieszczeniach.

djl Dystans pomiędzy robotem j-tym oraz środkiem l-tego przejścia (drzwiami) (można zmienić na odległość od odcinka stanowiącego drzwi).

l Identyfikator drzwi. Lokalizacja drzwi, ich szerokość oraz kierunek otwar-cia zdefiniowane zostały w pliku mapy labiryntu i są dostępne dla każdego z robotów.

γl Kąt skierowania wersora wskazującego kierunek „wychodzenia” przez drzwi. ψ (djl) = Rl−djl Rl dla djl ≤ Rl 0 w innym przypadku (4.4)

Rl - Maksymalny zasięg działania l-tych drzwi.

λ (αj, γl) = 1 dla −π2 ≤ αj− γlπ 2 0 w innym przypadku (4.5)

Na rysunku 4.2 zobrazowano strefę wyjściowo-wejściową. Kierunek przejścia został arbitralnie narzucony i określany jest przez kąt γ1. Zasięg działania strefy wejściowo-wyjściowej wyznaczony jest przez okrąg o środku w połowie przejścia i promieniu R1. Gdy robot wjeżdża w strefę i jego kąt jest zgodny z kierunkiem wychodzenia, czynnik przejścia (p1) podnosi priorytet robota w celu umożliwienia mu wyjścia z pomieszczenia.

Robot1 oraz Robot2 wjechały w zasięg działania strefy (Rl), lecz czynnik przejścia dla robota 1 (p1) jest większy niż robota 2 (p2). Wartość czynnika przejścia zależy również od odległości robota od środka przejścia (d11oraz d21). Wartość czynnika przejścia jest tym większa, im bliżej środka przejścia znajduje się robot.

Zasada priorytetyzowania wychodzących została zintegrowana ze zjawiskiem respektu

X Y α2

p

2 X Y α1

p

1 X Y R 1 γ1 d11 d21 X Y α3

p

3

Robot

2

Robot

1

Robot

3

A

B

Rysunek 4.2: Przykładowa konfiguracja robotów w trakcie pokonywania wąskiego przejścia

wraz z oznaczeniami dla metody bazującej na zasadzie priorytetyzowania wychodzących.

priorytet robota jest obliczany na podstawie wartości respektu i czynnika przejścia według wzoru 4.6.

KPj = kj∗ pj (4.6)

KPj Zintegrowana zasada priorytetyzowaniu wychodzących ze zjawiskiem

re-spektu dla j-tego robota.

pj Czynnik przejścia przez drzwi dla j-tego robota.

kj Współczynnik respektu dla j-tego robota.

Bazując na zintegrowanych regułach priorytetyzowania wychodzących oraz zjawisku

respektu stworzono dwie metody, których działania wykorzystują obie właściwości.

Algorytm Passage Factor (PF) wykorzystuje właściwości algorytmu R uzupełnio-nego o zasadę priorytetyzowania robotów w trakcie opuszczania pomieszczenia. Listing 7 przedstawia implementację w pseudo-kodzie poszczególnych kroków działania algo-rytmu Passage Factor (PF).

Listing 7 Pseudo-kod implementacja algorytmu Passage Factor (PF).

1: procedure PassageFactor

2: repeat

3: goali = Υ(posi)

4: Z ← RobotsW ithF ixedDistance(posi, Rob)

5: doorl← GetDoorF romM ap(l) 6: kpi ← KP (posi, Z, doorl)

7: robotsW ithLowerRespectT ooClose ← GetLowerRespectRobots(kpi, Z)

8: robotsW ithHigherRespect ← GetHigherRespectRobots(kpi, Z)

9: if robotsW ithLowerRespectT ooClose.Count > 0 then

10: κ(i, robotsW ithLowerRespectT ooClose)

11: else

12: if robotsW ithHigherRespect.Count > 0 then

13: κ(i, robotsW ithHigherRespect)

14: else

15: κ(i, ri)

16: until goali 6= ∅

W metodzie PF do wyznaczenia trajektorii ruchu robota brane są pod uwagę wy-łącznie roboty, których współczynnik respektu jest większy niż współczynnik respektu bieżącego robota (linia: 13). Gdy robot chce przejść przez drzwi pobiera ich aktu-alną konfigurację z pliku mapy (linia: 5). Funkcja GetDoorFromMap(l) zwraca pozycję środka l-tego przejścia (xl, yl) wraz z kierunkiem wychodzenia (γl). W oparciu o te in-formacje robot dokonuje obliczeń czynnika przejścia przez drzwi zgodnie ze wzorem 4.3. Współczynnik przejścia przez drzwi stanowi iloczyn współczynnika respektu oraz

czyn-nika przejścia przez drzwi i obliczany jest za pomocą wzoru 4.6 (linia: 6) dla wybranych

przez robota drzwi doorl.

Metoda Passage Factor+ (PF+) wykorzystuje właściwości algorytmu R+ uzupeł-nionego o zasadę priorytetyzowania robotów w trakcie opuszczania pomieszczenia. Na listingu 8 przedstawiono implementację w pseudo-kodzie poszczególnych kroków dzia-łania algorytmu Passage Factor+ (PF+).

Listing 8 Pseudo-kod implementacja algorytmu Passage Factor+ (PF+).

1: procedure PassageFactor+

2: repeat

3: goali = Υ(posi)

4: Z ← RobotsW ithF ixedDistance(posi, Rob)

5: doorl← GetDoorF romM ap(l) 6: kpi ← KP (posi, Z, doorl)

7: robotsW ithLowerRespectT ooClose ← GetLowerRespectRobots(kpi, Z)

8: robotsW ithHigherRespect ← GetHigherRespectRobots(kpi, Z)

9: allCollisionRobots ← GetAllCollisionRobots(kpi, Z)

10: if robotsW ithLowerRespectT ooClose.Count > 0 then

11: κ(i, robotsW ithLowerRespectT ooClose)

12: else

13: if robotsW ithHigherRespect.Count > 0 then

14: κ(i, robotsW ithHigherRespect)

15: else

16: κ(i, allCollisionRobots)

17: until goali 6= ∅

W algorytmie PF+ w wyznaczaniu trajektorii ruchu biorą udział wszystkie roboty znajdujące się wokół danego robota (linia: 16).

Listingi 9, 10, 11, 12, 13 prezentują implementację w pseudo-kodzie funkcji po-mocniczych wykorzystywanych w algorytmach koordynacji Passage Factor (PF) oraz Passage Factor+ (PF+).

Listing 9 przedstawiono implementację w pseudo-kodzie funkcji obliczającej zinte-growany współczynnik dla zasady priorytetyzowania wychodzących dla j-tego robota.

Listing 9 Pseudo-kod obliczenie zintegrowanej zasady priorytetyzowania

wychodzą-cych dla j-tego robota

1: function KP(posj, Z, doorl)

2: KPj = k(posj, Z) ∗ p(posj, doorl) 3: return KPj

Listing 10 przedstawiono implementację w pseudo-kodzie funkcji obliczającej czyn-nik przejścia przez drzwi dla j-tego robota.

Listing 10 Pseudo-kod obliczenie czynnika przejścia przez drzwi dla j-tego robota.

1: function p(posj, doorl) 2: djl← d(posj, γl)

3: pj ← 1 + ψ(djl) ∗ λ(posj, doorl) ∗ τ 4: return pj

Listing 11 przedstawiono implementację w pseudo-kodzie funkcji obliczającej dy-stans pomiędzy j-tym robotem a środkiem l-tego przejścia.

Listing 11 Pseudo-kod obliczenie dystansu pomiędzy j-tym robotem a środkiem l-tego

przejścia.

1: function d(posj, doorl)

2: djlq(xj− xl)2+ (yj− yl)2

3: return djl

Listing 12 przedstawiono implementację w pseudo-kodzie funkcji określającej w ja-kim stopniu robot jest w zasięgu działania drzwi.

Listing 12 Pseudo-kod funkcja określająca w jakim stopniu robot jest w zasięgu

dzia-łania drzwi. 1: function ψ(djl) 2: if djl ≤ Rl then 3: return Rl−djl Rl 4: else 5: return 0

Listing 13 przedstawiono implementację w pseudo-kodzie funkcji λ określającej czy

j-ty robot wchodzi do pomieszczenia czy z niego wychodzi

Listing 13 Pseudo-kod funkcja decydująca czy j-ty robot wchodzi do pomieszczenia

czy wychodzi z niego. 1: function λ(rj, doorl) 2: if −π2 ≤ αj − γlπ 2 then 3: return 1 4: else 5: return 0

W dokumencie Index of /rozprawy2/11382 (Stron 55-61)

Powiązane dokumenty