Full documentation

Transkrypt

Full documentation
Program Badań Stosowanych, Numer projektu: PBS1/A3/8/2012
Projekt:
RobREx – Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
Ontologia środowiska wspólna dla ludzi
i robotów
Za okres:
styczeń-czerwiec 2015
Zadania:
Ontologia 1, Ontologia 2
Koordynator zadań:
dr hab. Stanisław Ambroszkiewicz
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Spis treści
Informacje o dokumencie ....................................................................................................................... 3
Streszczenie ................................................................................................................................................. 4
1.
Ontologia .......................................................................................................................................... 7
1.1.
Definiowanie pojęć .........................................................................................................................................7
1.2.
Ontologia dla środowiska testowego .....................................................................................................8
1.3.
Mapy obiektowe ........................................................................................................................................... 13
2.
Algorytm uczenia się ................................................................................................................. 14
Zlecanie i wykonanie zadań................................................................................................................................... 31
Sposób integracji Z urządzeniami fizycznymi ............................................................................................... 31
4.
Protokół obsługi transakcji .................................................................................................... 33
5.
Repozytorium .............................................................................................................................. 38
5.1.
Definiowanie typów i zależności między nimi ................................................................................ 38
5.2.
Definiowanie map obiektowych ............................................................................................................ 40
5.3.
Korzystanie z Repozytorium ................................................................................................................... 41
6.
Realizacja zadania ...................................................................................................................... 44
6.2.
Obsługa nieprawidłowych sytuacji ...................................................................................................... 49
7.
Środowisko symulacyjne ......................................................................................................... 53
7.1.
Możliwości środowiska ............................................................................................................................. 53
7.2.
Generowanie środowiska na podstawie map obiektowych...................................................... 53
7.3.
Środowisko testowe.................................................................................................................................... 57
8.
Eksperymenty .............................................................................................................................. 59
8.1.
Scenariusz 1 – transport słoika z szafki na platformę ................................................................. 59
8.2.
Scenariusz 2 – unieszkodliwienie bomby ......................................................................................... 67
8.3.
Scenariusz 3 – Transfer zawartości obiektu .................................................................................... 75
styczeń 2016
2/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Informacje o dokumencie
Numer raportu:
RobREx-O1-O2-RP-01
Koordynator:
S. Ambroszkiewicz
Autorzy:
S. Ambroszkiewicz, W. Bartyna, K. Skarżyński, M. Stępniak,
M. Szymczykowski,
Poziom dostępności:
wewnętrzny
Słowa kluczowe:
system wielorobotowy, roboty mobilne, ontologia, reprezentacja
środowiska, symulacja, SOA, usługi, automatyzacja aranżacja
styczeń 2016
3/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Streszczenie
Reprezentacja środowiska jest abstrakcyjnym, uproszczonym modelem świata. Spośród
wielu pojęć wybierane są tylko te, które są istotne przy realizacji z góry zdefiniowanej klasy
zadań. Dotyczy to atrybutów, obiektów, oraz relacji między nimi. Podejście te nawiązuje do
reprezentacji jaką posługuje się człowiek. Reprezentacja jest wspólna dla ludzi i urządzeń
(robotów), ponieważ ma służyć współdziałaniu. Użytkownik (człowiek), za pomocą
wygodnych interfejsów, definiuje zadania do wykonania przez robota. Robot otrzymuje
wiedzę o środowisku w postaci częściowej mapy, którą może uaktualniać
i uszczegóławiać. Tak rozumiana reprezentacja środowiska została zrealizowana jako
formalna specyfikacja wraz z narzędziem programistycznym (Słownikiem pojęć)
z wygodnym interfejsem graficznym (GUI) dla użytkownika.
Do konstrukcji reprezentacji środowiska (ontologii) zostało użyte pojęcie obiektu, na które
składają się atrybuty (wybrane cechy obiektu), typy obiektów, oraz relacje zachodzące
między obiektami. Każdy obiekt (jako instancja swojego typu) może być traktowany jako
mapa obiektowa na odpowiednim poziomie.
Typ obiektu może agregować atrybuty, jak i inne obiekty (mówimy wtedy, że zawiera
podobiekty), oraz dziedziczyć po innych typach. Dziedziczenie oznacza, że oprócz swoich
własnych atrybutów i podtypów, w jego konstrukcji używane są również te pochodzące z
dziedziczonego typu.
Podczas definiowania typu podawana jest jego nazwa oraz typy, z których ma on
dziedziczyć. Następnie wybierane są atrybuty ze zbioru wcześniej zdefiniowanych
atrybutów, dla których opcjonalnie dodawana jest ilość wystąpień oraz zakres.
Między obiektami
(instancjami typów) mogą występować relacje binarne, które
sprowadzają się do relacji między atrybutami w tych obiektach.
W celu aktualizacji mapy obiektowej wykorzystywany jest algorytm umożliwiający
weryfikację wartości atrybutów obiektów istniejących w mapie obiektowej dla danej
lokalizacji. Natomiast uszczegóławianie mapy polega na dodaniu do niej definicji nowych
obiektów. Akcje te mogą być realizowane jako dedykowane typy usług świadczone przez
urządzenia kognitywne (wyposażone
w sensory). Usługi takich typów mogą być
wywoływane również jako komponenty złożonych zadań, np. w celu ewaluacji sytuacji
w środowisku po wykonaniu zadania przez robota mobilnego.
Kluczowym elementem dla efektywnych algorytmów aktualizacji i uszczegóławiania mapy
jest rozpoznanie kontekstu, w ramach którego będą wykonywane. Kontekstem jest aktualna
lokalizacja robota, a dokładniej element mapy reprezentujący fizyczną lokalizację,
pomieszczenie, w którym dany robot się znajduje. Ustalony kontekst pozwala na
wyznaczenie, podczas rozpoznawania obiektów, zbioru najbardziej prawdopodobnych
typów obiektów i ich instancji.
Tak zaprojektowana i zrealizowana otologia jest wykorzystywana w układach sterujących
robotów oraz w procesie zgłaszania zadań przez człowieka i ich automatycznej realizacji
przez roboty mobilne. Z ontologii korzysta również:

Menedżer Usług odpowiedzialny za integrowanie robotów z systemem,

środowisko symulacyjne służące do wizualizacji map obiektowych za pomocą grafiki
trój-wymiarowej.
Menedżer Usług dostarcza narzędzi umożliwiających wykonanie funkcji (zachowań) robota
w celu osiągnięcia stanu środowiska opisanego przez zadanie. Na podstawie opisu zadania
(opisu sytuacji początkowej i końcowej), oraz danych pobranych z Repozytorium, Menedżer
styczeń 2016
4/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Usług sekwencyjnie zleca zachowania dla jednostek fizycznych w celu osiągnięcia
pożądanego końcowego stanu środowiska opisanego w zadaniu.
Menedżer Usług pełni rolę pośrednika pomiędzy robotem a Menedżerem Zadań. W tym celu
zdefiniowane zostały interfejsy opisujące zachowania robota (jego usługi). Służą one do
konstrukcji planu wykonania usługi w komunikacji pomiędzy robotem a Menedżerem Zadań.
Menedżer Usług powinien znajdować się bezpośrednio na urządzeniu, lub w połączeniu
umożliwiającym komunikację TCP/IP. Dla każdego z urządzeni fizycznych, niezbędna jest
nowa instancja Menedżera Usług.
Żeby zintegrować nowe urządzenie z systemem niezbędne jest zainstalowanie Menedżera
Usług na platformie, która umożliwia komunikację TCP/IP z tym urządzeniem. Następnie
możliwe jest zdefiniowanie zachowań robota za pomocą interfejsu zapewnionego przez
Menedżer Usług oraz wykorzystanie zdefiniowanych zachowań w planie. Wymagane jest, by
urządzenie nasłuchiwało na porcie podanym przez użytkownika, dzięki czemu Menedżer
Usług jest w stanie nawiązać połączenie oraz wysłać parametry zachowania. W trakcie
wykonywania funkcji przez robota, Menedżer Usług będzie oczekiwał na odpowiedź. Po
uzyskaniu odpowiedzi wykonany zostanie kolejny krok planu. W przypadku otrzymania
wiadomości o wystąpieniu błędu, wykonywanie zadania zostanie przerwane oraz
poinformowany zostanie Menedżer Zadań.
W celu ułatwienia implementowania Menedżera Usług dla urządzeń fizycznych zrealizowane
zostały narzędzia programistyczne do:

implementacji mechanizmu nasłuchiwania po stronie urządzenia.

definiowania zadań po stronie Menedżera Usług.

definicji planu usługi, w którym wykorzystane zostaną uprzednio zdefiniowane
zachowania.

zapewnienia możliwości komunikacji między Menedżerem Usług a Menedżerem
Zadań.
Programistyczny interfejs Repozytorium pozwala na pobieranie informacji związanych
z ontologią, mapami obiektowymi i typami usług. Komunikacja z repozytorium odbywa się za
pomocą protokołu HTTP, treść przesyłanych wiadomości zapisywana jest w postaci
dokumentów XML.
Integracja z systemem ROS została zrealizowana poprzez opracowanie interfejsów
i komunikacji, na które składa się (patrz również rysunek niżej):

przesłanie ustalonych parametrów dla funkcji robota.

sterowanie robotem.

przesłanie rezultatu wykonania funkcji robota.
styczeń 2016
5/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rolą środowiska symulacyjnego jest odwzorowanie mapy z Repozytorium w celu testowania
działania systemu wielorobotowego. Umożliwia dodawanie oraz modyfikację urządzeń
i obiektów. Środowisko zostało zaimplementowane przy użyciu platformy .NET oraz
zintegrowanego środowiska do tworzenia gier trójwymiarowych Unity3D.
Przetestowano 3 scenariusze (uwzględniając również niepowodzenia).

scenariusz 1 – transport słoika z szafki na platformę ,

scenariusz 2 – unieszkodliwienie niebezpiecznego obiektu

scenariusz 3 – transfer zawartości obiektu.
W końcowej fazie realizacji projektu opracowano podstawy ontologii typu outdoor.
Integracja z pozostałymi zadaniami w projekcie zapewniona została poprzez opracowanie
odpowiednich interfejsów programistycznych.
styczeń 2016
6/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
1. Ontologia
Klasycznie, ontologia to pojęcia i zachodzące pomiędzy nimi relacje. Są nimi obiekty i ich
atrybuty (czyli cechy), oraz relacje zachodzące pomiędzy obiektami. Każdy obiekt jest
pewnego, z góry zdefiniowanego typu. Typ obiektu jest wyznaczony poprzez atrybuty, które
obiekty tego typu posiadają, oraz poprzez wewnętrzną (hierarchiczną) strukturę takich
obiektów, na którą mogą składać się pod-obiekty oraz relacje zachodzące pomiędzy tymi
pod-obiektami. Typ elementarny nie posiada wewnętrznej struktury, jest wyznaczony
poprzez zbiór atrybutów, zaś typ złożony taką strukturę posiada. Ontologia jest definiowana
jako hierarchiczny zbiór typów obiektów. Pierwotne atrybuty i pierwotne relacje są
podstawowymi elementami, z których konstruowane są typy obiektów. Sam obiekt, jako
instancja swojego typu, jest definiowany poprzez nadanie atrybutom konkretnych wartości i
zachodzenie relacji. Pierwotne atrybuty oraz pierwotne relacje muszą być mierzalne i
rozpoznawalne przez urządzenia sensoryczne znajdujące się w systemie.
1.1. Definiowanie pojęć
Definiowane ontologie będę składać się z następujących pojęć:

Atrybuty – definiują właściwości typu, np., kolor, kształt, pozycja,

Typy – definiują atrybuty, ograniczenia wartości atrybutów specyficzne dla obiektów
danego typu, oraz relację obiektów tego typu z obiektami innych typów,

Ograniczenia – za ich pomocą definiowane są zakresy możliwych wartości atrybutów
dla danego typu obiektu oraz relacji zachodzących między jego atrybutami lub
między nim a innymi typami,

Relacje – umożliwiają zapisywanie zależności między obiektami,

Obiekty – instancje typu z podanymi wartościami atrybutów i zdefiniowanymi
relacjami z innymi obiektami.
Podstawą do konstrukcji ontologii jest ustalony zbiór atrybutów. Pojedynczy atrybut
posiada:

nazwę zrozumiałą dla człowieka,

typ podstawowy, za pomocą którego wyrażana jest wartość atrybutu (np. ciąg
znaków, liczba całkowita, liczba zmiennoprzecinkowa, itp.),

typ jednostki (np. długość, waga, pieniądz, czas),

opis słowny zrozumiały dla człowieka.
W celu dodania nowego obiektu do ontologii niezbędne jest uprzednie zdefiniowanie jego
typu. W ramach definicji typu specyfikujemy:

listę atrybutów,

lista wymaganych pod-obiektów wskazanych typów (w przypadku typów
złożonych),

listę ograniczeń:
o
dopuszczalne wartości atrybutów dla danego typu,
o
wymagane relacje między pod-obiektami danego typu.
styczeń 2016
7/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Definiując obiekt wybieramy jego typ, podajemy konkretne wartości dla wszystkich
wymaganych atrybutów i wskazujemy pod-obiekty. Podane wartości i zależności między
wskazanymi pod-obiektami musza być zgodne z ograniczeniami typu.
Na przykład, zdefiniujmy
następujące atrybuty:
typ noga od stołu (ang. FurnitureLeg). Będzie on posiadał

pozycja X (PositionX),

pozycja Y (PositionY),

pozycja Z (PositionZ),

rotacja X (RotationX),

rotacja Y (RotationY),

rotacja Z (RotationZ),

wysokość (Height),

szerokość (Width),

długość (Length).
Następnie niezbędne jest dodanie ograniczeń, które umożliwią klasyfikację rozpoznawanych
obiektów:

Height < 800 (mm),

Width < 200 (mm) ,

Width < 200 (mm),

this IsFixedTo FurnitureSideBoard .
W ograniczeniach wykorzystana została relacja IsFixedTo oznaczająca przymocowanie
obiektu do obiektu typu FurnitureSideBoard (blatu stołu). Pozwala to na jednoznaczne
odróżnienie nogi od stołu od zwykłego kawałka drewna leżącego swobodnie. Ograniczenia
nałożone na atrybuty Height, Length, i Width pozwalają odróżnić nogę np., od stołu od filaru
podtrzymującego sufit ze względu na skalę obiektu.
1.2. Ontologia dla środowiska testowego
W ontologii dla środowiska testowego utworzony został główny typ Object, z którego
wywodzą się wszystkie pozostałe. W celu rozróżnienia obiektów fizycznych (elementarnych)
od obiektów abstrakcyjnych (złożonych) np.: pokój, utworzone zostały dwa typy wywodzące
się z Object:

PhysicalObject,

