Projekt inżynierski. Algorytmy sterowania robotem mobilnym w technologii Erlang



Podobne dokumenty
Konfiguracja współpracy urządzeń mobilnych (bonowników).

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Kancelaria Prawna.WEB - POMOC

Symulacja działania sterownika dla robota dwuosiowego typu SCARA w środowisku Matlab/Simulink.

1. Opis. 2. Wymagania sprzętowe:

Instrukcja konfiguracji programu Fakt z modułem lanfakt

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Instrukcja użytkownika

Win Admin Monitor Instrukcja Obsługi

1. INSTALACJA SERWERA

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Kancelaria instalacja programu

Wykaz zmian w programie SysLoger

Instrukcja obsługi DHL KONWERTER 1.6

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

SERWER AKTUALIZACJI UpServ

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

BACKUP BAZ DANYCH FIREBIRD

Dokumentacja fillup - MS SQL

PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI

SERWER AKTUALIZACJI UpServ

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Przewodnik instalacji i rozpoczynania pracy. Dla DataPage+ 2013

Instrukcja dotycząca konwersji dokumentów LaTeX do plików w formacie RTF

SERWER AKTUALIZACJI UpServ

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

DESlock+ szybki start

Wykaz zmian w programie WinAdmin Replikator

FAQ: /PL Data: 01/06/2015 WinCC Professional konfiguracja struktury klient-serwer

Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B

Program RMUA. Instrukcja konfiguracji i pracy w programie. (Wersja 2)

Współpraca z platformą Emp@tia. dokumentacja techniczna

Przewodnik instalacji i rozpoczynania pracy. dla DataPage+ 2012

Wysyłka wniosko w ZUS - EKS. Instrukcja użytkownika aplikacji Wysyłka wniosków ZUS EKS

Instrukcja obsługi aplikacji Karty Pojazdów dla Dealerów Samochodowych

Zaawansowane aplikacje internetowe - laboratorium

Instrukcja obsługi Multiconverter 2.0

Veronica. Wizyjny system monitorowania obiektów budowlanych. Instrukcja oprogramowania

Program dla praktyki lekarskiej

Referat pracy dyplomowej

Instrukcja EQU Kantech

Nieskonfigurowana, pusta konsola MMC

Współpraca z platformą dokumentacja techniczna

INSTRUKCJA OBSŁUGI OPROGRAMOWANIA VMS. Spis treści Instalacja Instrukcje użytkowania i obsługi... 3

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Platforma e-learningowa

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

Instrukcja konfiguracji programu Fakt z modułem lanfakt

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ INSTRUKCJA UŻYTKOWNIKA

Wykaz zmian w programie SysLoger

VinCent Administrator

Instrukcja użytkownika ARSoft-WZ1

Instrukcja instalacji Control Expert 3.0

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Generatory pomocy multimedialnych

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Instalacja i konfiguracja SAS PC Files Server

FAQ: /PL Data: 14/06/2007 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-200

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Instrukcja do oprogramowania ENAP DEC-1

enova Instalacja wersji demo

Program do wagi SmartScale

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

Instalacja i konfiguracja Symfonia.Common.Server oraz Symfonia.Common.Forte

Referat pracy dyplomowej

4. Podstawowa konfiguracja

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Instrukcja obsługi programu CMS Dla rejestratorów HANBANG

Opis szybkiego uruchomienia programu APBSoft

Skrócona instrukcja obsługi czujników Fast Tracer firmy Sequoia.

Oprogramowanie. DMS Lite. Podstawowa instrukcja obsługi

Instrukcja obsługi aplikacji GEOLOCATOR

Materiały dodatkowe. Simulink Real-Time

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Instalacja NOD32 Remote Administrator

Tomasz Greszata - Koszalin

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Instrukcja instalacji połączenia sterownika PL11-MUT24 ze stroną internetową.

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

Instrukcja instalacji usługi Sygnity SmsService

Instrukcja użytkownika

Aktualizacja firmware w urządzeniu za pośrednictwem FTP

URLOPY BY CTI. Instrukcja obsługi

Instrukcja instalacji usługi Sygnity SmsService

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Aplikacja do podpisu cyfrowego npodpis

Materiały dodatkowe. Raspberry Pi

