Zastosowania Robotów Mobilnych

Transkrypt

Zastosowania Robotów Mobilnych
Zastosowania Robotów Mobilnych
Temat: Zapoznanie ze środowiskiem Microsoft Robotics Developer Studio
na przykładzie prostych problemów nawigacji.
1) Wstęp:
Microsoft Robotics Developer Studio jest popularnym środowiskiem wspierającym
programowanie robotów mobilnych tak rzeczywistych, jak i symulowanych. Jego
podstawowymi zaletami są;
• bogata baza sterowników do różnych urządzeń robotyki mobilnej
• modułowa architektura pozwalająca na łatwe modyfikacji i zwiększająca stabilność
• łatwa integracja symulacji z rzeczywistymi robotami
• rozbudowane, trójwymiarowe środowisko symulacyjne
Projekty tworzone w MRDS składają się ze współpracujących ze sobą
programów(serwisów). Rodzaj współpracy można określić w pliku formatu XML
nazywanym manifestem. Taka budowa projektu zapewnia elastyczność (ten sam serwis
może współpracować z urządzeniem rzeczywistym lub symulowanym), stabilność oraz
odporność na awarie(awaria urządzenia powoduje jedynie wyłączenie określonego serwisu,
nie destabilizuje całego projektu).
Serwisy w MRDS mogą być rozwijane w VPL(Visual Programming Language) lub z
użyciem dowolnego języka programowania wspieranego przez Microsoft Visual
Studio(środowisko programistyczne). VPL umożliwia tworzenie serwisów przy pomocy
prostego języka blokowego. Jest to rozwiązanie przeznaczone głównie do tworzenia
prostych serwisów, lub końcowych modyfikacji projektów. Przy tworzeniu bardziej
rozbudowanych serwisów lepszym rozwiązaniem jest skorzystanie z MVS. Zalecanym
językiem do rozwijania oprogramowania w MRDS jest C#. W tym języku będą rozwijane
programy podczas laboratorium.
W trakcie zajęć przeprowadzone zostanie zapoznanie z podstawowymi funkcjonalnościami
MRDS obejmujące:
-tworzenie symulacji
-rozbudowa symulacji poprzez wstawianie obiektów
-nawiązanie komunikacja pomiędzy serwisami
-napisanie prostego algorytmu nawigacji
2) Symulacja w MRDS:
Scena symulacji w MRDS jest tworzona przy pomocy jednostek(entities). Podstawowymi
jednostkami są:
-LightSourceEntity- odpowiedzialne za oświetlenie sceny
-SkyDomeEntity- odpowiedzialne za stworzenie sztucznego nieba
-HeightFieldEntity- odpowiedzialne za stworzenie podłoża
Rys. 1. Pusta scena.
W tak stworzonym środowisku(Rys.1) możliwe jest dodawanie dodatkowych jednostek.
Jednostki mogą zwierać kształty np.: prostopadłościanów, walców, kul itp. pojedyncza
jednostka może mieć dołączony jeden kształt(SignleShapeEntity) lub kilka
kształtów(MultiShapeEntity). Do odwzorowywania złożonych konstrukcji takich jak
roboty(rys. 2) można skorzystać z mechanizmu łączenia jednostek za pomocą zależności
„rodzic-dziecko”.
Rys. 2. Przykładowy robot. Widać odwzorowanie na potrzeby fizyki skanerów
laserowych(niebieskie prostopadłościany) oraz platformę mobilną(czerwony
prostopadłościan i koła).
Przykładowo podstawą robota jest platforma mobilna, która zawiera przybliżoną
reprezentacje obudowy robota z dołączonymi kołami. Jeżeli chcemy takiego robota
wyposażyć w skaner laserowy musimy stworzyć nową jednostkę głowicy,a następnie
dołączyć ją do platformy. Platforma staje się wtedy rodzicem, a skaner laserowy dzieckiem.
Zależność ta m.in. powoduje, że położenie skanera laserowego względem platformy nie
zmienia się, czyli jeśli platforma się poruszy to razem z nią poruszy się skaner. W ten
sposób można wyposażyć symulowanego robota w każde obsługiwane prze środowisko
urządzenie. Poniżej znajdują się przykłady tworzenia jednostki oraz dołączania jej do
robota:
a)Tworzenie jednostki LightSourceEntity:
(1)LightSourceEntity light = new
LightSourceEntity(LightSourceEntityType.Directional);
(2)light.EntityState.Name = "Light";
(3)light.Position = new Microsoft.Xna.Framework.Vector3(0, 1, 0);
(4)light.Direction = new Vector3(0.5f, -0.75f, 0.5f);
(5)light.Color = new Vector4(0.8f, 0.8f, 0.8f, 1f);
(6)SimulationEngine.GlobalInstancePort.Insert(light);
Początkowo tworzony jest obiekt jednostki. Wywoływany konstruktor przyjmuje jak
parametr typ oświetlenia(1). Następnie utworzonej jednostce nadawane jest imię(2),
przypisywana pozycja(3), kierunek świecenia(4) oraz kolor generowanego światła(5).
Kiedy wszystkie niezbędne parametry, zostaną podane, można dołączyć jednostkę do
symulowanej sceny poprzez wywołanie instrukcji Insert głównego portu. Różna jednostki
mogą wymagać określenia, różnych parametrów. Niektóre jednostki, przy tworzeniu,
wymagają zawiązania kontraktu z serwisem obsługującym ich działanie(np skaner
laserowy):
drive.Contract.CreateService(ConstructorPort, "http://localhost/" +
baserobot.State.Name, Microsoft.Robotics.Simulation.Partners.CreateEntityPartner(
"http://localhost/" + baserobot.State.Name));
b)Dodawanie jednostki do robota:
Pioneer3DX robot = CreatePioneerBase(ref position);
LaserRangeFinderEntity laser=CreateLaser();
robot.InsertEntity(laser);
3) Komunikacja między serwisami:
W MRDS komunikacja między serwisami zachodzi poprzez wymienianie wiadomości. Aby
swobodnie wymieniać wiadomości serwisy powinny nawiązać partnerstwo. Partnerstwo
wyznacza stopień zależności pomiędzy serwisami, na jakich warunkach mają
współpracować i czy są sobie niezbędne. Przykładowe nawiązanie partnerstwa wygląda
następująco:
[Partner("DriveDifferentialTwoWheel", Contract = drive.Contract.Identifier,
CreationPolicy = PartnerCreationPolicy.UseExisting)]
drive.DriveOperations _driveDifferentialTwoWheelPort = new drive.DriveOperations();
drive.DriveOperations _driveDifferentialTwoWheelNotify = new
drive.DriveOperations();
W procesie nawiązania partnerstwa tworzone są obiekty zwane portami. Pierwszy z
nich służy do bezpośredniej komunikacji z serwisem. Za jego pomocą można np.: ustawić
moc silników czy zmienić ustawienia skanera laserowego. Poprzez drugi możemy
odbierać zawiadomienia przesyłane od partnerskiego serwisu. Zawiadomieni dostaje się
od partnerów, których się dodatkowo subskrybuje.
Każda przesyłana wiadomość musi mieć ciało. Ciała , jak i typy wiadomości, które
dany serwis przyjmuje, są z góry w nim określone.
4) Omówienie programów:
Na laboratorium zostaną wykorzystane dwa programy: Symulacja i Nawigacja.
Symulacja jest odpowiedzialna za stworzenie środowiska i wstawienie od niego modelu
robota. Nawigacja odpowiada za realizacje algorytmu sterowania.
a) Program Symulacja:
Program Symulacja tworzy prostą scenę(Rys. 4).
Rys 4. Scena programu Symulacja.
Do takiego środowiska wstawiany jest robot Pioneer 3DX wyposażony w skaner laserowy
oraz zderzaki. Robot sterowany jest różnicowo.
b)Program Nawigacja:
Program Nawigacja zbiera dane ze wszystkich serwisów współpracujących i na ich
podstawie wyznacza dalszą trasę robota. Pozyskiwane są następujące dane:
• tablica zawierająca pomiary lasera skanerowego,
• informacje o stanie zdalne zderzaków,
• aktualna prędkość robota,
• aktualne położenie oraz orientację robota.
Położenie i orientacja robota są podane bez błędów w celu ułatwienia pisania algorytmu. Na
podstawie otrzymanych danych modyfikowany jest stan wewnętrzny serwisu. Stan
wewnętrzny przechowuje następujące informacje:
• ostatnia odebrana prędkość robota,
• ostatnie odebrane położenie i orientacja robota,
• stan robota – możliwy jeden z 3: DRIVE,TURN,STOP,
• informacja czy robot aktualnie wykonuje manewr omijania przeszkody,
• aktualny poziom realizacji manewru omijania przeszkody,
• ostatni odebrany skan laserowy,
• stan zderzaków.
Program może kontaktować się z serwisem odpowiedzialnym za ruch robota i wydawać mu
polecenia. Dostępne polecenia to:
• przejedź dystans- realizowane przez metodę DriveDistance przyjmującą jako
parametry
zadany dystans i moc silników
• obróć o kąt- realizowane przez metodę TurnAngle przyjmującą jako parametry
zadany
kąt i moc silników
• ustaw moc na silnikach- realizowane za pomocą metody Move, która ustawia
moc na każdym silniku oddzielnie.
Po zakończeniu pierwszych dwóch z tych czynności program odbiera odpowiednie
zawiadomienie.
5) Realizacja ćwiczenia:
1. Zapoznanie ze środowiskiem Microsoft Visual Studio.
2. Zapoznanie z programami Symulacja i Nawigacja.
3. Napisanie w programie Symulacja metod odpowiedzialnych za tworzenie i dodawanie
robota oraz symulowanych urządzeń.
4. Opracowanie algorytmu omijania przeszkód i jego implementacja w programie
Nawigacja.
5. Opracowanie algorytmu losowej eksploracji i jego implementacja w programie
Nawigacja.
6. Opracowanie algorytmu dojechania do określonego punktu i jego implementacja w
programie Nawigacja.
6) Literatura:
http://msdn.microsoft.com/en-us/robotics/default