AbstractObject.
styczeń 2016
8/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 1. Główne typy ontologii
Wszystkie typy dziedziczące bezpośrednio po PhysicalObject zostały przedstawione na
Rysunek 2.
Rysunek 2. Gałąź typów dziedziczących po typie PhysicalObject
styczeń 2016
9/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 3. Gałąź typów dziedziczących po typie AbstractObject
Typy wywodzące się od AbstractObject pozwalają na grupowanie obiektów fizycznych w byty
abstrakcyjne takie jak np. stół oraz szafka (Rysunku 4). Jest to możliwe dzięki wykryciu
relacji zachodzących między grupą obiektów, a następnie dopasowaniu ich do
odpowiedniego typu abstrakcyjnego.
styczeń 2016
10/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 4. Przykład typu abstrakcyjnego
Wszystkie atrybuty obiektu mogą zostać sprecyzowane za pomocą ograniczeń na poziomie
definicji typu (Rysunek 5). W celu jednoznacznej kategoryzacji rozpoznawanych
obiektów(przypisanie ich do odpowiedniego typu) wymagane jest zdefiniowanie
spodziewanych zakresów wartości dla jak największej liczby atrybutów.
Rysunek 5. Przykład ograniczeń atrybutów prostych
Na rysunku Rysunek 6 przedstawiony został główny typ ontologii kształtów
wykorzystywanych podczas opisu wszystkich obiektów fizycznych. Utworzenie tego typu
pozwala na rozbicie kształtu na cztery główne kategorie, a następnie dalszą ich specjalizację
za pomocą ograniczeń. Bez dodatkowych informacji (np. ograniczeń wartości atrybutów) nie
bylibyśmy w stanie odróżnić obiektu typu Wall od obiektu typu PhysicalObject (Rysunek 7).
Rysunek 6. Fragment hierarchii typów atrybutu Shape
Proces klasyfikacji zachodzi głównie za pośrednictwem atrybutów złożonych Shape oraz
Texture. Jeżeli zaklasyfikowanie obiektu nie jest możliwe na podstawie tych dwóch
atrybutów, należy przejść do sprawdzenia relacji zachodzących między danym obiektem, a
innymi obiektami tworzącymi typy abstrakcyjne.
styczeń 2016
11/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 5. Przykład ograniczenia atrybutu złożonego
W celu opisu zależności zachodzących pomiędzy obiektami utworzone zostały relacje
umożliwiające złożone operacje na mapie obiektowej, takie jak np. wyszukiwanie trasy.
Rysunek 6. Typy relacji
Wszystkie relacje posiadają definicję opisującą sposób powiązania dwóch obiektów będących
jej atrybutami. Wyróżniamy trzy typy relacji:

IsAdjacedTo – relacja oznaczająca sąsiedztwo obiektów,

IsIntegralPartOf – dany obiekt jest integralną i nierozłączną częścią innego obiektu,

IsFixedTo – relacja opisująca stałe połączenie dwóch obiektów (np., dwie ściany
połączone krawędziami).
styczeń 2016
12/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
1.3. Mapy obiektowe
Po zdefiniowaniu ontologii dla środowiska testowego, można utworzyć jego właściwą już
mapę obiektową wykorzystywaną podczas eksperymentów, poniżej przedstawiony został jej
fragment składający się z mapy pokoi dla 1 piętra.
Rysunek 7 Mapa obiektowa środowiska testowego
styczeń 2016
13/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
2. Algorytm uczenia się
Aktualizacja polega na zweryfikowaniu wartości atrybutów obiektów istniejących w mapie
obiektowej (instancja ontologii) dla danej lokalizacji. Natomiast uszczegóławianie mapy
polega na dodaniu do niej definicji nowych obiektów. Akcje te mogą być realizowane jako
dedykowane typy usług świadczone przez urządzenia kognitywne (wyposażone w sensory).
Usługi takich typów mogą być wywoływane również jako komponenty złożonych zadań, np.
w celu ewaluacji sytuacji w środowisku po wykonaniu zadania przez robota mobilnego.
Kluczowym elementem dla efektywnych algorytmów aktualizacji i uszczegóławiania mapy
jest rozpoznanie kontekstu, w ramach którego będą wykonywane. Kontekstem jest aktualna
lokalizacja robota, a dokładniej element mapy reprezentujący fizyczną lokalizację,
pomieszczenie, w którym dany robot się znajduje. Ustalony kontekst pozwala na
wyznaczenie, podczas rozpoznawania obiektów, zbioru najbardziej prawdopodobnych
typów obiektów i ich instancji.
Dla algorytmu wyznaczania kontekstu przyjęto następujące założenia:

Robot znajduje się w określonym budynku. Jego dokładna lokalizacja nie jest znana
(nie jest znane piętro i pomieszczenie, w którym się znajduje).

Znana jest ontologia zawierająca pojęcia opisujące strukturę budynku (typy, typy ich
pod-obiektów i relacji między nimi).

Znana jest (częściowa) mapa obiektowa danego budynku. Mapa obiektowa obejmuje
obiekty:

o
statyczne (będące częścią struktury budynku),
o
dynamiczne, których
w pomieszczeniach).
lokalizacja
może
się
zmienić
(np.
meble
Robot jest w stanie rozpoznać ustalony zbiór cech przedmiotów (atrybutów
obiektów), na podstawie których te obiekty będą rozpoznawane. Jest to powiązane z
Zadaniem 3.
Na sam algorytm wyznaczania kontekstu składają się następujące kroki:
1. Inicjalizacja
a) Wyznaczany jest zbiór ML (możliwe lokalizacje) na podstawie mapy
obiektowej budynku. Do tego zbioru należą obiekty typów dziedziczących po
typie ClosedSpace (reprezentującego zamknięte pomieszczenia: pokoje,
korytarze, hole, itp.).
b) Każdemu z obiektów zbioru ML przypisywane jest prawdopodobieństwo
tego, że robot znajduje się właśnie w tej lokalizacji.
2. Ewaluacja
a) Jeżeli w zbiorze ML istnieją
obiekty z prawdopodobieństwem
przekraczającym ustalony próg, algorytm jest finalizowany, a jego rezultatem
jest zbiór obiektów spełniających to kryterium.
b) Jeżeli zbiór ML jest pusty, (co oznacza, że wszystkie możliwe lokalizacje
zostały wyeliminowane na podstawie przeprowadzonych obserwacji),
ustalenie lokalizacji robota jest niemożliwe dla posiadanej mapy obiektowej i
przeprowadzonych obserwacji.
c) Jeżeli powyższe warunki nie zostały spełnione, algorytm jest kontynuowany.
3. Obserwacja – przeprowadzenie obserwacji przez robota, którego rezultatem jest
zbiór rozpoznanych cech obiektu. Jest to związane z Zadaniem 3.
4. Klasyfikacja – rozpoznanie obiektu na podstawie zaobserwowanych cech.
5. Eliminacja – usunięcie ze zbioru ML lokalizacji nie posiadających rozpoznanych
obiektów.
6. Modyfikacja – modyfikacja prawdopodobieństw w zbiorze ML
7. Powrót do kroku 2.
styczeń 2016
14/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Optymalizacja kroku obserwacji polega na odpowiednim wyznaczeniu obiektu do
wyszukania. Możliwe jest wykorzystanie wielu strategii i dobieranie ich w zależności od
aktualnego stanu zbioru potencjalnych lokalizacji. Strategie te mogą obejmować
wyznaczenie:
 niezaobserwowanego obiektu wskazanego typu,
 niezaobserwowanego obiektu najrzadziej występującego typu w mapie
obiektowej możliwych lokalizacji (pozwala na szybkie wyeliminowanie dużej
liczby potencjalnych lokalizacji),
 niezaobserwowanego obiektu z mapy obiektowej najbardziej prawdopodobnej
lokalizacji (pozwala na potwierdzenie najbardziej prawdopodobnego
rozwiązania).
Komunikacja z modułem percepcji (realizującym obserwację w ramach Zadani 3) odbywa się
poprzez przekazywanie obiektu klasy PhysicalObject, posiadającego takie atrybuty jak:
współrzędne, orientacja, waga, tekstura i kształt.
Proces klasyfikacji przebiega w następujący sposób:
1. pozyskanie zbioru opisujących go cech za pośrednictwem sensorów;
2. wyznaczenie zbioru typów obiektów posiadających atrybuty odpowiadające
pozyskanym cechom obiektu;
3. wyznaczanie podzbioru tych typów na podstawie ograniczeń wartości
atrybutów;
4. wyszukanie w mapie obiektów wyznaczonych typów;
5. wyszukanie obiektów z atrybutami, których wartości odpowiadają pozyskanym
cechom (biorąc pod uwagę przedział możliwego błędu pomiaru).
Znajomość kontekstu znacznie przyśpiesza proces rozpoznawania poprzez ograniczenie
zbioru możliwych typów i obiektów.
W podstawowej wersji algorytmu, wyznaczanie lokalizacji opiera się wyłącznie na
obowiązkowych pod-obiektach (elementach strukturalnych).
W celu wykorzystania
informacji o opcjonalnych obiektach (np. krzesła, biurka, lodówka znajdujące się w danym
pokoju) należy przygotować wcześniej rozkład prawdopodobieństwa ich występowania
w każdej z lokalizacji. Rozkład ten jest również wykorzystywany w klasyfikowaniu
rozpoznawanych obiektów.
W przypadku wykorzystania rozkładów prawdopodobieństw występowania obiektu
danego typu w danej lokalizacji podczas rozpoznawania kontekstu, konieczne jest
wprowadzenie zmian do kroku Modyfikacja. Nowe wartości prawdopodobieństw są zależne
od ilości możliwych lokalizacji, jak również prawdopodobieństwa wystąpienia danego
obiektu w każdym z nich.
Algorytm uczenia jest realizowany jako biblioteka kodu. Korzysta z niego przede
wszystkim Menadżer Usług, wywołując odpowiednie metody, np. do ustalania lokalizacji lub
rozpoznania obiektu. Funkcjonalność ta może zostać udostępniona jako jedna z funkcji
robota, i tym samym może być składową planu wykonania usług.
Jednym z kluczowych aspektów podczas implementacji tych mechanizmów jest sposób
realizacji obserwacji w ramach Zadania 3. Integracja tych mechanizmów z obserwacjami
(tj. z percepcją robota realizowaną w ramach Zadania 3) została zrealizowana poprzez
opracowanie interfejsów w postaci bibliotek programistycznych. Na potrzeby testowania
dane z kolejnych obserwacji były otrzymywane ze środowiska symulacyjnego w kroku nr 3
algorytmu. Wartości te nie muszą odpowiadać idealnie wartościom zdefiniowanym w mapie
obiektowej. W kroku nr 4 i 5 (Klasyfikacja i Eliminacja), podczas porównywania wartości
atrybutów obiektów w mapie z wartościami z obserwacji dla rozpoznanych typów
uwzględnia się przedziały bezpieczeństwa wynikające z możliwych błędów pomiarowych.
styczeń 2016
15/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Częścią korku nr 3 (Obserwacja), lub kroku bezpośrednio go poprzedzającego, może być
algorytm wyznaczania konkretnych cech do wyszukania w otoczeniu robota. W odróżnieniu
od systematycznego sprawdzania całego otoczenia, można wyznaczyć obiekty
charakterystyczne dla pewnych zbiorów lokalizacji lub dla jednej lokalizacji. Może to również
dotyczyć, nie tylko samych obiektów (które mogą występować w kilku lokalizacjach), ale
wartości ich atrybutów, wyróżniające ich w skali całego budynku. Może to dla większości
przypadków znacznie przyśpieszyć algorytm jednoznacznego wyznaczania lokalizacji robota.
W przypadku, gdy algorytm zakończy się zwróceniem kilku możliwych lokalizacji, dalszym
postępowaniem jest:
1. Przyjęcie hipotezy o tym, że znajdujemy się w lokalizacji o największym
prawdopodobieństwie
(lub
pierwszej
z
nich,
jeżeli
mają
równe
prawdopodobieństwa). Lokalizacja ta staje się kontekstem dalszych działań robota.
2. Postępowanie zgodnie z tą hipotezą przy przemieszczaniu się, lub realizowaniu usług.
3. Jeżeli w trakcie ich realizacji dojdziemy do sprzeczności (np. statyczny obiekt
znajduje się w miejscu, w którym nie powinien być w ramach aktualnego kontekstu)
przyjmujemy kolejną hipotezę dla następnego w kolejce obiektu.
Opisany wyżej algorytm został zintegrowany z infrastrukturą programową do
zarządzania systemem wielorobotowym (opartym na paradygmacie SOA) na poziomie
pojedynczego robota mobilnego.
styczeń 2016
16/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
3. System Autero
Roboty mobile (i inteligentne urządzenia) mogą ze sobą współpracować w ramach
otwartych, dynamicznych i heterogenicznych środowisk. Aby umożliwić współpracę i
semantyczną zgodność komunikacji w takim środowisku potrzebna jest wspólna
reprezentacja dziedziny, której dotyczy ta komunikacja. Z tego względu reprezentacja
środowiska została zrealizowana w postaci ontologii, która jest wykorzystywana do
definiowania interfejsów usług, a także do formułowania zadań.
Definicja typu usługi składa się z następujących elementów:

typu usługi, czyli rodzaju akcji, którą wykonuje usługa,

wejść i wyjść usługi,

warunków wymaganych do wykonania usługi i efektów wykonania,

atrybutów usługi.
Nie wszystkie elementy są wymagane. Niektóre typy usług mogą w swojej definicji posiadać
tylko typy obiektów wejściowych i wyjściowych, inne zaś definicję wymaganego opisu
sytuacji wejściowej i efektów wykonania usługi. Mogą także wystąpić kombinacje tych
przypadków.
Atrybuty usługi zawierają informacje o niezmiennych cechach danej usługi. Atrybutami mogą
być: zasięg działania (np. dla usługi transportowej), technologia lub parametry wykonania
(dla usługi wytwarzającej zamówione przedmioty), maksymalny czas realizacji usługi itp.
Dzięki temu zbiór usług może zostać przefiltrowany przy pomocy wybranych atrybutów.
Rysunek 8. Schemat typu usługi
W przypadku obszernego zbioru typów usług można wprowadzić ich hierarchię np. poprzez
odpowiednią strukturę kategorii wykonywanych czynności. Taki podział może zostać
wykorzystany do ułatwienia i przyśpieszenia wyszukiwania właściwego typu usługi,
zarówno dla operacji automatycznych, jak i w przypadku ręcznego wyszukiwania
właściwego typu usługi przez klienta.
styczeń 2016
17/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Semantyczny opis usług pozwala także na automatyczną kompozycję usług w złożone
procesy poprzez dopasowywanie typów usług, które mogą być użyte w danym miejscu
sekwencji procesu, aby była możliwa realizacja zadania. Możliwość automatycznej
kompozycji jest ważna w otwartych i dynamicznych środowiskach, gdzie nie możemy
przewidzieć w czasie projektowania, jakie typy usług będą dostępne w środowisku. Nie
zawsze jednak możliwe jest automatyczne skomponowanie planu. W takim przypadku
konieczne jest skorzystanie ze zbioru manualnie przygotowanych planów.
Za wybór odpowiednich usług do realizacji zadania odpowiada procedura zwana aranżacją.
Pozwala ona na wcześniejsze ustalenie parametrów wykonania usługi i jej rezerwację. Dzięki
temu można sprawdzić wykonywalność zadania przed jego faktycznym wykonaniem.
Możliwe jest także zapewnienie odpowiednich parametrów jakościowych wykonania usługi,
ponieważ wynikiem aranżacji jest pewna forma umowy pomiędzy klientem a usługodawcą.
3.1. Architektura systemu
Poniższy rysunek przedstawia architekturę systemy RobREx. Jest ona zgodna z
paradygmatem SOA.
Rysunek
10.
Rysunek 9. Architektura systemu Autero
Repozytorium jest komponentem przechowującym i udostępniającym ontologię dla
pozostałych komponentów systemu. Udostępnia interfejs graficzny umożliwiający w prosty
sposób tworzyć i modyfikować ontologię.
Menedżer Zadań – reprezentuje klienta. Udostępnia dla niego interfejs graficzny
pozwalający na zdefiniowanie zadania i monitorowanie jego przebiegu. Menedżer zadań
udostępnia wszystkie potrzebne do tego celu mechanizmy. Wykorzystuje moduł planowania
przy budowaniu procesów i moduł aranżacji do ich aranżowania. Komunikuje się także z
usługami, wykorzystując do tego odpowiedni protokół.
Moduł planujący (Planer) – jest modułem wewnętrznym Menedżera Zadań, który
odpowiada za kompozycję procesu biznesowego. Planer generuje zbiór planów
abstrakcyjnych na podstawie żądania z Menedżera Zadań. Plany te Menedżer Zadań
przekształca na procesy biznesowe. Obecna implementacja Planera wykorzystuje zbiór z
góry zdefiniowanych planów.
styczeń 2016
18/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Moduł Aranżacyjny – podobnie jak Planer, Moduł Aranżacyjny jest częścią Menedżera
Zadań. Odpowiada za przeprowadzenie procesu aranżacji. Może implementować różne
mechanizmy wyszukiwania najlepszych usług. Możliwe jest także automatyczne wybieranie
najlepszej oferty. Umożliwia przeprowadzenie aranżacji zadania, przesyłając intencje i
zbierając zobowiązania od Menedżerów Usług udostępniających usługi określonego typu.
Rejestr usług – pozwala na odnalezienie aktualnie dostępnych usług. Każda dostępna usługa
musi być wcześniej zarejestrowana przez Menedżera Usług. Rejestr usług może być prostym
komponentem zawierającym tylko listę zarejestrowanych usług i zwracającym podzbiór
usług o typie zgodnym z żądaniem. Może być jednak rozszerzony o dodatkową logikę
wspierającą menedżera zadań i planera. Rejestr usług może filtrować zarejestrowane usługi,
uwzględniając ich atrybuty, a także pełnić funkcje prostej maszyny wnioskującej, filtrując
usługi na podstawie intencji. Jeżeli nie są dostępne usługi wymaganego typu, rejestr usług
może zaproponować usługę złożoną, przesyłając plan takiej usługi złożonej. W taki sposób
rejestr uzupełnia funkcję planera. Dzięki temu, że dysponuje wiedzą o aktualnie dostępnych
usługach, może znaleźć wykonywalny plan efektywniej. Taki sposób działania nazywamy
planowaniem rozproszonym.
Menedżer Usług – udostępnia funkcjonalność robota (lub robotów) w postaci usług. Steruje
wykonaniem zadań przez roboty w ramach świadczonej usługi i odpowiada za obsługę
protokołu transakcji po jej stronie.
3.2. Menedżer Zadań
Interfejs Menedżera Zadań udostępniany jest w postaci stron WWW. Wspólnym elementem
dla każdej z nich jest menu główne widoczne na poniższym rysunku.
Rysunek 10. Menu główne Menedżera Zadań
Menu główne zawiera cztery elementy:
1.
Home – pozwala na przejście do strony głównej.
2.
Create Task – wyświetla formularz pozwalający na zdefiniowanie i zlecenie nowego
zadania.
3.
Task – lista zadań danego użytkownika.
4.
Messages – lista wiadomości z informacjami o przebiegu zadań.
Definiowanie zadania
W obecnej wersji Menedżera Zadań definiowanie zadań odbywa się tekstowo w postaci
odpowiedniej formuły, zawierającej warunki początkowe i końcowe zadania.
styczeń 2016
Rysunek 11. Formularz definiowania nowego zadania
19/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Powyższy rysunek przedstawia formularz pozwalający na zdefiniowanie i zlecenie nowego
zadania, składający się z następujących elementów:

nazwa zadania,

czas do którego zadanie musi zostać ukończone,

definicja zadania.
Zadania użytkownika przedstawione są w postaci tabeli (zob. rysunek poniżej).
Rysunek 12. Widok listy zdefiniowanych zadań
Widok zadań zawiera takie informacje jak:

nazwa zadania,

data utworzenia zadania,

termin przewidziany na realizację zadania,

data zakończenia zadania (prawidłowego lub nieprawidłowego),

status zadania.
Rysunek 13. Szczegółowy widok zadania
Powyższy rysunek przedstawia szczegółowy widok realizowanego zadania. Poza
informacjami widocznymi także na liście zadań, widok ten zawiera dodatkowo listę kroków
procesu. Elementami widocznymi na tej liście są:

unikalny identyfikator usługi,

nazwa typu usługi,
styczeń 2016
20/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0

stan usługi,

liczba odebranych zobowiązań w fazie aranżacji,

stan fazy aranżacji,

czas rozpoczęcia fazy wykonania usługi,

czas zakończenia usługi
Informacje związane z realizacją zadań użytkownika są przekazywane w postaci wiadomości.
Dzięki temu użytkownik widzi najważniejsze zmiany w procesie realizacji zadania bez
potrzeby analizowania każdego zadania z osobna.
Rysunek 14. Widok listy komunikatów
Wiadomości prezentowane są użytkownikowi w postaci tabeli zawierającej następujące
elementy:

data utworzenia wiadomości,

typ wiadomości – informacja, ostrzeżenie, błąd, błąd fatalny,

treść wiadomości,

identyfikator procesu, którego wiadomość dotyczy,

znacznik przeczytania wiadomości.
Proces realizujący zadanie może być także przedstawiony w postaci diagramu. Węzły
diagramu reprezentują poszczególne usługi w procesie, a krawędzie przedstawiają relacje
między nimi.
styczeń 2016
21/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 15. Graficzna reprezentacja procesu
Przykład diagramu procesu widoczny jest na rysunku powyżej. Główną zaletą diagramu jest
możliwość łatwego zorientowania się w relacjach zachodzących pomiędzy węzłami procesu.
3.3. Menedżer Usług
Celem Menedżera Usług jest zapewnienie narzędzi umożliwiających wykonanie zachowań robota
(więcej na temat zachowań w rozdziale 3.3 ) w celu osiągnięcia stanu środowiska opisanego
przez zadanie. Na podstawie opisu zadania (opis sytuacji początkowej i końcowej), oraz danych
pobranych z repozytorium, Menedżer Usług sekwencyjnie zleca zachowania dla jednostek
fizycznych, w celu osiągnięcia pożądanego końcowego stanu środowiska opisanego w zadaniu.
Aplikacja wykonana została na platformie .NET z wykorzystaniem frameworka ASP.NET MVC 5.
Do persystencji oraz modelowania struktur danych wykorzystany został Entity framework oraz
baza danych SQL CE. Interfejs graficzny dostępny jest z poziomu przeglądarki internetowej.
3.3.1. Funkcjonalność MU
Menedżer Usług pełni rolę pośrednika pomiędzy robotem a Menedżerem Zadań. W tym celu
niezbędne jest zdefiniowanie na nim interfejsów zachowań robota, do komunikacji z robotem oraz
planów usług do komunikacji z Menedżerem Zadań. Menedżer Usług powinien znajdować się
bezpośrednio na urządzeniu, lub w połączeniu umożliwiającym komunikację TCP/IP. Dla każdego
z urządzeni fizycznych, niezbędna jest nowa instancja Menedżera Usług.
styczeń 2016
22/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 16. Architektura Menedżera Usług
Na funkcjonalność Menedżera Usług składa się:

Interfejs graficzny służący do definicji zachowania robota,

Interfejs graficzny służący do definicji planu dla konkretnego typu usługi,

Interfejs wykonania zadania zleconego przez Menedżer Zadań,

Moduł odpowiedzialny za tłumaczenie planu usługi na zachowania robota.
3.3.2. Definiowanie zachowań robota
W celu wywołania zachowania robota niezbędne jest zdefiniowanie sposobu komunikacji. W
zależności od sposobu komunikacji między MU a robotem, parametry niezbędne do ustanowienia
połączenia mogą być różne. Dodatkowo niezbędne jest również ustalenie parametrów
wejściowych oraz wyjściowych zachowania. W celu ułatwienia dalszej implementacji stworzona
została klasa abstrakcyjna posiadająca niezbędne metody oraz pola w celu integracji jej z planem
usługi (więcej na temat planu w następnym rozdziale). W celu utworzenia nowego sposobu
komunikacji wystarczy zaimplementowanie nowej klasy rozszerzającej RegisteredRobotFuncion
oraz nadpisanie metody Execute która odpowiedzialna jest za wysłanie a następnie odebranie
komunikatu od robota.
styczeń 2016
23/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 17 Przykładowa definicja zachowania robota
W celu zdefiniowania zachowania na aktualne potrzeby (ze względu na środowisko symulacyjne)
niezbędne były parametry:

Name – nazwa usługi umożliwiająca wykorzystanie jej podczas definiowania planu,

Function Adress – adres sieciowy serwera symulacji,

Robot Name – nazwa robota który ma wykonać daną usługę (ze względu na
implementacje symulacji),

Port – informacja na którym porcie ma zostać nawiązane połączenie,

Inputs – dane wejściowe w których zdefiniowana jest nazwa oraz typ parametru,

Outputs – dane wyjściowe w których zdefiniowana jest nazwa oraz typ parametru.
Możliwe typu parametrów dla Inputs i Outputs to:

String,

Integer,

Long,

Double,

ObjectInstance – obiekt repozytorium.
styczeń 2016
24/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Format Wiadomości Xml do robota od Menedżera Usług:
Rysunek 18 Format wiadomości wysyłanej do robota
Format wiadomości wysyłanych do robota może zostać zmodyfikowany w zależności od potrzeb.
Proces wysyłania wiadomości oraz jej format następuje w klasie rozszerzającej
RegisteredRobotFunction. Aktualnie wykorzystywana implementacja komunikacji za pomocą
socketów
znajduje
się
w
klasie
SocketRobotFunction
(Models>
RobotRegisteredFunctions>SocketRobotFunction.cs).
Format Wiadomości Xml od robota do Menedżera Usług:
Rysunek 19 Przykładowa wiadomość od robota do Menedżera Usług
z parametrami
Odpowiedź oraz wszystkie parametry konwertowane
„ExecutionResults” w którym przechowywana jest:
są
do
postaci
obiektu
typu

Message – wiadomość podstawowa, w przypadku powodzenia jest to „done”

AdditionalMessage – wiadomość dodatkowa o ewentualnych błędach

ResultType – enum świadczący o powodzeniu lub niepowodzeniu wykonania zachowania

Results – mapa przechowująca wszystkie obiekty zwrócone przez zachowanie robota, w
większości przypadków będzie ona pusta, lecz w przypadku zachowań kognitywnych np.
FindAndReturn będzie znajdował się tam obiekt (lub wiele obiektów) typu
ObjectInstance (format tego typu można zobaczyć w dokumentacji repozytorium)
styczeń 2016
25/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 20 Przykładowe zachowania robota
3.3.3. Tworzenie usług i planów ich wykonania
W celu wykonania serii zachowań robota (przykładowe zachowania na Rysunek 4) w
odpowiedniej kolejności niezbędny jest plan ich wykonania. Umożliwia to również
uwarunkowywanie ich w zależności od zmian zaistniałych w środowisku. Plan zawarty będzie w
usługach oferowanych przez Menedżer Usług. W poniższym rozdziale przedstawiony zostanie
przykład tworzenia nowej usługi.
Definicja interfejsu usługi
By stworzyć usługę realizowaną przez MU niezbędne jest uprzednie zdefiniowanie jej typu. Jest
to możliwe dzięki dwóm komponentom systemu, Repozytorium oraz Rejestrowi Usług. Najpierw
definiowany jest typ usługi na Repozytorium.
Rysunek 21 Definicja typu usługi
Operator „?” oznacza zmienną, natomiast jego brak, odwołanie do Repozytorium po nazwie
obiektu. Wewnątrz znaczników „<>” oznaczony jest typ. Ponieważ dodatkowe informacje na temat
obiektu typu „Granules” nie są potrzebne do wykonania zadania, nie jest on pobierany z
Repozytorium. Obiekty typu „Jar” i „Bowl” brak znacznika „?” oznacza że ich nazwy będą
styczeń 2016
26/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
niezbędne Menedżerowi Usług i dane na ich temat muszą zostać pobrane z repozytorium w celu
wykonania usługi.
Następnie po zdefiniowaniu typu, możliwe jest utworzenie usługi za pomocą Menedżera Usług,
poprzez wybranie odpowiedniego typu usługi oraz zdefiniowanie planu jej wykonania(więcej na
ten temat w podrozdziale 4.2).Usługa po utworzeniu w MU jest automatyczne rejestrowana w
Rejestrze Usług.
Rysunek 22 Usługi zarejestrowane w Rejestrze Usług
Definicja planu usługi
Podczas tworzenia usługi niezbędne jest wybranie jej typu(z tych zdefiniowanych na
Repozytorium). Po wybraniu automatycznie wypełnione zostają precondition, oraz
postconditions.
Rysunek 23 Kreator usługi
Następnie możliwe jest zdefiniowanie planu wykonania usługi w celu zrealizowania warunków
końcowych. Przykład pustego planu przedstawiony został na Rysunek 8.
styczeń 2016
27/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 24 Podstawowa definicja planu o nazwie „Find”
Dzięki automatycznie wypełnionym polom Precondition oraz Postcondition, możliwe jest
wykorzystanie w planie obiektów przekazanych jako parametry wykonania usługi.
Elementy planu
Podczas tworzenia planu możliwe jest wykorzystanie pięciu typów elementów:

robotFunction – umożliwia wywołanie zachowania robota,

if – umożliwia ewaluacje wyrażenia oraz przejście do odpowiedniego kroku w planie,

exception – umożliwia zwrócenie wyjątku do menedżera zadań oraz opisanie stanu
końcowego środowiska.


task – zdalne wywoływanie zadań za pośrednictwem menedżera zadań
route – wyznaczenie ścieżki między obiektami mapy
Każdy z powyżej elementów obsługuje atrybuty takie jak:

stepId – unikalny identyfikator niezbędny do zachowania odpowiedniej kolejności
wykonania kroków, atrybut jest obowiązkowy

nextStepId – atrybut wskazujący na kolejny krok który zostanie wykonany, jeżeli
następny krok nie zostanie wskazany, nastąpi zakończenie planu

delay – opcjolany atrybut wskazujący czas w milisekundach do odczekania przed
rozpoczęciem kroku
Wykorzystanie zachowań robota
W celu wykorzystania zachowań robota które zostały opisane w rozdziale 2 dostępny jest element
planu o nazwie „robotFunction”.
Rysunek 25 Przykładowa implementacja elementu robotFunction
Element „robotFunction” wymaga definicji atrybutu „stepId” oraz „functionName”, wszystkie inne
elementy oraz atrybuty są nieobowiązkowe. Poniżej zostaną opisane wszystkie atrybuty oraz
elementy:

Atrybuty elementu „robotFunction”:
o
stepId – unikalny identyfikator elementu planu,
o
nexStepId – id kolejnego kroku (parametr opcjonalny)
o
functionName – nazwa zachowania robota które zostanie wywołane (w
przypadku braku takiego zachowania wystąpi błąd),
styczeń 2016
28/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
o
wersja 1.0
delay –atrybut opóźniający rozpoczęcie wykonania elementu.

Element „input” określa parametry weściowe

Element „param” pozwala na przekazywanie wartości, możliwe atrybuty to:
o
name – nazwa odpowiadająca parametrowi w definicji zachowania robota
o
value – wyrażenie które zostanie ewaluowane oraz wysłane do robota jako
wartość parametruni
o
results – nazwa zmiennej do której przypisana zostanie wartość parametru (w
przypadku jej braku, zostanie utworzona)
Uzależnienie planu od zmiennych środowiskowych
Instrukcje warunkowe umożliwiają stworzenie bardziej złożonych planów. W tym celu utworzony
został element „if”.
Rysunek 26 Przykładowa implementacja elementu "if"
Atrybuty elementu:

stepId – unikalny identyfikator elementu planu,

nextStepId – id kolejnego kroku(parametr opcjonalny),

ifTrue – id kolejnego kroku w przypadku uzyskania prawdy podczas ewaluacji,