Instrukcja dla programu Ocena.XP

e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU

Instrukcja użytkownika. Aplikacja dla Comarch Optima

Transkrypt:

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Informatyki Projekt inżynierski Algorytmy sterowania robotem mobilnym w technologii Erlang Dokumentacja użytkownika Piotr Anielski, Bogna Błaszczyk Opiekun: dr inż. Wojciech Turek Kraków 2013

OŚWIADCZENIE AUTORÓW PRACY Oświadczamy, świadomi odpowiedzialności karnej za poświadczenie nieprawdy, że niniejszą pracę dyplomową wykonaliśmy osobiście i samodzielnie (w zakresie opisanym we wstępie) i że nie korzystaliśmy ze źródeł innych niż wymienione w pracy................................................................... PODPISY

Spis treści 1 Wstęp 4 1.1 System rocopie................................. 4 1.2 Rzeczywisty robot................................ 4 2 Przygotowanie środowiska 5 2.1 Symulacja.................................... 5 2.1.1 Definicje XML............................. 5 2.2 Robot...................................... 7 3 Instalacja i uruchamianie 8 3.1 Konfiguracja................................... 8 3.2 Uruchamianie.................................. 8 3.2.1 ROBOSS................................ 8 3.2.2 Rzeczywisty robot........................... 9 3.2.3 Aplikacje demonstracyjne....................... 10 4 Zarządzanie uruchomieniami, parametryzacja 11 4.1 Zadawanie trajektorii.............................. 11 4.1.1 Format pliku tekstowego........................ 12 4.1.2 Wygładzanie trasy........................... 12 4.2 Parametry algorytmu.............................. 13 4.3 Wizualizacja wyniku.............................. 14 5 Rocopie logger 15 5.1 Instalacja.................................... 15 5.1.1 Klient.................................. 15 5.1.2 Serwer.................................. 15 5.2 Instrukcja obsługi................................ 16 5.2.1 Klient.................................. 16 5.2.2 Monitor (serwer, GUI)......................... 16 5.2.3 Widok bazy danych........................... 16 5.2.4 Widok realtime............................. 16 5.2.5 Uwagi.................................. 17 3

4 1. Wstęp 1.1. System rocopie System rocopie umożliwia sterowanie robotem mobilnym, który wykonuje przejazd według zadanej trajektorii. Sterowany robot może być rzeczywistym urządzeniem, ale może też być symulowany. Algorytm przejazdu jest parametryzowany, są również dwa tryby zadawania trajektorii oraz opcja jej wygładzenia. Całość jest komponentem napisanym w języku Erlang. W tym języku został udostępniony interfejs programistyczny do zlecania przejazdu zadaną trajektorią. Do dyspozycji użytkownika są również skrypty demonstracyjne uruchamiane z linii poleceń pokazujące przykładowe działanie systemu. W zależności od sterownika system może zostać uruchomiony na maszynie użytkownika lub bezpośrednio na robocie. 1.2. Rzeczywisty robot Robot mobilny jest oparty o zestaw Lynxmotion 4WD1 Rover Kit [6]. Posiada 4 koła napędzane oddzielnie. Został wyposażony w moduł lokalizacyjny StarGazer RS 1.0 firmy HagiSonic [11]. Moduł StarGazer wykorzystuje promieniowanie podczerwone do wyznaczania pozycji robota na podstawie znaczników umieszczonych na suficie laboratorium, w którym testowano robota. Jako urządzenie obsługujące pozostałe komponenty, będące najważniejszym elementem robota mobilnego została użyta platforma PandaBoard [8] wyposażona w procesor ARM Cortex-A9. Rysunek 1: Lynxmotion 4WD1 Rover Kit Rysunek 2: Moduł lokalizacyjny StarGazer RS 1.0 Rysunek 3: Kompletny robot. Na zdjęciu widoczny jest dodatkowo telefon służący jako kamera przednia, a także miernik napięcia baterii

