Zastosowania Robotów Mobilnych

Podobne dokumenty
dr inż. Tomasz Krzeszowski

Wprowadzenie do programowania

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Informatyka studia stacjonarne pierwszego stopnia

Programowanie obiektowe

EXSO-CORE - specyfikacja

Systemy Robotów Autonomicznych

Podstawy Programowania Programowanie Obiektowe

Pierwsze kroki Roberto (przód/tył)

Dokumentacja aplikacji Szachy online

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

PRACA DYPLOMOWA MAGISTERSKA

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Specyfikacja dla Zadania 1: Kurs programowania sterowników PLC dla uczniów grupy I w ZSP nr 2 w Brzesku.

Wykład 8: klasy cz. 4

biegle i poprawnie posługuje się terminologią informatyczną,

System zarządzający grami programistycznymi Meridius

Dr hab. inż. Marek Pawełczyk, prof. nzw. w Politechnice Śląskiej Koordynator Projektu POKL /10

Zagadnienia egzaminacyjne AUTOMATYKA I ROBOTYKA. Stacjonarne I-go stopnia TYP STUDIÓW STOPIEŃ STUDIÓW SPECJALNOŚĆ

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Sterowanie, uczenie i symulacja robotów przemysłowych Kawasaki

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Laboratorium Elektrycznych Systemów Inteligentnych

Katedra Inżynierii Oprogramowania Tematy prac dyplomowych inżynierskich STUDIA NIESTACJONARNE (ZAOCZNE)

OFERTA SZKOLENIOWA PROGRESS SOFTWARE

Podstawy programowania. Wprowadzenie

PRZEWODNIK PO PRZEDMIOCIE

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

Ewidencja oznakowania w oparciu o system wideorejestracji.

Szczegółowy opis laboratorium symulującego system produkcyjny

Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny

Referat Pracy Dyplomowej

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Naukowe Koło Nowoczesnych Technologii

Specyfikacja dla Zadania 1: Kurs programowania sterowników PLC dla uczniów grupy I w ZSP nr 2 w Brzesku.

Sieciowe Technologie Mobilne. Laboratorium 2

Temat 1. Więcej o opracowywaniu tekstu

PRACA DYPLOMOWA MAGISTERSKA

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

G-Ad. Charakterystyka systemu.

Tematy lekcji informatyki klasa 4a luty/marzec 2013

Zad. 6: Sterowanie robotem mobilnym

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

INSTRUKCJA OBSŁUGI PILOTÓW ASA Go-6T

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Wykład 5: Klasy cz. 3

Uczeń otrzymuje ocenę z przedmiotu uzależnioną od opanowania przez niego wymagań edukacyjnych na określonym poziomie.

Układy VLSI Bramki 1.0

System wspomagania harmonogramowania przedsięwzięć budowlanych

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

Projekt z przedmiotu Specjalizowane języki programowania Temat: Zastosowanie programowania obiektowego w środowisku LabView

Systemy Informatyki Przemysłowej

OFERTA ZAJĘĆ Z ROBOTYKI I PROGRAMOWANIA DLA SZKÓŁ PODSTAWOWYCH ORAZ GIMNAZJALNYCH

Aplikacje w środowisku Java

Programowanie MorphX Ax

LEKCJA 4 Misja na Marsie piszemy pierwszy program dla autonomicznego robota

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Tworzenie i wykorzystanie usług sieciowych

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

REFERAT PRACY DYPLOMOWEJ

ActiveXperts SMS Messaging Server

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Wykład 9: Metody wirtualne i polimorfizm

1.Wstęp. 2.Generowanie systemu w EDK

Szybkie prototypowanie w projektowaniu mechatronicznym

Programowanie obiektowe 2 - opis przedmiotu

Programowanie obiektowe

1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania

REFERAT O PRACY DYPLOMOWEJ

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie urządzeń mobilnych. projekt 6 ( )

KARTA PRZEDMIOTU. Programowanie aplikacji sieciowych w języku C# D1_2

Sterowniki Programowalne (SP)

Rozszerzony konspekt przedmiotu Inteligentne maszyny i systemy

Wydział Ekonomiczno-Informatyczny w Wilnie. 1. Podstawy programowania strukturalnego (C) 2. Wstęp do programowania obiektowego

LEKCJA 1 Poznajemy robota mbot

Programowanie obiektowe

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Specjalnościowy Obowiązkowy Polski Semestr 5

Instrukcja obsługi wewnętrznej poczty mmedica

LEKCJA 2 Program do zdalnego sterowania robotem

KARTA PRZEDMIOTU. Programowanie aplikacji bazodanowych w języku C# D1_2

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Konstruktor destruktor Programowanie obiektowe

PROGRAMOWANIE DLA KAŻDEGO

PRZEWODNIK PO PRZEDMIOCIE

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Zintegrowany system zarządzania produkcją ZKZ-ERP

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Część I Dostęp do danych oraz moŝliwości programowe (silnik bazy danych)

OBIEG INFORMACJI I WSPOMAGANIE DECYZJI W SYTUACJACH KRYZYSOWYCH

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. ADMINISTROWANIE BAZAMI DANYCH kl. 4c

Transkrypt:

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