ifFalse – id kolejnego kroku w przypadku uzyskania fałszu podczas ewaluacji,

expression – wyrażenie ewaluowane, wartości atrybutów dynamicznie podmieniane a
następnie ewaluowane,

maxRetryCount – maksymalna ilość powtórzeń, w przypadku osiągnięcia ich
maksymalnej ilości automatycznie zwracany jest błąd wykonania planu, pozwala to na
uniknięcie nieskończonych pętli.
Sytuacje wyjątkowe
Możliwe jest również nie spełnienie założonej sytuacji końcowej podanej w „postconditions”. W
tym celu dodano element „exception” umożliwiający Planiście zwrócenie do Menedżera Zadań
innej niż oczekiwana sytuacji końcowej.
Rysunek 27 Przykładowa implementacja elementu "exception"
Atrybuty elementu:

stepId – unikalny identyfikator elementu planu,

postconditions – wyrażenie zawarte w postconditions, wyrażenie „?objectSet1.Name”
zostanie dynamicznie zastąpione wartością atrybutu.
styczeń 2016
29/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Przedstawiony element ten jest częścią planu „TransferContent”. Zakłada on transfer (płynnej lub
sypkiej) zawartości jednego pojemnika do drugiego. W przypadku stwierdzenia za pomocą
czujników braku transferu całej zawartości, zwrócona zostaje specjalna sytuacja końcowa.
Zlecanie innych zadań (task)
W sytuacji gdy do wykonania usługi niezbędna jest wykonanie innej usługi(przez innego robota)
możliwe jest zlecenie zadania za pośrednictwem Menedżera Zadań. Np. robot podczas
przemieszczania obiektu między piętrami wymaga usługi transportowej świadczonej przez windę.
Generowanie ścieżki (route)
By robot mógł poruszać się po środowisku niezbędne jest wyznaczenie jego wstępnej trasy.
Wykorzystywana jest do tego element planu typu „route”. Podczas wykonywania elementu
wyszukiwana jest możliwa ścieżka pomiędzy obiektami oraz zwracana jest lista obiektów przez
które robot musi przejść by dotrzeć do celu. W przypadku gdy takim obiektem są drzwi,
automatycznie zostanie wygenerowany nowy pan (tylko na potrzeby elementu route) w którym
znajdą się niezbędne elementy typu „robotFunction” dzięki którym robot będzie się przemieszczał
oraz typu „task”.
Rysunek 28 Przykładowa implementacja elementu „route”
Atrybuty elementu:

stepId – unikalny identyfikator elementu planu,

nextStepId – identyfikator następnego kroku
Dane wejściowe elementu:

Start – nazwa obiektu od którego wyznaczana jest ścieżka,

Finish – nazwa obiektu do którego wyznaczana jest ścieżka.
styczeń 2016
30/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
3.3.4. Przebieg tworzenia usługi
Zlecanie i wykonanie zadań
W celu wykonania zadania niezbędne jest przekazanie opisu sytuacji dla konkretnych obiektów.
W tym celu powstał komponent Menedżera Zadań który zleca wykonanie konkretnego typu usługi
dla konkretnych obiektów opisujących sytuacje zdefiniowaną w typie usługi.
Po zdefiniowaniu planu dla konkretnego typu usługi jest ona rejestrowana w Rejestrze Usług.
Menedżer Zadań ma możliwość przeszukania Rejestru Usług w celu znalezienia odpowiedniego
typu usługi. Następnie po wypełnieniu sytuacji początkowej i końcowej odpowiednimi obiektami
lub zmiennymi, zlecane jest rozpoczęcie zadania.
Rysunek 29. Tworzenie zadania
Operator „?” oznacza zmienną, natomiast „#” odwołanie do Repozytorium po nazwie obiektu.
Wewnątrz znaczników „<>” oznaczony jest typ. Ponieważ dodatkowe informacje na temat obiektu
typu „Granules” nie są potrzebne do wykonania zadania, nie jest on pobierany z Repozytorium.
Obiekty typu „Jar” i „Bowl” poprzedzone są znakiem „#” w celu przekazania Menedżerowi Usług że
dane na ich temat będą niezbędne do wykonania planu, czyli muszą zostać pobrane z
repozytorium.
Gdy obiekty zostaną pobrane z repozytorium, umieszczane są one w lokalnym słowniku pod
kluczem którego nazwa odpowiada argumentowi w definicji usługi. Na Rysunek 29 obiekt o
nazwie „Jar001” zostanie zapisany do lokalnego słownika pod kluczem „object1” na podstawie
definicji usług widocznej na Błąd! Nie można odnaleźć źródła odwołania.. Po przetworzeniu
arametrów zadania Menedżer usług przystępuje do jego wykonania. Całe zadanie opisane jest za
pomocą planu który wykonywany jest w krokach. W każdym kroku możliwe jest wystąpienie
błędu na poziomie robota, zostaje on raportowany do Menedżera Usług, który z kolei przekazuje
błąd do Menedżera Zadań jeżeli nie jest w stanie sam go obsłużyć. Kod błędu może zostać
przekazany za pomocą atrybutu „resultVarName” który definiowany jest na poziomie planu dla
każdego zachowania.
Sposób integracji Z urządzeniami fizycznymi
W ramach planu wykorzystywana jest klasa „RobotFunction” która posiada wszystkie niezbędne
parametry oraz metody do translacji zachowania robota zdefiniowanego w planie na formę
gotową do wysłania na urządzenie fizyczne. Zaimplementowana została również klasa
„SocketRobotFunction” dziedzicząca po „RobotFunction”. Pozwala to na zdefiniowanie
dodatkowych pól w formularzu niezbędnych do ustanowienia połączenia pomiędzy robotem a
Menedżerem Usług oraz nadpisana została metoda wysłania wiadomości. Zaimplementowana
klasa umożliwia komunikację sieciową przez protokół TCP/IP. Pozwala to na proste dodanie
nowych form komunikacji pomiędzy Menedżerem Usług a innymi urządzeniami fizycznymi.
By zintegrować nowe urządzenie z systemem niezbędne jest zainstalowanie Menedżera Usług na
platformie która umożliwia komunikację TCP/IP z tym urządzeniem. Następnie możliwe jest
styczeń 2016
31/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
zdefiniowanie zachowań robota za pomocą interfejsu zapewnionego przez Menedżer Usług oraz
wykorzystanie zdefiniowanych zachowań w planie. Wymagane jest by urządzenie nasłuchiwało
na porcie podanym przez użytkownika dzięki czemu Menedżer Usług jest w stanie nawiązać
połączenie oraz wysłać parametry zachowania. W trakcie wykonywania Menedżer Usług będzie
oczekiwał na odpowiedź (domyślnie komunikat o poprawnym wykonaniu zachowania to „done”).
Po uzyskaniu odpowiedzi wykonany zostanie kolejny krok planu. W przypadku otrzymania
wiadomości o wystąpieniu błędu, wykonywanie zadania zostanie przerwane oraz poinformowany
zostanie Menedżer Zadań.
W celu zintegrowania Menedżera Usług z urządzeniem fizycznym niezbędne jest:

Implementacja mechanizmu nasłuchiwania po stronie urządzenia,

Zdefiniowanie zadań po stronie Menedżera Usług,

Definicja planu usługi w którym wykorzystane zostaną uprzednio zdefiniowane zadania,

Zapewnienie możliwości komunikacji między Menedżerem Usług a Menedżerem Zadań.
styczeń 2016
32/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
4. Protokół obsługi transakcji
Komunikacja pomiędzy Menedżerem Zadań a Menedżerami Usług odbywa się za pomocą
protokołu transakcji, który definiuje stany usługi i wiadomości wykorzystywane do ich
zmiany. Protokół taki umożliwia adaptację procesu do aktualnego stanu środowiska, aby
umożliwić prawidłową realizację transakcji biznesowej. Protokół będzie nazywany ABTP
(ang. Adaptive Business Transaction Protocol - adaptacyjny protokół dla transakcji
biznesowych).
Rysunek 30. Diagram stanów usługi i wiadomości protokołu ABTP
Wszystkie fazy realizacji usługi biznesowej są reprezentowane za pomocą zbioru stanów
usługi:

Inactive – stan występujący tylko po stronie menedżera zadań. Oznacza, że dany
węzeł reprezentujący usługę należy do procesu, ale faza aranżacji jeszcze się nie
rozpoczęła.

Arranging – faza aranżacji węzła procesu biznesowego reprezentującego usługę. W
tym stanie nie ma jeszcze konkretnej usługi przypisanej do węzła.

Rearranging – stan występujący po wysłaniu przez menedżera zadań polecenia
przearanżowania warunków wykonania usługi. W tym stanie usługodawca generuje
nowe zobowiązanie dla zmienionej intencji klienta.

Arranged – stan po zaakceptowaniu zobowiązania usługi w fazie aranżacji. Od tego
momentu konkretna usługa jest powiązana z odpowiednim węzłem procesu
biznesowego (nie jest już tylko abstrakcyjnym typem).

Executing – usługa wykonuje swoje zadanie.

Completed – usługa wykonała swoje zadanie prawidłowo.

Ended – w takim stanie wiadomo, że dany proces biznesowy, którego usługa była
częścią, został zakończony i nie będą od niej wymagane żadne dodatkowe akcje.
Usługa w tym stanie może usunąć informacje o kontekście transakcji.
styczeń 2016
33/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0

Compensating – w tym stanie usługa wykonuje operacje mające na celu kompensację
wykonanych wcześniej operacji.

Compensated – stan po prawidłowym wykonaniu operacji kompensacji.

CompensationFailed – jeżeli proces kompensacji nie powiedzie się, to usługa
przechodzi do tego stanu.

Failed – stan, do którego usługa przechodzi po nieudanym wykonaniu zadania.

Aborting – w tym stanie usługa przerywa wykonywanie zadania. Proces przerywania
może trwać długo ze względu na możliwą konieczność wykonania określonych
czynności, np. zatrzymanie urządzeń realizujących dane zadanie itp.

Aborted – stan po przerwaniu wykonania zadania.

Withdrawn – stan oznaczający, że usługa została anulowana po zakończonej fazie
aranżacji.
Do zmiany powyższych stanów wykorzystywany jest zbiór, zdefiniowanych w ramach
protokołu transakcji, wiadomości. Wiadomości przesyłane z menedżera zadań do usługi
inicjują poszczególne fazy usługi lub dodatkowe operacje. Usługa przesyła wiadomości po
zakończeniu poszczególnych faz, a także w przypadku wystąpienia nieokreślonych zdarzeń.
Rysunek 30 przedstawia diagram stanów usługi i wiadomości powodujące przejścia
pomiędzy stanami.
Wiadomości generowane przez menedżera zadań w poszczególnych stanach:

Inactive – jeżeli usługa jest nieaktywna i można przeprowadzić jej aranżację, to
menedżer zadań wysyła (może to zrobić za pośrednictwem modułu aranżacyjnego) do
zbioru usług danego typu wiadomość Arrange razem z intencją. Rozpoczyna to fazę
aranżacji danego kroku procesu.

Arranging – w fazie aranżacji, po otrzymaniu zbioru zobowiązań, menedżer zadań
akceptuje jedno zobowiązanie, wysyłając wiadomość Accept do wybranej usługi.
Informuje także pozostałe usługi o braku akceptacji ich ofert za pomocą wiadomości
Cancel.

Arranged – normalną operacją po fazie aranżacji jest wywołanie usługi za pomocą
wiadomości Execute, która jest przesyłana razem z danymi wejściowymi dla usługi.
Jeżeli w trakcie wykonywania procesu biznesowego zmieni się stan środowiska
pociągający za sobą konieczność zmiany wcześniej ustalonych warunków wykonania
usługi, to menedżer zadań podejmuje próbę ponownej aranżacji, wysyłając wiadomość
Rearrange. W przypadku konieczności wycofania aranżacji menedżer zadań wysyła
wiadomość Withdraw.

Rearranging – warunki usługodawcy akceptowane są wiadomością Accept. Proces
ponownej aranżacji może być przerwany, np. z powodu przedłużającej się decyzji
usługodawcy. Menedżer zadań przerywa ten proces, wysyłając wiadomość Withdraw.

Executing – w trakcie fazy wykonania usługi może zaistnieć potrzeba jej przerwania.
Operacja ta jest rozpoczynana po wiadomości Abort.

Completed – wykonana usługa może zostać skompensowana po wysłaniu wiadomości
Compensate. Jeżeli proces zostanie zakończony lub wiadomo jest, że usługa nie będzie
kompensowana, menedżer zadań może zakończyć interakcję z nią, wysyłają
wiadomość End.

Aborted – dla przerwanej usługi można podjąć próbę kompensacji, wysyłając do niej
wiadomość Compensate, lub zakończyć transakcję wiadomością End.

Compensating – proces kompensacji może trwać długo. Jeżeli menedżer zadań uzna,
że jest to za długo lub z innego powodu zaistnieje potrzeba przerwania kompensacji,
to do usługi zostaje wysłana wiadomość Abort.
styczeń 2016
34/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0

Failed – dla usługi zakończonej niepowodzeniem może zostać podjęta próba
kompensacji wywoływana wiadomością Compensate. W tym stanie możliwe jest
również zakończenie transakcji wiadomością End.

Withdrawn, Compensated, CompensationFailed – zakończenie transakcji w tych
stanach wywoływane jest poleceniem End.
Wiadomości wysyłane przez usługę w poszczególnych stanach:

Arranging – w fazie aranżacji usługa wysyła zobowiązanie razem z wiadomością
Terms lub odmawia wykonania usługi wiadomością Refusal.

Arranged – zaaranżowana usługa może odmówić wykonania, wysyłając wiadomość
Refusal.

Rearranging – w trakcie ponownej aranżacji usługa wysyła nowe zobowiązanie
razem z wiadomością Terms lub odmawia wykonania usługi według nowych
wymagań, wysyłając Refusal.

Executing – jeżeli w fazie wykonania usługa nie może wykonać zadania, to musi
wysłać wiadomość Failed. O poprawnym zakończeniu zadania usługa informuje
menedżera zadań za pomocą wiadomości Completed.

Compensating – jeżeli proces kompensacji zakończy się powodzeniem, to usługa
informuje o tym za pomocą wiadomości Compensated, a w przypadku niepowodzenia
wiadomością CompensationFailed.