5 2. Przygotowanie środowiska 2.1. Symulacja Środowisko symulacyjne do działania wymaga platformy Microsoft.NET w wersji 3.0 lub wyższej. Wymaganym systemem operacyjnym jest system Windows w wersji 7 lub wyższej. Do uruchamiania aplikacji erlangowych niezbędna jest windowsowa implementacja Erlang/OTP (Open Telecom Platform) w wersji co najmniej R15B [4]. Do kompilacji używany jest program make, więc potrzebny będzie również MinGW razem z MSYS [7] lub Cygwin [3]. Samo środowisko ROBOSS można znaleźć na stronie projektu w serwisie sourceforge.net [9]. 2.1.1. Definicje XML Aby było czym sterować należy zdefiniować środowisko oraz symulowanego robota. Dokładna specyfikacja tych kroków znajduje się w dokumentacji systemu ROBOSS. W projekcie rocopie, symulowany świat składa się z kwadratowej płaszczyzny o boku równym 400 metrów, otoczonej wysokimi ścianami. Jeśi chodzi zaś o robota, składa się z: korpusu Body o wymiarach 0.2032m 0.24765m 0.1m i masie równej 1.2854kg czterech kół (cylindrów) o promieniu równym szerokości i wynoszącym 0.0603 m czterech połączeń typu zawiasowego (hinge) pomiędzy korpusem i kołami

6 RobotCar.xml... <Robot type="robotcar"> <Parts> <Part name="body" position_z="-0.1"> <Mass type="box" size_x="0.2032" size_y="0.24765" size_z="0.1" mass="1.2584"/> <Geoms> <Geom type="box" position_z="0.1" size_x="0.2032" size_y="0.24765" size_z="0.1016" friction="0.02" bouncyness="0"/> </Geoms> </Part> <Part name="leftfrontwheel" position_x="-0.13176" position_y="0.1238" position_z="0"> <Mass type="cylinder" size_x="0.0603" size_y="0.0603" mass="0.1814"/> <Geoms> <Geom type="cylinder" color="00662211" rotation_y="1.5707963267948966192313216916398" size_x="0.0603" size_y="0.0603" friction="3.9" bouncyness="0.2"/> </Geoms> </Part>... </Parts> <Sensors> </Sensors> <Joints> <Joint name="leftfront" part1="body" part2="leftfrontwheel" type="hinge" direction_x="1" direction_y="0" direction_z="0" anchor_x="-0.13176" anchor_y="0.1238" position_z="0"> <Motor const_force="10"/> </Joint>... <Joint name="rightrear" part1="body" part2="rightrearwheel" type="hinge" direction_x="1" direction_y="0" direction_z="0" anchor_x="0.13176" anchor_y="-0.1238" position_z="0"> <Motor const_force="10"/> </Joint> </Joints> </Robot> Pliki zawierające wyżej wymienione definicje znajdują się w katalogu models. W efekcie otrzymano robota przedstawionego na rysunku 4.

7 Rysunek 4: Robot został zdefiniowany w pliku models/robotcar.xml 2.2. Robot Systemem operacyjnym działającym na platformie PandaBoard jest dystrybucja Ubuntu systemu GNU/Linux w wersji 12.04. Platforma znajduje się wewnątrz obudowy robota. Niezbędna jest erlangowa maszyna wirtualna działająca na maszynach z procesorami ARM [4]. Potrzebne jest również oprogramowanie umożliwiające dostęp do lokalizatora oraz silników robota. W tym celu należy przygotować i skompilować aplikację amber. Jest to projekt inżynierski Michała Konarskiego i Konrada Gądka, którego celem jest m.in. oprogramowanie robota i udostępnienie interfejsu do jego komponentów w technologii Erlang. Kod źródłowy aplikacji oraz instrukcję kompilacji i uruchomienia można znaleźć w repozytorium projektu w serwisie github [1]. Główny katalog projektu amber powinien znajdować się na tym samym poziomie, co główny katalog rocopie.

8 3. Instalacja i uruchamianie 3.1. Konfiguracja Przed uruchomieniem aplikacji należy ustawić parametry aplikacji znajdujące się w pliku rocopie.config. Parametry, które należy ustawić to: driver nazwa wybranego sterownika, dopuszczalne wartości to: roboss_driver dla symulacji amber_driver dla rzeczywistego robota robot wymiary robota: track odległość pomiędzy środkami lewego i prawego koła (w metrach) radius promień koła robota (w metrach) (tylko w przypadku symulacji) exec_path ścieżka do pliku.exe aplikacji łączącej się ze środowiskiem symulacji ROBOSS (tylko w przypadku symulacji) interval liczba milisekund, którą odczekuje pomiędzy wysłaniem kolejnych odczytów aplikacja dostarczająca informacje o lokalizacji (tylko w przypadku rzeczywistego robota) Zadawanie trajektorii, parametry algorytmu oraz ich konfiguracja zostały opisane w sekcji 4. 3.2. Uruchamianie 3.2.1. ROBOSS Aby skompilować projekt należy w wybranym shellu (MinGW/Cygwin) przejść do katalogu głównego rocopie i wywołać polecenie: make Jeśli nie dysponujemy źródłami projektu amber i chcemy pracować jedynie z symulacją, należy zbudować projekt poleceniem: make no_amber Uruchomienie należy rozpocząć od startu symulacji. Uzyskuje się to przez uruchomienie aplikacji Kontroler wchodzącej w skład środowiska ROBOSS. Wymaga to wyboru adresu używanego przez symulację, wybrania definicji świata oraz definicji

9 symulowanego robota. Przykładowe używane modele wejściowe znajdują się w katalogu models. Aby uniknąć potencjalnych problemów z nadmiernym obciążeniem procesora i jego wpływów na symulację, należy zaznaczyć opcję simulation timestep -> set timestep directly. Następnym krokiem jest przygotowanie trajektorii oraz parametrów algorytmu (patrz: sekcja 4). Pozostaje tylko uruchomienie skryptu:./run_roboss a robot podąży zadaną trajektorią. Po zakończeniu przejazdu należy zresetować symulację przez kliknięcie przycisku Reset. 3.2.2. Rzeczywisty robot W celu kompilacji projektu należy udać się do głównego katalogu projektu i wywołać polecenie: make Jeśli omyłkowo wywołaliśmy polecenie make no_amber, należy przebudować projekt: make clean make Następnie należy uruchomić aplikację amber. Jej głównym elementem jest mediator, będący serwerem. Można wykonywać wielokrotne zlecenia przejazdu danymi trajektoriami bez jej restartowania. Uruchomienie następuje przez wywołanie polecenia z katalogu głównego projektu amber:./start_amber Następnym krokiem jest przygotowanie trajektorii oraz parametrów algorytmu (patrz: sekcja 4). Pozostaje tylko uruchomienie skryptu:./run_amber a robot podąży zadaną trajektorią.

10 3.2.3. Aplikacje demonstracyjne W katalogu demo znajdują się przygotowane skrypty demonstrujące wybrane cechy systemu. Każdy z nich umieszczony jest w osobnym folderze razem z plikami konfigurującymi jego trajektorię, wizualizację i parametry algorytmu. Pliki te można edytować, żeby poznać wpływ tych czynników na trasę przejazdu. Aby uruchomić każdy ze skryptów, należy wywołać:./nazwa_skryptu To, czy algorytm ma sterować symulacją, czy rzeczywistym robotem zdefiniowane jest w pliku rocopie.config. Skrypty są następujące: demo_lemniscate Demonstracja trasy w kształcie lemniskaty. Trajektoria wejściowa jest dodatkowo wygładzona krzywymi Béziera, a parametry zostały dobrane optymalnie dla trasy przejazdu. demo_sharp Ta trasa charakteryzuje się nie wygładzonymi w żaden sposób ostrymi kątami, które w połączeniu ze zadaniem stosunkowo dużej prędkości liniowej umożliwią zaobserwowanie, jak robot zwalnia na zakrętach. demo_sharp_bend W tym skrypcie trasa pozostaje taka sama, jak w demo_sharp, ale zwiększony został parametr lookahead, przez co pojazd przycina zakręty, skracając trasę i zwiększając promień skrętu. demo_sharp_smoothed Demonstracja operuje na tych samym parametrach, co poprzednie, z wyjątkiem tego, że wygładzona jest za pomocą krzywych Béziera. Można zaobserwować różnicę pomiędzy efektem wygładzenia w tym przypadku oraz w poprzednim. demo_variable_speed Skrypt pokazujący działanie trybu pointswithtime, gdzie razem ze współrzędnymi punktu zadane są czasy docelowe, przez co prędkość zmienia się pomiędzy odcinkami.