Aborting – usługa potwierdza przerwanie wykonywania poprzedniej operacji,
wysyłając wiadomość Aborted.
Po otrzymaniu każdej wiadomości odbiorca wysyła wiadomość z potwierdzeniem
poprawnego dostarczenia lub informacje o wystąpieniu błędu razem z jego opisem. Z
niektórymi wiadomościami przesyłane są dodatkowe dane. Zestawienie wiadomości i
odpowiadających im danych przedstawione jest w poniższej tabeli.
Wiadomość
Dane
Arrange
Intencja
Rearrange
Nowa intencja
Terms
Zobowiązanie
Execute
Dane wejściowe usługi
Completed
Dane wyjściowe usługi
Failed
Opis błędu i aktualny stan środowiska
CompensationFailed
Opis błędu i aktualny stan środowiska
Compensated
Aktualny stan środowiska
Aborted
Aktualny stan środowiska
W trakcie realizacji zadania wiadomości przesyłane są według określonych sekwencji. Mogą
one tworzyć różne kombinacje, ale zbiór możliwych wiadomości w danym stanie usługi jest
ściśle określony w protokole transakcji.
W celu zapewnienia spójnego stanu systemu, wiadomości w ramach protokołu muszą być
przesyłane zgodnie z określoną procedurą. Dodatkowo strony muszą zapamiętywać w
odpowiednim momencie czy odbiór wiadomości został potwierdzony przez drugą stronę, a
także datę i godzinę wysłania wiadomości. Te informacje pozwalają określić czy i kiedy
należy ponowić wysłanie danej wiadomości. Na rysunku 31 znajduje się diagram sekwencji
ilustrujący ten proces.
styczeń 2016
35/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 31. Diagram sekwencji operacji przy przesyłaniu wiadomości protokołu
Rysunek 32. Diagram sekwencji wiadomości protokołu dla 3 usług tego samego typu
Diagram na rysunku 32 przedstawia kompletną sekwencję przesyłania wiadomości
protokołu dla pojedynczego kroku procesu biznesowego. W Rejestrze usług zarejestrowane
są 3 usługi. Każda z nich zgadza się wykonać usługę według podanych parametrów i przesyła
swoje oferty. Menedżer Zadań wybiera jedna ofertę, a resztę odrzuca wiadomością Cancel.
Następnie wybrana usługa jest wywoływana. Po prawidłowym zakończeniu pracy
powiadamia ona o tym Menedżera Zadań przesyłając wiadomość Completed. Wiadomość
End kończy transakcję. Oznacza to, że usługa nie musi przechowywać dłużej kontekstu
transakcji.
styczeń 2016
36/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
styczeń 2016
37/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
5. Repozytorium
Rolą Repozytorium jest przechowywanie oraz udostępnianie map obiektowych tworzonych
przez użytkowników i/lub roboty. Dodatkowo Repozytorium przechowuje typy usług
możliwych do świadczenia przez urządzenia w systemie.
Repozytorium zostało zaimplementowane jako aplikacja internetowa, przy użyciu platformy
.NET. Do persystencji danych i modelowania struktur danych wykorzystano Entity
Framework i bazę danych SQL CE (Microsoft SQL Server Compact) oraz ASP.NET MVC 5 do
interakcji z użytkownikiem i innymi systemami.
5.1. Definiowanie typów i zależności między nimi
Na typ składają się atrybuty opisujące cechy obiektów, interfejsy definiujące zachowania
możliwe do wykonania na danym obiekcie oraz innych typów obiektów składających się na
ten typ.
Atrybuty składają się z nazwy, wielkości, typu jednostki, w której będzie przedstawiony (np.
liczba całkowita, zmiennoprzecinkowa, tekst, litera itd.) oraz opcjonalnie opisu. Nazwa
atrybutu musi być unikalna.
Do definicji typu „PlacedMapObject”, reprezentującego wszystkie obiekty posiadające
położenie i obrót, wymagane są 3 atrybuty przedstawiane w formie liczby
zmiennoprzecinkowej, opisujące długość: „PositionX”, „PositionY”, „PositionZ”.
Rysunek 33. Tworzenie atrybutu – warstwa prezentacji
Interfejsy składają się z nazwy, definicji oraz opcjonalnie opisu. Nazwa interfejsu musi być
unikalna.
styczeń 2016
38/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 34. Tworzenie interfejsu - warstwa prezentacji
Relacje określane są za pomocą nazwy, dwóch typów będących argumentami relacji oraz
definicji, służącej do jej ewaluowania. Nazwa relacji musi być unikalna. Definicja relacji to
zbiór warunków arytmetycznych połączonych operatorami logicznymi, wykorzystujących
atrybuty obiektów będących argumentami relacji.
Aby wystąpiła relacja „IsIn” (zawierania się) na dwóch obiektach typu „Cuboid”, należy
spełnić następujący warunek:
( ( leftObject.Width * leftObject.Width ) < ( rightObject.Width * rightObject.Width ) ) AND (
leftObject.PositionX < ( rightObject.PositionX + rightObject.Width / 2 ) ) AND (
leftObject.PositionX > ( rightObject.PositionX - rightObject.Width / 2 ) ) AND (
leftObject.PositionZ < ( rightObject.PositionZ + rightObject.Width / 2 ) ) AND (
leftObject.PositionZ > ( rightObject.PositionZ - rightObject.Width / 2 ) ) AND ( (
leftObject.PositionY - leftObject.Height / 2 ) < rightObject.PositionY ) AND (
leftObject.PositionY > ( rightObject.PositionY - rightObject.Height / 2 ) )
Rysunek 35. Tworzenie typu relacji – warstwa prezentacji
styczeń 2016
39/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Typy obiektów definiowane są przez nazwę, opcjonalny opis, typ bazowy, który będzie
rozszerzany, obiekty podrzędne, atrybuty i interfejsy. Nazwa typu musi być unikalna.
Atrybuty są cechami obiektu, np. obiekt typu „Cuboid” będzie musiał posiadać atrybuty
opisujące jego położenie i obrót w układzie odniesienia oraz wielkość.
W typach zostało zaimplementowane dziedziczenie jednokrotne, tj. istnieje możliwość
stworzenia typu pochodnego, rozszerzając jego cechy i zachowania.
Obiekty składowe to grupa typów, które wymagane są do istnienia innego obiektu, np. na stół
składają się cztery nogi i jeden blat, wszystkie te obiekty będą typu „Cuboid”. Dodatkowo
obiekty te posiadają swoją unikalną nazwę, określającą je wewnątrz obiektu stołu, np. blat,
lewa przednia noga, lewa tylna noga, itd. Nazwa ta wymagana jest do ewaluacji relacji
występujących w typie, np. tworząc pokój konkretne ściany muszą się ze sobą stykać oraz
muszą być prostopadłe do podłogi i sufitu, ponadto podłoga musi być na dole pokoju, a sufit
na górze.
Rysunek 36. Tworzenie typu - warstwa prezentacji
5.2. Definiowanie map obiektowych
Mapa obiektowa jest zbiorem obiektów znajdujących się w tym samym pomieszczeniu,
powiązanych ze sobą relacjami. Obiekty mogą być proste (do ich definicji podawane są tylko
atrybuty), lub złożone (na takie obiekty składa się pewna grupa obiektów, która może być
powiązana między sobą relacjami). Przykładem mapy obiektowej może być pokój, składający
się ze ścian, sufitu oraz drzwi, w którym znajduje się szafka, ze słoikiem oraz stół, na którym
stoi miska.
Obiekty należy tworzyć od najbardziej szczegółowych do ogólnych, czyli np. chcąc stworzyć
stół najpierw należy stworzyć jego cztery nogi i blat, a na końcu stół, który łączy wszystkie te
obiekty w całość. Jeśli definiowany obiekt posiada relacje między obiektami podrzędnymi, to
są one automatycznie ewaluowane oraz dodawane podczas zapisywania do słownika.
styczeń 2016
40/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 37. Tworzenie obiektu - warstwa prezentacji
Obiekty można połączyć ze sobą przez relację pewnego typu dopasowując obiekty
odpowiednich typów dla tej relacji. Przed zapisaniem relacji ewaluowana jest jej definicja,
która pozwala na sprawdzenie, czy dana relacja na pewno zachodzi między wybranymi
obiektami. Relacja zostanie zapisana tylko w wypadku, gdy jest spełniona.
5.3. Korzystanie z Repozytorium
Repozytorium posiada interfejs pozwalający na pobieranie danych ze słownika. Komunikacja
z repozytorium odbywa się za pomocą protokołu HTTP, do odpowiedzi i wykonania bardziej
złożonych zapytań wykorzystywany jest język XML.
Pobranie listy typów, znajdujących się w Repozytorium, dostępne jest po wysłaniu żądania
metodą GET na adres interfejsu Repozytorium zakończony ścieżką „/GetTypes”. Odpowiedź
na to zapytanie jest dokumentem, który posiada element „ObjectTypes”, zawierający listę
znaczników „ObjectType”, które w posiadają informacje o numerze identyfikacyjnym danego
typu (atrybut „id”), ilości obiektów danego typu w repozytorium (atrybut „instancesCount”)
oraz nazwie typu (wartość znacznika).
Uzyskanie obiektów zadanego typu, znajdujących się w Repozytorium, odbywa się poprzez
wysłanie żądania metodą GET na adres interfejsu Repozytorium zakończony ścieżką
„/GetObjectsByType/1”, gdzie liczba 1 jest numerem identyfikacyjnym typu, którego obiekty
chcemy znaleźć. W odpowiedzi zostanie zwrócony dokument, posiadający element
„ObjectInstances” zawierający listę znaczników „ObjectInstance” przechowujących
informacje o numerze identyfikacyjnym obiektu (atrybut „id”) oraz nazwie tego obiektu
(wartość znacznika).
Otrzymanie szczegółowych informacji o obiekcie możliwe jest poprzez wysłanie żądania
metodą GET na adres interfejsu Repozytorium zakończony ścieżką „/GetObject/1”, gdzie
liczba 1 jest numerem identyfikacyjnym obiektu, którego szczegóły mają zostać pobrane. W
odpowiedzi otrzymywany jest dokument, posiadający element „ObjectInstance” zawierający
szczegóły pożądanego obiektu, tj. numer identyfikacyjny (atrybut „id”), nazwę obiektu
zawartą w elemencie „name”, typ znajdujący się w znaczniku „type”, listę atrybutów,
styczeń 2016
41/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
obiektów podrzędnych, relacji oraz interfejsów zawarte w znacznikach kolejno „Attributes”,
„Subobjects”, „Relations”, „Interfaces”.
Lista atrybutów składa się ze znaczników „Attribute” zawierających informacje o nazwie
atrybutu (wartość znacznika „name”), typu jednostki, w której atrybut jest przedstawiany
(wartość znacznika „baseType”) oraz wartości danego atrybutu (wartość znacznika „value).
Lista obiektów podrzędnych zawiera elementy „Subobject” przechowujące informacje o
nazwie obiektu podrzędnego (wartość znacznika) oraz numerze identyfikacyjnym obiektu
będącego obiektem podrzędnym (wartość atrybutu „id”).
Lista relacji składa się ze znaczników „Relation” zawierających informacje o numerze
identyfikacyjnym relacji (atrybut „id”), argumentach relacji i ich numerach identyfikacyjnych
(elementy „leftObject” i „rightObject” oraz ich atrybuty „id”).
Lista interfejsów zawiera elementy „Interface” przechowujące informacje o nazwie interfejsu
(wartość elementu).
Pobranie typów usług, znajdujących się w Repozytorium, dostępne jest po wysłaniu żądania
metodą GET na adres interfejsu Repozytorium zakończony ścieżką „/GetServiceTypes”.
Odpowiedź na to zapytanie będzie posiadała element „ServiceTypes”, zawierający listę
znaczników „ServiceType”, przechowujących informacje o nazwie typu usługi (wartość
elementu „name”), warunkach wstępnych (wartość elementu „precondition”), warunkach
końcowych (wartość elementu „postcondition”), parametrów wejściowych i wyjściowych
(kolejno w elementach „inputEntries” i „outputEntries”).
Lista parametrów wejściowych składa się z elementów „InputEntry” zawierających
informacje o nazwie tego parametru (wartość elementu „name”), typie obiektu (wartość
elementu „objectType”) oraz numerze identyfikacyjnym tego typu (atrybut „id” w elemencie
„objectType”).
Lista parametrów wyjściowych składa się z elementów „OutputEntry” zawierających takie
same informacje jak parametry wejściowe.
Wyszukanie obiektów na podstawie podanych informacji odbywa się poprzez wysłanie
żądania metodą POST na adres interfejsu Repozytorium zakończony ścieżką
„/FindObjectInstance” i załączenia w parametrze „document” kryteriów wyszukiwania w
odpowiednim formacie. W odpowiedzi otrzymywany jest dokument, posiadający element
„ObjectInstances” zawierający listę odpowiadających kryteriom obiektów, które opisane są
tak samo jak w przypadku uzyskiwania szczegółów obiektu. Kryteria wyszukiwania również
muszą mieć taki sam format jak szczegóły obiektu, ale nie muszą być pełne. Elementy
brakujące będą ignorowane przy porównywaniu obiektów.
styczeń 2016
42/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 38. Przykładowe zapytanie (po lewej) i odpowiedź (po prawej)
przy wyszukiwaniu obiektu
styczeń 2016
43/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
6. Realizacja zadania
6.1.1. Definiowanie zadania
Zadania w systemie Autero definiowane są za pomocą odpowiednich formuł logicznych.
Zadanie określa warunek końcowy, w jakim ma się znaleźć środowisko po jego wykonaniu.
Przy definiowaniu zadań wykorzystywane są obiekty i relacje zdefiniowane w ontologii.
Rysunek 39 zawiera relacje pomiędzy elementami znajdującymi się w Repozytorium a
definicją zadania.
Rysunek 39. Zależności pomiędzy elementami z repozytorium a definicją zadania
Podczas definicji zadania ustalane są także zasoby przeznaczone na jego realizację i czas, do
którego zadanie musi się zakończyć.
6.1.2. Faza planowania
Semantyczny opis usług pozwala na automatyczną kompozycję usług w złożone procesy
biznesowe poprzez dopasowywanie typów usług, które mogą być użyte w danym miejscu
sekwencji procesu, aby była możliwa realizacja zadania. Możliwość automatycznej
kompozycji jest ważna w otwartych i dynamicznych środowiskach, gdzie nie możemy
przewidzieć w czasie projektowania, jakie typy usług będą dostępne w środowisku. Nie
zawsze jednak możliwe jest automatyczne skomponowanie planu dla procesu biznesowego.
W takim przypadku konieczne jest skorzystanie ze zbioru wcześniej przygotowanych
manualnie planów. Algorytmy automatycznie komponujące usługi w procesy mogą bazować
na różnych danych. Mogą to być typy danych wejściowych i wyjściowych usług lub
semantyczne opisy efektów działania usług i ich wymagań początkowych.
Przyjęta reprezentacja usługi, która zakłada istnienie fazy aranżacji, pociąga za sobą
konieczność zdefiniowania odpowiednich relacji w reprezentacji procesu biznesowego.
Dostępne rozwiązanie nie pozwalają na odwzorowanie tych relacji lub wymagałoby
styczeń 2016
44/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
zastosowania nieintuicyjnych rozwiązań. Dlatego został opracowany własny format procesu
biznesowego, a także planu, którego proces jest w pewnym sensie rozszerzeniem.
Za kompozycję odpowiada moduł planujący (Planer), który na wejściu otrzymuje aktualne
informacje o stanie środowiska, a także informacje o tym, jaki ma być stan środowiska po
wykonaniu usługi. Opcjonalnym elementem na wejściu jest także informacja o usługach,
które mogą być wykorzystane. W obecnej implementacji Planera wykorzystywany jest zbiór
wcześniej przygotowanych planów. Zadaniem Planera jest więc wybór właściwego planu na
podstawie dostarczonej definicji zadania.
Na wyjściu planer zwraca plan lub zbiór alternatywnych planów w postaci abstrakcyjnego
grafu. W najprostszej wersji będzie to zbiór węzłów (kroków procesu) reprezentujących typy
usług i relacje pomiędzy tymi usługami. Relacja określa kolejność aranżacji i wykonania.
Typy tych relacji zostały omówione przy okazji omawiania fazy aranżacji. Węzły
reprezentujące usługi określonego typu są aranżowane zgodnie z relacjami aranżacji. Usługa,
która zaoferowała wybraną ofertę, jest przypisywana do odpowiedniego węzła w procesie
biznesowym. Wykonując tę czynność dla wszystkich węzłów w procesie, przekształcamy
abstrakcyjny plan procesu z typami usług na wykonywalny proces biznesowy, w którym
poszczególne węzły reprezentują konkretne usługi. Nie zawsze da się jednak zaaranżować
całego procesu przed fazą wykonania. W takiej sytuacji proces biznesowy zawiera węzły z
nieprzypisanymi usługami, dla których aranżacja jest przeprowadzana w dalszym etapie
realizacji procesu.
Plan może także zawierać węzły, które nie reprezentują pojedynczych usług. Mogą to być
grupy węzłów, które są w rzeczywistości zagnieżdżonymi grafami. Plan może przypisywać
także do poszczególnych węzłów procedury obsługi dla operacji kompensacji i obsługi
niepowodzeń. Na rysunku 40 przedstawiono przykładowy plan.
Rysunek 40. Przykładowy plan w postaci graficznej
W systemie Autero relacje między usługami opierają się głównie na warunkach
początkowych i warunkach końcowych usług, opisujących stan części środowiska związanej
styczeń 2016
45/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
z realizacją usługi. Te elementy zawarte są w przyjętej reprezentacji usługi. Warunki te są
określane już podczas definiowania typów usług (w sposób ogólny i abstrakcyjny), a w fazie
aranżacji i wykonania są precyzowane. Warunki są także wykorzystywane w fazie
planowania. Mogą być użyte podczas planowania automatycznego.
Rysunek 41. Relacje i warunki pomiędzy trzema usługami
Rysunek 41 przedstawia relacje pomiędzy trzema usługami. Przy każdej usłudze zostały
oznaczone warunki początkowe (WP) i warunki końcowe (WK). Na przykład usługa o typie
T1 wymaga przed rozpoczęciem wykonania spełnienia warunków WP1, a po jej wykonaniu
w środowisku zachodzą warunki określone w WK1. Oznaczenia pozostałych usług są
analogiczne. Usługa typu T3 jest zależna od usług o typach T1 i T2. Warunek początkowy
usługi T3 zawiera się w koniunkcji warunków usług T1 i T2. Oznacza to, że usługi o typach
T1 i T2 zmieniają środowisku w ten sposób, że są spełnione warunki początkowe usługi T3,
ale mogą generować także dodatkowe zmiany środowiska.
Na rysunku 42 zostały przedstawione dwa przykładowe plany realizujące zadanie, które
polega na przetransportowaniu ładunku z punktu A do punktu B. Na trasie znajduje się
przeszkoda wodna. Usługa typu ST1 udostępnia transport lądowy, usługa ST2 transport
wodny, natomiast usługa typu ST3 zapewnia transport drogą powietrzną.
styczeń 2016
46/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 42. Plany zadania w postaci graficznej
W przedstawionym przykładzie plan 1 składa się z 3 węzłów reprezentujących usługi, 2 typu
ST1 i jednej typu ST2. Tworzą one sekwencję ST1->ST2->ST1. Oznacza to, że najpierw
zostanie wykorzystana usługa transportu lądowego, której wynikiem będzie
przetransportowanie ładunku z punktu A do punktu C. Punkt C będzie znajdował się gdzieś
na granicy ląd-woda, ponieważ musi być odebrany przez usługodawcę usługi typu ST2 lub do
niego przekazany. Następnie drogą wodną ładunek transportowany jest z punktu C do
punktu D. To zadanie realizuje usługa typu ST2. Końcową trasę (D->B) ładunek pokonuje
drogą lądową z ponownym wykorzystaniem usługi typu ST1. W tym przypadku będzie to
najprawdopodobniej inna usługa (może być ta sama, ale z wykorzystaniem innego robota).
Plan 2 składa się z sekwencji usług typu ST1 i ST3. W tym przypadku ładunek jest
przewożony do punktu pośredniego E przez usługę typu ST1, a resztę drogi transportowany
drogą powietrzną. Taki transport realizuje usługa typu ST3. Alternatywnym planem może
być wykorzystanie tylko usługi transportu drogą powietrzną. W podanym przykładzie należy
jednak przyjąć, że usługa typu ST3 ma ograniczony zasięg i wymaga użycia dodatkowej
usługi.
Dokładna lokalizacja punktów C, D (dla planu 1) i E (dla planu 2) będzie ustalona w fazie
aranżacji. Może także istnieć typ usługi posiadający zdefiniowane takie punkty. Zależy to od
stopnia specjalizacji usługi.
6.1.3. Faza aranżacji
Sposób realizacji usług w realnym świecie bardzo często zależy od wymagań klienta, a także
aktualnego stanu środowiska. Dlatego ważne jest, aby ustalić te warunki przed faktycznym
wykonaniem usługi. Za to odpowiedzialna jest faza aranżacji. W tej fazie do usługi wysyłane
jest zapytanie z wymaganiami klienta zawierające także informacje o dostępnych zasobach
(lub zasobach przeznaczonych na realizację odpytywanej usługi) i żądanym czasie realizacji
usługi, a także aktualny stan środowiska i specyficzne wymagania innych usług z procesu
biznesowego. Usługodawca decyduje czy może wykonać swoje zadanie zgodnie z
przesłanymi parametrami. Jeżeli tak, to przesyła do klienta swoją ofertę zawierającą
dokładne wymagania odnośnie potrzebnych zasobów i czasu realizacji usługi, oraz opis
warunków, które muszą być spełnione, aby umożliwić realizację usługi, w przeciwnym razie
styczeń 2016
47/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
wysyła odmowę. Informacje przesyłane do usługodawcy w fazie aranżacji będą nazywane
intencją, a odpowiedź usługodawcy zobowiązaniem. Taki proces odpytywania jest
przeprowadzany także dla innych usług danego typu. Wyboru najlepszego usługodawcy
może dokonywać użytkownik lub może to być wybór automatyczny na podstawie wymagań
użytkownika.
W trakcie przeprowadzania fazy aranżacji intencje dla usług, których aranżacja jest zależna
od innych usług, są zwykle generowane na podstawie zobowiązań tych usług. W ten sposób
tworzy się łańcuch zależności.
Aranżacja usług wykonywanych za pomocą robotów musi uwzględniać nie tylko ich ogólne
właściwości, ale także ich aktualny stan w środowisku i wykonywane przez nie zadania. Za
przykład może posłużyć usługa transportu towaru pomiędzy dwoma punktami. Jeżeli
zleceniodawca chce wykonać usługę jak najszybciej, to kryterium wyboru usługi w fazie
aranżacji będzie przewidywany czas jej realizacji. Przykładowy scenariusz przedstawiony
został na rysunku 43.
Rysunek 43. Przykładowy stan środowiska w fazie aranżacji
W tym przypadku zadanie polega na przetransportowaniu ładunku z punktu A do punktu B, a
dostępne są dwie usługi mogące to zadanie zrealizować. Usługi są tego samego typu i z takimi
samymi atrybutami (reprezentują taki sam typ robota). Są one jednak w różnej odległości od
początkowej pozycji ładunku. Po otrzymaniu intencji zawierającej dokładne położenie
ładunku, Menedżery Usług reprezentujące roboty generują zobowiązanie, określając w nim,
na podstawie swojej aktualnej pozycji, czas w jakim deklarują się wykonać usługę transportu.
Robot 1 znajduje się w odległości 54 od ładunku, natomiast robot 2 w odległości 122, czyli
ponad 2 razy większej. W takim przypadku zobowiązanie wysłane przez Menedżera Usług
reprezentującego robota 1 powinno zawierać krótszy czas realizacji usługi i dlatego ten robot
zostanie wybrany do zrealizowania zadania.
W trakcie aranżacji kontrolowane są zasoby przeznaczone na realizację zadania. W
zobowiązaniach usługi przekazują, oprócz maksymalnego czasu realizacji zadania, także jego
koszt. Te dwa parametry decydują o wyborze najlepszej usługi. Zasoby, których zużycie
deklaruje wybrana usługa, są rezerwowane. Przy analizie możliwości dalszej realizacji
zadania obliczane są dostępne zasoby korzystając z prostego rachunku:
styczeń 2016
48/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
zasoby przeznaczone na zadanie – (zasoby skonsumowane przez usługi + zarezerwowane
zasoby)
Jeżeli dostępne środki są równe lub większe od tego, co wymaga usługa, to można
zaakceptować jej zobowiązanie.
6.1.4. Faza wykonania
Przed fazą wykonania usługi Menedżer Zadań przygotowuje odpowiednie dane wejściowe
korzystając z wygenerowanych danych powiązanych usług. Podobnie określane są warunki
początkowe dla usługi, które wynikają z warunków końcowych powiązanych usług i
aktualnego stanu środowiska. Menedżer Zadań przesyła te dane razem z wiadomością
Execute, która nakazuje usłudze rozpocząć zaaranżowaną pracę.
Faza wykonania może być przerwana przez Menedżera Zadań. Taka operacja, zgodnie z
przyjętymi założeniami, nie może powodować niebezpiecznych sytuacji i pozostawiać
nieokreślonego stanu usługi. Jeżeli zadanie wykonuje robot, to wysłanie komunikatu Abort
nie może być równoznaczne z awaryjnym zatrzymaniem robotów lub maszyn realizujących
zadanie. Menedżer Zadań nie kontroluje bezpośrednio sposobu realizacji zadania przez
usługę. Zapewnienie prawidłowego przerwania usługi leży po stronie usługodawcy. Po
przerwaniu pracy usługa powinna powiadomić także Menedżera Zadań o aktualnym stanie
środowiska.
W fazie wykonania Menedżer Zadań kontroluje także czas działania usługi. Jeżeli czas ten
przekroczy czas zadeklarowany przez usługę, to jest ona przerywana i podejmowana jest
próba dokończenia realizacji zadania z wykorzystaniem innych usług.
6.2. Obsługa nieprawidłowych sytuacji
W czasie realizacji usług realizowanych przez roboty może dojść do wielu nieoczekiwanych
zdarzeń, które należy obsłużyć. Robotyka jest dziedziną stale rozwijającą się i na obecnym
etapie niepowodzenia występują stosunkowo często. Oczywiście to stwierdzenie dotyczy
autonomicznych robotów w dynamicznych środowiskach, a nie np. robotów przemysłowych,
które wykonują ściśle zaplanowane i powtarzalne operacje.
Do zilustrowania działania mechanizmów obsługi niepowodzeń zostanie użyte zadanie
polegające na przetransportowaniu ładunku z punktu A do punktu B. Pierwotny plan
zakłada, że zostanie do tego celu wykorzystana jedna usługa, która realizuje to zadanie za
pomocą pojedynczego robota.
Rysunek 44. Wymiana nieprawidłowo zakończonej usługi w zadaniu transportu ładunku
styczeń 2016
49/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 44 przedstawia pierwszy etap algorytmu obsługi niepowodzeń, czyli zamianę
nieprawidłowo zakończonej usługi usługą tego samego typu. W fazie aranżacji wybrana
została usługa 1. Usługa ta przetransportowała ładunek tylko do punktu C, po czym zgłosiła
niepowodzenie, przesyłając informację, że obiekt jest w punkcie C. Po otrzymaniu takiej
informacji Menedżer Zadań podejmuje próbę ponownej aranżacji, wyszukując oferty tego
samego typu. W analizowanym przykładzie została wybrana usługa 2, która przetransportuje
ładunek z punktu C do punktu B, realizując w ten sposób zadanie.
Rysunek 45. Wymiana nieprawidłowo zakończonej usługi z użyciem alternatywnego planu
W trakcie realizacji zadania może wystąpić sytuacja uniemożliwiająca robotowi
kontynuowanie pracy, a tym samym brak możliwości zrealizowania świadczonej usługi. Na
przykład robot transportujący ładunek może natrafić na przeszkodę niemożliwą do
ominięcia (dla robota tego typu), która powstała w trakcie wykonania usługi lub była
nieznana w fazie planowania. Jeżeli przyjmiemy, że usługa typu T1 jest specyficzną usługą
transportową wykorzystującą jeden rodzaj robota, to ponowna aranżacja dla tego typu nie
powiedzie się.
W takiej sytuacji należy zaplanować alternatywny sposób realizacji pozostałej części zadania.
Rysunek 45 przedstawia opisaną sytuację i możliwe rozwiązanie. Do dokończenia realizacji
zadania zostały wybrane dwie usługi (typu T2 i T3), które zastąpią usługę 1 na pozostałym
odcinku (z punktu C do punktu B). W fazie aranżacji zostały wybrane usługi 2 i 3. Usługa typu
T2 ma lepsze możliwości pokonywania przeszkód od usługi typu T1, ale posiada także
ograniczony zasięg. Dlatego transportuje ona ładunek tylko do punktu D. Końcowy etap
realizowany jest za pomocą usługi typu T3, która transportuje ładunek drogą powietrzną.
Wszystkie operacje wykonywane są w ramach transakcji, która zawiera dynamiczny zbiór
uczestników. Transakcja nie wymaga, aby wszyscy jej uczestnicy poprawnie zakończyli swoje
zadania. Dzięki temu niepowodzenie pojedynczej usługi lub nawet wielu z nich nie powoduje
konieczności przerwania transakcji. Taka konieczność zachodzi jedynie w momencie, gdy nie
jest możliwa dalsza realizacja zadania. W takim przypadku transakcja kończy się
niepowodzeniem.
Rysunek 46. Procedura kompensacji dla zadania transportu
Przed zakończeniem transakcji możliwe jest także przeprowadzenie kompensacji. Taka
operacja wykonywana jest po anulowaniu realizacji zadania lub po wystąpieniu
niepowodzenia uniemożliwiającego realizację zadania. Kompensacja ma za zadanie
przywrócić stan środowiska sprzed rozpoczęcia wykonywania zadania. Uzyskanie takiej
styczeń 2016
50/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
sytuacji jest często niemożliwe, dlatego dąży się do uzyskania sytuacji jak najbardziej
zbliżonej do początkowej. Poszczególne usługi w procesie realizującym zadanie
kompensowane są w kolejności odwrotnej do sekwencji wykonania. Kompensacja
realizowana jest poprzez wywołanie wewnętrznej kompensacji usługi lub procedury
kompensacji przypisanej na poziomie planu do węzła reprezentującego daną usługę (w
przypadku gdy taka procedura została zdefiniowana).
Rysunek 46 przedstawia operację kompensacji dla omawianego zadania. Po wystąpieniu
polecenia anulowania wykonania zadania robot transportujący ładunek, będący aktualnie w
punkcie pomiędzy punktami A i B, przewozi ładunek z powrotem do punktu A. Należy
zauważyć, że w tym przypadku realizowana jest wewnętrzna procedura kompensacji usługi,
czyli operację kompensacji wykonuje ta sama usługa, która wykonywała przerwane
wcześniej zadanie. Nie oznacza to jednak, że do powrotnego transportu ładunku zostanie
wykorzystany ten sam robot. Wynika to z rozdzielenia sterowania wykonaniem usług, za
które odpowiada Menedżer Zadań, od sterowania robotami, które jest zadaniem Menedżera
Usług.
Omówione sposoby postępowania można zapisać w postaci algorytmu. Taki algorytm reakcji
na nieprawidłowe zakończenie usługi został przedstawiony na diagramie na rysunku 47.
Zbiór S zawiera usługi wchodzące w skład podprocesu, który zostanie wymieniony. Zbiór N
zawiera natomiast usługi, które są połączone relacjami sekwencji wykonania z usługami ze
zbioru S.
Rysunek 47. Algorytm obsługi niepowodzeń
styczeń 2016
51/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Po otrzymaniu wiadomości o błędzie następuje próba ponownej aranżacji, która polega na
wyszukaniu innych ofert usług tego samego typu spełniających wymagania zadania. Jeżeli są
dostępne takie usługi, to zostanie wybrana najlepsza oferta i możliwe jest dalsze
realizowanie zadania. W przeciwnym przypadku nieprawidłowo zakończona usługa
dodawana jest do zbioru S. Następnie dla usług ze zbioru S (dokładnie podprocesu złożonego
z tych usług) wyznaczane są warunki początkowe i końcowe. Dla tych warunków
generowany jest nowy plan (zbiór planów, z których zostanie wybrany jeden). Jeżeli operacja
generowania planu zakończy się sukcesem, to jest on zamieniany na podproces, który
następnie jest dołączany do procesu i aranżowany. W przypadku, gdy generowanie nowego
planu dla podanych warunków nie powiedzie się, to tworzony jest zbiór N zawierający usługi
będące bezpośrednimi następnikami usług w zbiorze S (pomijane są usługi, które znajdują
się już w zbiorze S). Po utworzeniu zbioru N jest on dodawany do zbioru S. Tak więc suma
zbiorów S i N staje się nowym zbiorem S. Następnie określane są warunki początkowe i
końcowe dla podprocesu składającego się z usług ze zbioru S. Dalej procedura powtarza się.
Taka pętla kończy się w momencie udanego wygenerowania nowego planu lub gdy zbiór N
będzie zbiorem pustym. Otrzymanie pustego zbioru N oznacza brak możliwości realizacji
zadania. W takim przypadku transakcja kończy się niepowodzeniem.
styczeń 2016
52/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
7. Środowisko symulacyjne
Rolą środowiska symulacyjnego jest odwzorowanie mapy z Repozytorium w celu testowania
działania systemu wielorobotowego. Umożliwia dodawanie oraz modyfikację urządzeń i
obiektów.
Środowisko zostało zaimplementowane przy użyciu platformy .NET oraz zintegrowanego
środowiska do tworzenia gier trójwymiarowych Unity3D.
7.1. Możliwości środowiska
Środowisko pozwala na umieszczanie obiektów utworzonych w Repozytorium oraz różnego
typu urządzeń takich jak np. kamery, roboty, automatycznie otwierane drzwi, windy oraz
wiele innych. Ponadto silnik Unity3D posiada bardzo rozbudowaną fizykę, przez co możliwe
jest uzyskanie kolizji między obiektami, działania grawitacji, tworzenia płaszczyzn kolizji
dopasowanych do kształtu obiektu, symulowania oświetlenia powodującego realistyczne
cienie itd. Ponadto środowisko umożliwia Menedżerom Usług komunikację z symulowanymi
urządzeniami przez gniazda sieciowe.
7.2. Generowanie środowiska na podstawie map obiektowych
Środowisko pozwala na odwzorowanie wszystkich obiektów znajdujących się w
Repozytorium. Po dodaniu nowego typu lub relacji do słownika wymagane jest
zaimplementowanie odwzorowania po stronie środowiska.
Wszystkie klasy odpowiadające obiektom w Repozytorium związane są z abstrakcyjną klasą
bazową SimulationObject. Jest ona odpowiedzialna za przetworzenie uzyskanego z
Repozytorium dokumentu XML przedstawiającego obiekt. Klasa służy do pobrania informacji
o nazwie i typie obiektu, jego pozycji oraz rotacji, masie, wymiarach, ewentualnym materiale,
który należy nałożyć na ten obiekt, informację o tym, czy na obiekt będzie wpływała
grawitacja oraz uchwyt do odpowiadającego mu, podczas działania symulacji, obiektowi
klasy GameObject. Ponadto klasa przechowuje listy wszystkich atrybutów, relacji oraz
interfejsów potrzebne do odwzorowania obiektów w środowisku.
styczeń 2016
53/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 48. Diagram klas hierarchii obiektów w środowisku symulacyjnym
Najprostszym obiektem, odwzorowywanym w środowisku, jest prostopadłościan, który w
Repozytorium posiada atrybuty informujące o jego położeniu i obrocie, wymiarach, wadze,
oraz teksturze na niego nałożonej. Jest on reprezentowany przez klasę CuboidObject,
rozszerzającą abstrakcyjną klasę bazową SimulationObject. W środowisku prostopadłościan
tworzony jest przy pomocy wbudowanego w Unity3D obiektu sześcianu, któremu
modyfikowane są parametry.
Obiektami, które rozszerzają funkcjonalności prostopadłościanu są drzwi (klasa DoorObject)
oraz winda (klasa ElevatorObject), które są symulowanymi urządzeniami, posiadającymi
własne Menedżery Usług.
Drzwi mają możliwość otwierania oraz zamykania się, muszą być ulokowane wewnątrz
ściany i połączone z nią relacją typu „isPlacedIn”. Relacja ta w środowisku powoduje
„wycięcie” dziury na drzwi w ścianie. Polega to na podzieleniu jednego obiektu ściany na 3
obiekty mniejsze.
Winda posiada możliwość poruszania się między piętrami. Ilość oraz wysokość pięter jest z
góry zdefiniowana w Repozytorium.
styczeń 2016
54/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 49. Ściana i drzwi połączone relacją isPlacedIn
Kolejnym obiektem prostym jest sfera, która w Repozytorium posiada informację o jej
położeniu i obrocie, promieniu, wadze oraz teksturze na nią nałożonej. Sfera reprezentowana
jest przez klasę SphereObject, rozszerzającą abstrakcyjną klasę bazową SimulationObject. W
środowisku sfera tworzona jest przy pomocy wbudowanego w Unity3D obiektu sfery,
któremu modyfikowane są parametry.
Obiektem rozszerzającym funkcjonalność sfery granulat (klasa GranulesObject). Granulat w
Repozytorium zapisany jest jako jeden obiekt, natomiast po stronie środowiska
symulacyjnego odwzorowywany jest przez pewną zdefiniowaną ilość sfer, które tworzone są
w punkcie, wskazywanym przez słownik. Tworzenie obiektu w ten sposób umożliwia
uzyskania realistycznego wypełnienia naczynia (np. słoika) przez swobodnie opadający
symulowany granulat.
Kolejnym symulowanym urządzeniem, generowanym w symulacji jest kamera (klasa
CameraObject, rozszerzająca klasę SimulationObject). Kamera w symulacji jest
reprezentowana przez wbudowany w Unity3D obiekt kamery, który pozwala na
wyświetlanie obrazu w oknie gry. Aby uzyskać możliwość wyświetlania wielu kamer w tym
samym czasie został zaimplementowany skrypt skalujący obraz z kamer, pozwalający na
wyświetlenie jednej kamery głównej, zajmującej 2/3 wielkości okna gry, 3 kamer
pobocznych, umieszczonych po prawej stronie kamery głównej oraz siatki wyświetlającej
pozostałe kamery, umieszczonej na dole okna gry.
Najważniejszym symulowanym urządzeniem w środowisku są roboty, reprezentowane przez
obiekty klasy RobotObject, rozszerzającej abstrakcyjną klasę bazową. Istnieje możliwość
symulowania robota z chwytakiem, robota z kontenerem oraz robota sprzątającego.
Robot z chwytakiem posiada podwozie z czterema kołami, które nie posiadają możliwości
skrętu. Aby obrócić robota należy wykonać obrót kół na obu osiach w przeciwnych
kierunkach. Ponadto robot posiada ramie z pięcioma stopniami swobody oraz chwytak z
dwoma stopniami swobody. Przy użyciu wyżej wymienionych elementów możliwe jest
uzyskanie zachowań: przemieszczenie się do zadanego punktu, przemieszczenie się w
okolicę jakiegoś punktu, przesunięcie ramienia do zadanego punktu, zamknięcie (zaciśnięcie)
i otwarcie chwytaka oraz obrót chwytaka, np. w celu przesypania zawartości.
Robot z pojemnikiem posiada podwozie takiego samego typu, jak w przypadku robota z
chwytakiem. Dodatkowo robot posiada pojemnik z podnośnikiem, który pozwala na
otwieranie i zamykanie samego kontenera oraz wysuwanie i opuszczanie podnośnika. W
przypadku, gdy przewożony obiekt jest zbyt dużych rozmiarów, istnieje możliwość
opuszczenia samego podnośnika, bez zamykania kontenera.
styczeń 2016
55/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Robot sprzątający posiada podwozie takiego samego typu, jak w przypadku powyższych
robotów. Robot ma za zadanie sprzątanie granulatu, który spadł na podłogę, posiada on
wysuwaną prowadnicę, pozwalającą na wysypywanie zebranych przez robota elementów.
Rysunek 50. Roboty dostępne w środowisku
Obiekty zawierające elementy (obiekty) podrzędne tworzone są przy pomocy klasy
ComplexObject, rozszerzającej klasę SimulationObject, która pozwala na połączenie ze sobą
wszystkich tych obiektów. Dodatkowo wyliczana jest całkowita masa tworzonego obiektu.
Pozostałe typy, które posiadają kształty trudne do osiągnięcia poprzez łączenie obiektów
prostych tworzone są przy użyciu klasy PremadeObject. Obiektami takimi są np. miska, słoik
lub materiały niebezpieczne. W środowisku Unity3D uzyskiwane są one z utworzonych
wcześniej modeli trójwymiarowych, do których dodawane są odpowiednie collidery,
pozwalające na jak najdokładniejsze odwzorowanie kolizji między obiektami. Środowisko
Unity3D posiada również collidery pobierające swój kształt z modelu, na który są nakładane,
przez co pozwalają na idealne odwzorowanie kształtu fizycznego obiektu, lecz silnik nie
pozwala na wykrywanie między nimi kolizji. Kolizje na elementach takiego typu możliwe są
po uwypukleniu kształtu, lecz wtedy takie obiekty nie pozwalałyby na umieszczanie w nich
innych obiektów, np. nie dało by się wypełnić słoika granulatem.
Rysunek 51. Słoik z widocznymi colliderami
styczeń 2016
56/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
7.3. Środowisko testowe
Środowisko testowe składa się z czterech pomieszczeń: dwóch pomieszczeń na parterze,
jednego na piętrze oraz windy. Jedno z pomieszczeń na parterze jest puste, posiada tylko
drzwi wyjściowe na zewnątrz, drzwi do pokoju obok oraz do windy. Drugie pomieszczenie na
parterze zawiera stół, na którym stoi miska, szafkę, na której stoi słoik z granulatem oraz
dwa roboty: robota z ramieniem oraz robota sprzątającego. W windzie znajduje się jedynie
podnośnik, służący do przemieszczania się między piętrami. Pomieszczenie na piętrze
posiada szafkę, na której stoi słoik z granulatem oraz również dwa roboty: robota z
ramieniem oraz robota z pojemnikiem.
Rysunek 52. Środowisko testowe
Ponadto wszystkie pomieszczenia posiadają umieszczone w ich rogu kamery, kamera w
windzie porusza się razem z podnośnikiem. Każdy robot posiada co najmniej jedną kamerę
umiejscowioną za nim, pozwalającą na widok z trzeciej osoby. Niektóre roboty posiadają
dodatkowe kamery, umiejscowione w zależności od typu urządzenia, np. robot z ramieniem
posiada kamerę podłączoną do chwytaka, a robot z pojemnikiem posiada kamerę na kabinie
pozwalającą na podgląd pojemnika.
styczeń 2016
57/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 53. Podgląd kamer, widoczny po uruchomieniu środowiska testowego.
styczeń 2016
58/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
8. Eksperymenty
Scenariusze zostały wykonane na 3 komputerach. Menedżer Zadań był uruchomiony na
pierwszym komputerze. Na drugim część Menedżerów Usług, a pozostałe komponenty
(Repozytorium, Rejestr Usług, symulacja i Menedżery Usług) na trzecim. Poza symulacją,
komponenty systemu nie wymagają dużej mocy obliczeniowej, więc umieszczenie tylu
komponentów na jednym komputerze nie stanowiło problemu.
8.1. Scenariusz 1 – transport słoika z szafki na platformę
Pierwszy scenariusz testowy będzie polegał na przewiezieniu przedmiotu z otwartej szafki
na platformę.
Rysunek 54 Przebieg zadania transportu
Transportowanym przedmiotem jest w tym przypadku słoik z zawartością (granulkami).
Zadanie jest realizowane przez jedną usługę typu TransferObject reprezentującej jednego
robota wyposażonego w chwytak. Zadanie jest zdefiniowane następująco:

warunki początkowe: Jar002 isOn ?Shelf

warunki końcowe: Jar002 isOn Platform001
Plan zadania transportu słoika:
<?xml version="1.0" encoding="utf-8" ?>
<plans>
<plan>
<step id="1">
<task serviceType="TransferObject">
</task>
</step>
</plan>
</plans>
W fazie aranżacji do usługi typu TransferObject to wysyłane są zarówno warunki
początkowe, jak i końcowe zadania. Usługa w zobowiązaniu nie zmienia warunków
początkowych, które niezmienione pozostają także do fazy wykonania i są wysyłane z
wiadomością rozpoczęcia wykonania (Execute).
Po otrzymaniu wiadomości rozpoczynającej fazę wykonania, Menedżer Usług wysyła robota
w pobliże szafki, tak aby transportowany przedmiot był w zasięgu chwytaka. Następnie
styczeń 2016
59/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
przedmiot jest chwytany, ramię ustawia się w odpowiedniej pozycji transportowej i robot
podjeżdża do platformy, na której odkłada słoik.
Przebieg scenariusza w symulacji:
Fazy realizacji scenariusza w symulacji zostały przedstawione na rysunku 55.
Rysunek 55 Przebieg zadania transportu w symulacji
Zrzuty ekranu symulacji przedstawiają następujące etapy:

A – podjeżdżanie do obiektu

B – chwytanie obiektu

C – transport obiektu

D – odkładanie obiektu
Rysunek 56 Środowisko po wykonaniu zadania transportu słoika
styczeń 2016
60/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Powyższy rysunek obrazuje stan środowiska po wykonaniu zadania, co oznacza, że słoik jest
na platformie.
Rysunek 57. Sekwencja wiadomości protokołu transakcji dla zadania transportu obiektu
Scenariusz 1b – niepowodzenie: uszkodzenie napędu robota
W czasie wykonywania zadania transportu może dojść do wielu niepowodzeń. Jednym z nich
jest częściowe uszkodzenie robota, w tym przypadku będzie to uszkodzenie napędu. W takiej
sytuacji robot posiada działającą jednostkę sterującą i może komunikować się z resztą
systemu. Posiada także działający nadal chwytak. Odkłada więc transportowany przedmiot
na ziemię i wysyła do Menedżera Zadań informację o jego położeniu (warunki końcowe:
Jar002.PositionX=12.5 AND Jar002.PositionY=1.3 AND Jar002.PositionZ=7). Dzięki temu
Menedżer Zadań może podjąć akcje pozwalające na dokończenie zadania. W analizowanym
scenariuszu znajduje inną usługę tego samego typu (TransferObject - transport przedmiotu) i
zleca jej wykonanie, wskazując jako sytuację wejściową otrzymaną od robota pozycję słoika.
Realizacja drugiej usługi polega na podjechaniu do miejsca uszkodzenia robota, podniesieniu
słoika z ziemi, przetransportowaniu do pozycji docelowej i odłożeniu słoika na platformę.
Rysunek 58 Przebieg zadania uwzględniający uszkodzenie napędu robota
styczeń 2016
61/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 59 Przebieg scenariusza w symulacji - fragment realizowany przez pierwotnie
wybranego robota
Zrzuty ekranu na rysunkach powyżej i poniżej przedstawiają następujące etapy scenariusza:

A – podjechanie i chwycenie słoika przez robota (oznaczmy go numerem 1).

B – transport słoika przez robota 1.

C – uszkodzenie napędu w robocie 1.

D – odłożenie przedmiotu.

E – robot 2, realizujący zastępczą usługę transportu podjeżdża pod słoik.

F – robot 2 chwycił słoik.

G – dalszy transport słoika przez robota 2.

H – robot 2 odkłada słoik na platformie docelowej.