11 4. Zarządzanie uruchomieniami, parametryzacja Podstawowym interfejsem udpostępniającym pełną funkcjonalność komponentu jest moduł rocopie udostępniający funkcję uruchamiającą algorytm start/3 oraz zatrzymującą go stop/0. Mając już skonfigurowany sterownik komunikujący się z robotem i jego fizyczne parametry w pliku rocopie.config (zobacz 3.1) można skonfigurować parametry przejazdu, różne dla każdego uruchomienia. Są one definiowane za pomocą argumentów przekazanych do funkcji: rocopie.erl start(trajectoryinput, TrajectoryOptions, AlgParamsInput) gdzie: TrajectoryInput służy do definicji trajektorii i sposobu jej przekazania. Dopuszczalne wartości: {filename, Filename} wczytanie trajektorii z pliku tekstowego o podanej nazwie. Można go podać jako ścieżkę bezwzględną bądź względną wobec katalogu głównego aplikacji. {list, Trajectory} przekazanie trasy explicite jako listę krotek. TrajectoryOptions Lista opcji. Możliwe opcje to: - pointswithtime punkty trasy zadane są razem z czasami, w których robot ma się w nich znaleźć. - smoothbezier wygładzenie trajektorii za pomocą krzywych Béziera. AlgParamsInput Parametry algorytmu. {filename, Filename} wczytanie parametrów z pliku o podanej nazwie. {record, AlgParams} przekazanie parametrów w formie rekordu algparams. Szczegółowy opis i format danych znajduje się poniżej. 4.1. Zadawanie trajektorii Algorytm może działać w dwóch podstawowych trybach: Tor ruchu zadana jest jako lista punków na płaszczyźnie XY oraz maksymalna prędkość, jaką robot będzie starał się utrzymać na całej trasie. Jest to domyślny tryb.

12 Trajektoria przejazd określa lista punktów na płaszczyźnie oraz czas, w jakim powinien się znaleźć w każdym z tych punktów. Aby z niego korzystać, należy przekazać opcję pointswithtime. Należy zdecydować się na odpowiedni tryb w zależności od tego, czy oczekuje się stałej prędkości przez większość przejazdu, czy by zmieniała się w zależności od odcinka, w którym znajduje się robot. Współrzędne są typu float, w metrach. Czas jest typu int i podaje się go jako sekundy względem momentu uruchomienia algorytmu. 4.1.1. Format pliku tekstowego Każda linijka oznacza osobny punkt trasy. Współrzędne (i opcjonalnie czas) powinny być oddzielone spacją bądź tabulacją. #x y czas 0.0 0.0 0 0.0 20.0 10 20.0 20.0 30 # ta linijka to komentarz 20.0 0.0 35 0.0 0.0 100 Przykład 1: Trasa w kształcie kwadratu Linijki puste lub zaczynające się znakiem # są ignorowane. Na przykładzie 1 zadana jest trajektoria w kształcie kwadratu. 4.1.2. Wygładzanie trasy Jeżeli przekazana została opcja smoothbezier, zadana trajektoria zostanie wygładzona za pomocą krzywych Béziera, których punktami kontrolnymi są punkty wejściowe. Dodane zostaną nowe punkty tworzące łamaną ze znacznie większymi kątami skrętu. Liczbę segmentów, na które ma być podzielony każdy odcinek wejściowej trasy można określić za pomocą pola algparams.bezier_segments_n. Przykład działania:

13 Rysunek 5: Porównanie trajektoria wejściowa i po wygładzeniu 4.2. Parametry algorytmu Parametry przechowywane są w rekordzie algparams. Aby przekazać je do aplikacji, można przekazać skonstruowaną już strukturę, bądź podać nazwę pliku, który ma format erlangowego wyrażenia. Zawiera on następujące pola: lookahead [m] określa, na jak długi dystans algorytm będzie wybiegać do przodu planując kolejny ruch. W praktyce duże wartości (rzędu odległości pomiędzy kolejnymi punktami trajektorii) oznaczają trasę krótszą i mocno wygładzoną. Im mniejsze wartości, tym bliżej zadanych punktów będzie przebiegała przebyta trasa i bliższa będzie wejściowej łamanej. i_alpha oraz i_track wagi odległości kątowej oraz liniowej przy wyliczaniu odchylenia od trasy. Wartości domyślne są optymalne, jednak dla nietypowych trajektorii może eksperymentować z ich konfiguracją. Zakres wartości nie jest ograniczony, jednak ostatecznie w algorytmie ich wartości są normalizowane. centr_acc [ m s 2 ] maksymalne przyśpieszenie odśrodkowe jakie powinno wystąpić podczas jazdy. Zapobiega wywracaniu się robota na zakrętach. max_lin_vel [ ] m s maksymalna prędkość liniowa. W trybie stałej prędkości oznacza ona pożądaną prędkość samochodu na całej trasie. W trybie punktów z czasami interpretowana będzie jako fizyczne ograniczenie możliwości robota. bezier_segments_n liczba odcinków, na które dzielony jest pojedyńczy odcinek trajektorii wejściowej przy wygładzaniu (patrz 4.1.2). Wartość powinna być 4.

14 scale stały współczynnik przy prędkościach. Może być użyty do korygowania wartości zadawanych przez sterownik. Dla niezdefiniowanych parametrów przyjęta zostanie wartość domyślna (patrz: definicja rekordu w pliku include/records.hrl). {alg_params, [ ]}. {lookahead, 2}, {i_alpha, 0.8815}, {i_track, 0.1185}, {centr_accel, 4}, {max_lin_vel, 1}, {bezier_segments_n, 8} Przykład 2: Plik z parametrami algorytmu 4.3. Wizualizacja wyniku W przypadku symulacji do wizualizacji wyniku można użyć różnych narzędzi wchodzących w skład pakietu symulatora ROBOSS pozwalających na bieżąco śledzić trasę robota w dwóch (Monitor2D) lub trzech (Monitor) wymiarach. Z kolei aplikacja Symulator umożliwia podgląd różnych parametrów symulacji. Do dyspozycji użytkownika jest też funkcja demo:plot/0. Korzysta ona z zapisu trasy tworzonego podczas przejazdu (track.log) oraz skryptów wsadowych programu gnuplot [5] do wizualizacji trasy przejazdu oraz jej parametrów. Aby zmodyfikować wyświetlane wykresy należy wyedytować plik plot_traj.gp.

15 5. Rocopie logger Projekt rocopie_logger jest projektem towarzyszącym i służy do logowania informacji pozyskiwanych ze zdalnego urządzenia. Projekt ten nie jest integralną częścią systemu rocopie i nie jest wymagana jego obecność w celu poprawnego działania systemu. Treść tego rozdziału należy traktować jako możliwość rozszerzenia systemu o funkcjonalności dostarczone przez wyżej wspomniany projekt. 5.1. Instalacja 5.1.1. Klient Klient jest erlangowym modułem i nie wymaga instalacji przed wywołaniem. 5.1.2. Serwer Do uruchomienia aplikacji serwerowej potrzebne będą następujące środowiska i narzędzia: System operacyjny Windows w wersji 7 lub wyższej Platforma.NET w wersji 4.0 lub wyższej MinGW + MSYS (z narzędziem make) [7] Erlang/OTP w wersji co najmniej R15B [4] CouchDB w wersji 1.20 lub wyższej [2] 1. Pobranie projektu Rocopie logger z repozytorium serwisu bitbucket [10] 2. Przejście do katalogu głównego projektu 3. Wywołanie polecenia: make install Spowoduje to utworzenie skryptu startowego start_rocopie_server.bat Aby wygenerować dokumentację, należy wywołać polecenie: make doc

16 5.2. Instrukcja obsługi 5.2.1. Klient W celu użycia rocopie_loggera należy zmodyfikować pożądany moduł, tak aby spełnić podane niżej warunki. Moduł loggera roco_logger należy: 1. Zainicjalizować funkcją start/4 podając: nazwę mającą identyfikować go w systemie, port na którym będzie nasłuchiwać oraz adres i port serwera. 2. Zgłaszać żądanie logowania funkcją log/3 podając Subject, Name oraz Value, ktore mają być wysłane do serwera. 3. Zakończyć funkcją stop/1. Moduł stat_monitor jest przykładowym modułem wykorzystującym system logowania do podawania wartości bieżącego obciążenia systemu. Subject i Name powinny być zdefiniowane w pliku konfiguracyjnym aplikacji.net. Należy również pamiętać o dostarczeniu ścieżek do katalogu ebin oraz deps/*/ebin projektu rocopie_logger w celu skorzystania z funkcji jego modułów. 5.2.2. Monitor (serwer, GUI) Aby wizualizować na żywo lub przeglądać dane zgromadzone w bazie należy uruchomić serwer z linii poleceń start_rocopie_server.bat. To polecenie zainicjalizuje połączenie z bazą danych i uruchomi aplikację graficzną. Zakładki przełączają pomiędzy widokiem danych zgromadzonych w bazie danych na danym komputerze a danych zbieranych przez roco_server w czasie rzeczywistym. 5.2.3. Widok bazy danych dodanie logowanej wartości do wykresu Po rozwinięciu tematów wysyłanych przez dane urządzenie należy wybrać wartość (name) i z menu kontekstowego wybrać opcję Add to plot. dodanie nowej sesji Należy kliknąć przycisk Add session, który wyświetli okno z wszystkimi sesjami zgromadzonymi w bazie danych. Dla danego robota może być wiele sesji, identyfikowane są przez datę rozpoczęcia. Po wybraniu sesji zostanie ona dodana do widoku drzewa i stamtąd można dodać ją do wykresu. 5.2.4. Widok realtime Przed uruchomieniem należy wyedytować pliki konfiguracyjne określające subskrypcje znajdujace sie w folderze rocopie_logger/config: available.subs lista wszystkich par {subject, name} możliwych do wysłania przez obecne urządzenia, które chce się monitorować.

17 default.subs lista subskrypcji (czyli par {subject, name}), które mają domyślnie być odbierane. Można to zmienić potem w czasie działania programu. Dodawanie i usuwanie wartości z wykresu odbywa się analogicznie jak w widoku bazy danych. Aby zmienić subskrypcję należy odznaczyć/zaznaczyć odpowiednią wartość na drzewie. 5.2.5. Uwagi Po uruchomieniu serwera (oraz automatycznie aplikacji.net) można otworzyć erlangowego shella, upewnić się, że rocopie_logger/ebin znajduje się na erlangowej ścieżce. Następnie uruchomić przykładowy moduł stat_monitor za pomocą funkcji stat_monitor:start/0. stat_monitor generuje i loguje komunikaty z niewielkim odstępem czasowym Ani moduł roco_logger, ani stat_monitor nie jest sprzężony z częścią serwerową. Można przenieść plik tego modułu na inną maszynę i tam z niego korzystać (podając adres IP i port na którym działa roco_server)

Spis rysunków 1 Lynxmotion 4WD1 Rover Kit......................... 4 http://www.lynxmotion.com/images/product/large/a4wd01.jpg 2 Moduł lokalizacyjny StarGazer RS 1.0.................... 4 http://eng.hagisonic.kr/data/attach/5i7s9lpa6.png 3 Kompletny robot................................ 4 4 Symulowany robot............................... 7 5 Porównanie trajektoria wejściowa i po wygładzeniu............ 13 18

19 Materiały źródłowe [1] Amber. http://github.com/kgadek/amber. [2] Instalator couch db dla windows. http://www.apache.org/dyn/closer.cgi?path= /couchdb/packages/win32/1.2.0/setup-couchdb-1.2.0_otp_r15b.exe. [3] Cygwin. http://cygwin.com/install.html. [4] Erlang/otp downloads. https://www.erlang-solutions.com/downloads/ download-erlang-otp. [5] Gnuplot program do tworzenia wykresów. http://www.gnuplot.info/. [6] Baza robota. http://www.lynxmotion.com/p-603-aluminum-4wd1-rover-kit. aspx. [7] Mingw + msys. http://www.mingw.org/wiki/msys. [8] Pandaboard. http://pandaboard.org/. [9] Roboss. http://sourceforge.net/projects/roboss/. [10] Strona projektu rocopie logger w serwisie bitbucket. https://bitbucket.org/ rocopie/rocopie-logger/downloads. [11] Moduł lokalizacyjny. http://eng.hagisonic.kr/cnt/prod/prod010102?uid= 11&cateID=2&fieldName=&orderBy=.