I – słoik znajduje się na platformie, co oznacza, że zadanie zostało poprawnie
wykonane.
styczeń 2016
62/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 60 Przebieg scenariusza w symulacji - kończenie zadania przez usługę zastępczą
styczeń 2016
63/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 61. Sekwencja wiadomości protokołu transakcji dla zadania transportu z
niepowodzeniem
Rysunek 61 przedstawia kompletną sekwencję wiadomości protokołu ABTP podczas
realizacji zadania według scenariusza 1b. Nieprawidłowo zakończona usługa
TransferObject 1 nie uczestniczy w ponownej aranżacji. Wiadomość Arrange wysyłana jest
tylko do usługi TransferObject 2. Do obu usług na koniec zostaje przesłana wiadomość End,
oznaczająca zakończenie transakcji.
Scenariusz 1c –
komunikacyjnego
niepowodzenie:
uszkodzenie
napędu
robota
i
modułu
Wersja c scenariusza jest rozszerzeniem (bardziej skomplikowanym niepowodzeniem)
scenariusza b. W tym przypadku, poza uszkodzeniem napędu, uszkodzeniu uległ moduł
komunikacyjny. Mogło to nastąpić np. w wyniku fizycznego uszkodzenia anteny razem z
kołem w wyniku zderzenia z innym obiektem. W takiej sytuacji robot odkłada słoik, ale nie
może wysłać informacji o niepowodzeniu i aktualnej sytuacji środowiska (położenia słoika).
styczeń 2016
64/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 62. Przebieg zadania transportu słoika z wystąpieniem niepowodzenia usługi w
przypadku braku powiadomienia o tym zdarzeniu
Jeżeli po upłynięciu czasu przeznaczonego na wykonanie usługi Menedżer Zadań nie otrzyma
informacji o poprawnym wykonaniu lub niepowodzeniu, to przyjmuje on, że usługa
zakończyła się niepowodzeniem i podejmuje kroki pozwalające na dalszą realizację zadania.
W opisanej sytuacji Menedżer Zadań wysyła do Planera żądanie wygenerowania planu
realizacji zadania zastępującego nieprawidłowo zakończoną usługę, ale uwzględniając także
nieznaną sytuację wejściową. Usługa transportowa wymaga na wejściu aktualnej pozycji
obiektu do transportu, dlatego do planu zostanie dodana usługa mająca za zadanie znaleźć
aktualną pozycję obiektu, na którego transporcie polegało zadanie klienta.
Plan dokończenia zadania dla nieznanego stanu środowiska po niepowodzeniu:
<?xml version="1.0" encoding="utf-8" ?>
<plans>
<plan>
<step id="1">
<task serviceType="Find"> </task>
</step>
<step id="2">
<task serviceType="TransferObject"> </task>
</step>
<rules>
<relationship arrangementType="AfterExecution">
<step id="1"/>
<step id="2"/>
</relationship>
</rules>
</plan>
</plans>
Powyższy listing przedstawia plan dokończenia zadania. Poza usługą TransferObject
w planie znajduje się usługa Find, której zadaniem jest znalezienie obiektu do transportu.
Usługi połączone są relacją AfterExecution. Oznacza to, że usługa TransferObject będzie
aranżowana dopiero po wykonaniu usługi Find. Podyktowane to jest tym, że usługa
transportu musi już w fazie aranżacji znać lokalizacje początkowe i końcowe
transportowanego obiektu.
styczeń 2016
65/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 63. Przebieg scenariusza 1c w symulacji - transport, niepowodzenie, ustalanie
aktualnej sytuacji
Zrzuty ekranu na rysunkach 63 i 64 przedstawiają następujące etapy scenariusza:

A – podjechanie i chwycenie słoika przez robota 1.

B – transport słoika przez robota 1.

C – uszkodzenie napędu w robocie 1 i odłożenie słoika.

D – przeszukanie otoczenia w poszukiwaniu słoika.

E – chwycenie słoika przez robota 2, realizującego zastępczą usługę transportu.

F – transport słoika przez robota 2.

G – słoik znajduje się na platformie, co oznacza, że zadanie zostało poprawnie
wykonane.
styczeń 2016
66/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 64. Przebieg scenariusza 1c w symulacji - kończenie zadania przez usługę zastępczą
8.2. Scenariusz 2 – unieszkodliwienie bomby
Scenariusz 2 jest po części rozwinięciem scenariusza 1. Zamiast słoika transportowany jest
niebezpieczny ładunek wybuchowy (bomba). Docelowym miejscem jest platforma
urządzenia do unieszkodliwienia ładunku.
Rysunek 65 Przebieg zadania unieszkodliwienia bomby
W tym przypadku zadanie realizowane jest za pomocą dwóch usług. Pierwsza jest usługą
transportującą ładunek, natomiast druga unieszkodliwia ładunek, który został wcześniej
umieszczony na odpowiedniej platformie. Zadanie jest zdefiniowane następująco:

warunki początkowe: Bomb001 isIn Cabinet001

warunki końcowe: Bomb001 isIn Platform001
styczeń 2016
67/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Plan zadania dla scenariusza 2:
<?xml version="1.0" encoding="utf-8" ?>
<plans>
<plan>
<step id="1">
<task serviceType="TransferObject">
</task>
</step>
<step id="2">
<task serviceType="ExplosivesDisposal">
</task>
</step>
<rules>
<relationship arrangementType="Reversed">
<step id="1"/>
<step id="2"/>
</relationship>
</rules>
</plan>
</plans>
Na listingu powyżej został zamieszczony plan zadania dla scenariusza 2. Zawiera on dwie
usługi o typach TransferObject i ExplosivesDisposal, czyli odpowiednio usługa transportowa
i usługa neutralizująca niebezpieczny ładunek (np. ładunek wybuchowy). Usługi w planie są
połączone relacją Reversed, co oznacza, że pomiędzy usługami, których dotyczy ta relacja,
faza aranżacji przebiega w odwrotnej kolejności do fazy wykonania. Aby unieszkodliwić
ładunek, usługa typu ExplosivesDisposal wymaga umieszczenia go w odpowiednim miejscu.
To miejsce jest podawane w fazie aranżacji. Wymagane warunki początkowe określone w
zobowiązaniu to „Bomb001 isOn Platform001”. Dopiero po zaaranżowaniu tej usługi można
więc zaaranżować usługę transportową z warunkami początkowymi „Bomb001 isIn
Cabinet001” i warunkami końcowymi „Bomb001 isOn Platform001”. W czasie wykonania
usługi realizują zadania według zaaranżowanych warunków.
styczeń 2016
68/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 66. Przebieg scenariusza 2a w symulacji - chwycenie i transport bomby
Na rysunkach 66 i 67 przedstawiono następujące etapy realizacji zadania:

A – przemieszczanie robota w kierunku bomby.

B – chwytanie bomby.

C – transport bomby do miejsca unieszkodliwienia.

D – umieszczenie bomby na specjalnej platformie urządzenia unieszkodliwiającego.

E – otworzenie platformy.

F – przemieszczenie bomby do wnętrza urządzenia.

G – zamknięcie platformy i unieszkodliwienie bomby
styczeń 2016
69/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 67 Unieszkodliwienie bomby
Rysunek 68. Sekwencja wiadomości protokołu transakcji dla zadania unieszkodliwienia
bomby
styczeń 2016
70/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Scenariusz 2b – detonacja bomby transportowanej windą
Alternatywną wersją scenariusza 2 jest przypadek, gdzie bomba i platforma
unieszkodliwiająca znajdują się na innych piętrach budynku. W takiej sytuacji robot musi
skorzystać z windy, aby przemieścić się wraz z ładunkiem na właściwe piętro.
Rysunek 69 Przebieg zadania unieszkodliwienia bomby z uwzględnieniem windy
W ramach tego scenariusza wykorzystywana jest możliwość zlecania zadań w Menedżerze
Zadań przez inne komponenty systemu. Winda jest traktowana jako usługa, której zadanie
polega na dojechaniu na żądane piętro. Robot dojeżdża z bombą do windy i zleca
(komponentem zlecającym jest Menedżer Usług obsługujący danego robota) zadanie
dojechania windy na piętro, na którym aktualnie znajduje się ten robot. Po zaaranżowaniu
odpowiedniej usługi i jej wykonaniu, robot otrzymuje potwierdzenie wykonania zadania.
Oznacza to, że winda dojechała na wskazane piętro i jej drzwi otworzyły się. Następnie robot
wjeżdża do środka i zleca wykonanie zadania przejechania windy na docelowe piętro. Po
wykonaniu zadania windy robot wyjeżdża z niej i kieruje się do platformy urządzenia
neutralizującego, na którą odkłada bombę. Jest ona następnie wciągana do środka urządzenia
i neutralizowana.
styczeń 2016
71/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 70. Przebieg scenariusza 2b w symulacji - transport bomby windą
Na rysunkach 70 i 71 przedstawiono następujące etapy realizacji zadania:

A – przemieszczanie robota z bombą w kierunku windy.

B – wjechanie robota do windy.

C – przekrój budynku z widoczną windą na pierwszym piętrze.

D – przekrój budynku z widoczną windą na parterze.

E – wyjechanie z windy.

F – transport bomby do urządzenia unieszkodliwiającego.

G – umieszczenie bomby na platformie urządzenia.

H – zamknięcie platformy i unieszkodliwienie bomby.
styczeń 2016
72/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 71. Przebieg scenariusza 2b w symulacji – unieszkodliwienie bomby
styczeń 2016
73/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 72. Sekwencja wiadomości protokołu transakcji dla zadania unieszkodliwienia
bomby transportowanej windą
styczeń 2016
74/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
8.3. Scenariusz 3 – Transfer zawartości obiektu
Zadanie w scenariuszu 3 polega na przetransportowaniu zawartości słoika znajdującego się
w szafce do miski znajdującej się na stole. Zawartością słoika jest granulat, którego transfer
będzie polegał na operacji przesypania.
Rysunek 73 Przebieg zadania przesypania zawartości obiektu
Zadanie jest zdefiniowane następująco:

warunki początkowe: ?Granules002 isIn Jar001

warunki końcowe: ?Granules002 isIn Bowl001
Plan zadania dla scenariusza 3:
<?xml version="1.0" encoding="utf-8" ?>
<plans>
<plan>
<step id="1">
<task serviceType="TransferContent">
</task>
</step>
<step id="2">
<task serviceType="CleanArea">
</task>
</step>
<failureHandler id="3" stepId="1">
<step id="2"/>
</failureHandler>
</plan>
</plans>
Powyższy listing przedstawia plan realizacji zadania. Zadanie jest realizowane z
wykorzystaniem jednego typu (TransferContent) usługi, która realizuje transfer zawartości.
Wykorzystana konkretna usługa (reprezentująca robota z chwytakiem) może realizować
zadania transferu zawartości polegające na przesypaniu lub przelaniu. Dodatkowo w planie
znajduje się zdefiniowana procedura obsługi niepowodzenia zawierająca usługę typu
CleanArea. Wywołuje się ona w przypadku niepowodzenia w trakcie transferu zawartości.
Pierwszy etap realizacji zadania transferu jest analogiczny jak w przypadku zadania
przeniesienia obiektu. W tym przypadku robot nie odkłada jednak słoika, a odpowiednio go
przekręca nad miską, powodując przesypanie zawartości. Po tej operacji odstawia pusty słoik
z powrotem do szafki.
styczeń 2016
75/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 74. Przebieg scenariusza 3a w symulacji - chwycenie i transport słoika z granulatem
Przebieg scenariusza przedstawiony na zrzutach (Rysunek 74 i Rysunek 75), zawiera
następujące kroki i stany:

A – podjechanie robota do szafki, w której znajduje się słoik z zawartością
(granulatem).

B – chwycenie słoika.

C – transport słoika do miejsca gdzie jego zawartość zostanie przesypana.

D – przygotowanie do operacji przesypania granulatu.

E – przesypywanie granulatu.

F – zawartość słoika została w całości przesypana do miski na stole.

G – odstawienie słoika do szafki.
styczeń 2016
76/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 75. Przebieg scenariusza 3a w symulacji - przesypanie granulatu i odstawienie
słoika
Zadanie można traktować jako wykonane już po ukończeniu pełnego przesypywania
granulek do miski. Po tej operacji mamy sytuację środowiska, w której granulat znajduje się
w misce, czyli zgodnie z definicją zadania. Odstawienie słoika jest już dodatkową operacją
usługi, ale wydaje się naturalne dla takiego zadania. Zwykle po skorzystaniu z substancji w
jakimś pojemniku (kawa, herbata, cukier) odstawiamy go w to samo miejsce. W przypadku
całkowitego opróżnienia pojemnika źródłowego można jeszcze rozważyć jego wyrzucenie,
ale w tym przypadku przyjęto, że robot tego nie robi.
styczeń 2016
77/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 76. Sekwencja wiadomości protokołu transakcji dla zadania przesypania granulatu
Scenariusz 3b – ubytek części transportowanej zawartości
W trakcie realizacji analizowanego w scenariuszu 3 zadania może dojść do niepowodzenia
polegającego na wydostaniu się transferowanej substancji poza pojemnik docelowy. W takim
przypadku zostanie uruchomiona procedura obsługi niepowodzenia (zdefiniowana
wcześniej w planie), zawierającą usługę (CleanArea) sprzątającą substancję (granulki), która
znalazła się na podłodze. Po sprzątaniu granulki są transferowane do wskazanego miejsca.
Może to być miska, do której miały trafić pierwotnie. W takim przypadku, po zakończeniu
procedury obsługi niepowodzenia, zadanie kończy się sukcesem (wszystkie granulki
znajdują się w obiekcie docelowym). Jeżeli zadanie wymaga przetransferowania wszystkich
granulek, a robot sprzątający nie zdołał ich znaleźć lub nie mogą być one umieszczone w
pojemniku docelowym, to zadanie kończy się niepowodzeniem. W opisywanym scenariuszu
została wybrana pierwsza opcja, dlatego warunki końcowe dla usługi sprzątania to
„?Granules002 isIn Bowl001”. Warunki początkowe są przekazywane z usługi zakończonej
niepowodzeniem, która wysłała opis sytuacji wskazującej, że granulki znajdują się na
podłodze (?Granules002 isOn Floor001).
Rysunek 77 Przebieg zadania przesypania zawartości słoika do miski z zebraniem rozsypanej
zawartości
styczeń 2016
78/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Przebieg scenariusza 3b w symulacji jest do momentu zakończenia przesypywania taki sam
jak w wersji 3a. W scenariuszu 3b po przesypaniu okazuje się, że część granulek jest na
podłodze, jak zostało to zaznaczony kółkiem na zrzucie ekranu A.
Rysunek 78. Pierwszy etap realizacji procedury obsługi niepowodzenia
Procedura obsługi niepowodzenia w symulacji (Rysunek 78 i Rysunek 79) wygląda
następująco:

A – wykrycie nieprawidłowego wykonania zadania.

B – zlecenie wykonania usługi w ramach zdefiniowanej procedury obsługi –
uruchomienie robota sprzątającego.

C – działanie robota sprzątającego.

D – zakończenie zbieranie rozsypanego granulatu.

E – przygotowanie do wysypania sprzątniętego granulatu.

F – wysypywanie granulatu do pojemnika, w którym miał się, według definicji
zadania, znaleźć.

G – wszystkie granulki zostały umieszczone w misce na stole, co oznacza, że zadanie
zostało wykonane poprawnie.
styczeń 2016
79/80
Autonomia dla robotów ratowniczo-eksploracyjnych
Raport z wykonanych prac
wersja 1.0
Rysunek 79 Drugi etap realizacji procedury obsługi niepowodzenia
Rysunek 80. Sekwencja wiadomości protokołu transakcji dla zadania przesypania granulatu
w przypadku niepowodzenia usługi przesypującej
styczeń 2016
80/80

Podobne dokumenty