[ Pobierz całość w formacie PDF ]
Symulator robota mobilnego
Dokumentacja narzędzi składających się na symulator robota mobilnego (projekt Symulek). Dotyczy wersji 1.1.2. Opracowane dla potrzeb ROPRM przez dra inż. M. Horczyczaka w grudniu 2007.
Wprowadzenie
Symulator robota mobilnego (projekt Symulek) jest programowym symulatorem robota mobilnego wraz z definiowalnym środowiskiem oraz systemem programowania i komunikacji (język programowania, interpreter, narzędzia komunikacji pomiędzy interpreterem a symulatorem). Symulator przeznaczony jest do nauki programowania robotów mobilnych (innych niż roboty manipulacyjne).
Symulator składa się z dwóch programów DOSowskich współpracujących ze sobą poprzez pliki na współdzielonym dysku sieciowym:
program RSTER - interpreter języka programowania robota
program RSYM - symulator robota i jego środowiska
Wykonanie programu sterowania robotem (pliku .PRG) przez program RSTER powoduje przekazywanie danych sterujących robotem do symulatora RSYM. Z punktu widzenia programu RSTER proces sterowania odbywa się tak, jakby sterowano rzeczywistym robotem: zachodzą zjawiska opóźnień związanych z reakcjami czujników oraz efektorów, zaś praca symulowanego robota odbywa się niezależnie od pracy samego interpretera - przerwanie procesu sterowania nie powoduje przerwania działania robota. Sterowanie robotem odbywa się w czasie rzeczywistym.
Opis języka wykorzystywanego do programowania robota przedstawiono w dalszej części tego dokumentu.
Program RSYM jest symulatorem robota mobilnego. Symulowane jest zachowanie robota: jego ruch w zależności od pracy silników napędzających koła oraz działanie czujników robota zależnie od interakcji z elementami środowiska, w którym się robot porusza.
Program RSYM jest sterowany przez interpreter: w trakcie wykonania programu sterującego robota, robot działa zgodnie z sygnałami sterującymi od interpretera. Po zatrzymaniu interpretera (przerwaniu wykonywania programu) lub po zakończeniu wykonywania programu, symulator przechodzi w stan wstrzymania. Ponownie w stan pracy (po restarcie) symulator przechodzi po uruchomieniu interpretera (rozpoczęciu wykonywania programu sterującego). Opis symulatora - robota i jego środowiska znajduje się w dalszej części tego dokumentu.
Uruchamiając zestaw programów RSTER-RSYM należy najpierw uruchomić symulator RSYM, a następnie uruchamiać programy sterujące pod RSTER. Oba programy powinny być uruchamiane z tego samego katalogu. Przywracanie stanu początkowego środowiska robota i stanu początkowego samego robota odbywa sie automatycznie przy uruchamianiu programu sterującego pod RSTER. Opcjonalnym parametrem wywołania programu RSYM może być nazwa pliku konfiguracyjnego (pliku .dat).
Pracę każdego z programów można przerwać w dowolnej chwili naciskając klawisz Esc.
1. Budowa robotaRysunek robot.jpg przedstawia schemat robota (w rzucie z góry). Robot wyposażony jest w następujące elementy:
Efektory:
· dwa koła napędowe: koło lewe i koło prawe
· noże tnące do koszenia trawy
Czujniki:
· czujnik dotykowy (CD)
· czujnik podłoża (CP)
· czujnik ultradźwiękowy (CU)
· czujnik orientacji (CO)
· czujnik lokalizacji markerów (CM)
Koła napędowe umożliwiają przemieszczanie się robota. Każde z kół jest sterowane niezależnie i może obracać się w przód lub w tył. Odpowiednie złożenie ruchu obrotowego kół pozwala robotowi na jazdę na wprost, jazdę po łuku lub nawet zwrot w miejscu. Każde z kół ma 3 prędkości obrotowe w przód i 3 w tył oraz stan zatrzymania. Prędkość obrotowa każdego z kół może zatem przyjmować 7 wartości:
· do przodu prędkości 1, 2 lub 3
· do tyłu prędkości -1,-2 lub -3
· stan zatrzymania - prędkość 0
Noże koszące do trawy mogą być włączone lub wyłączone. W stanie włączonym robot 'kosi trawę' - zamienia obszar zielony na czarny w czasie swego przemieszczenia. Noże działają tak, jak rzeczywiste noże w kosiarce; aby uzyskać efekt koszenia potrzebne jest włączenie noży i ruch robota po obszarze zielonym.
Czujnik dotykowy ma formę wrażliwego na dotyk obszaru wokół całego robota (patrz robot.jpg). Jakiekolwiek zetknięcie się robota z przeszkodą powoduje aktywowanie czujnika (sygnał stanu równy 1). Nie jest przy tym istotne w jakim kierunku i z jakiej strony robot zetknie się z przeszkodą. Czujnik dotykowy reaguje wyłącznie na przeszkody (kołowe lub trójkątne); nie reaguje na markery.
Czujnik podłoża pozwala odczytywać po jakim podłożu porusza się robot - czujnik podaje wartość od 0 do 15 - wartość numeru koloru podłoża. (kolor czarny to 0, biały -15, a np. zielony to 2, a czerwony to 4).
Czujnik ultradźwiękowy pozwala na wykrywanie przeszkód znajdujących się w pewnej odległości od robota w kierunku na wprost od niego. Przeszkody mogą być wykrywane w
przedziale odległości od 25 do 300 jednostek (o jednostkach - patrz opis środowiska symulacji). Szerokość wiązki ultradźwiękowej wynosi około 20 stopni. Czujnik daje odpowiedź na pytanie, czy w zadanej odległości znajduje się przeszkoda. Ową odległość zadaje się jako wartość graniczną dla uzyskania sygnału pozytywnego od czujnika. Na przykład, jeśli wartość graniczną zada sie jako 200 jednostek, to sygnał od czujnika będzie wynosił 1 (wykryto przeszkodę), jeśli w odległości od 25 do 200 i wiązce o półkącie rozwarcia 10 stopni znajdzie się jakaś przeszkoda lub jej fragment; w przeciwnym razie czujnik poda sygnał negatywny (0=brak przeszkody).
Czujnik orientacji pozwala na określenie kąta położenia robota w płaszczyźnie jego poruszania się. Czujnik ten podaje namiary orientacji podobnie jak kompas, ale wartości kątowe mierzone są w stosunku do położenia osi X układu współrzędnych w przestrzeni symulacji.
Czujnik lokalizacji markerów działa podobnie jak czujnik orientacji. Daje on od 0 do 3 odczytów (w zależności od ilości markerów znajdujących się w przestrzeni symulacji) odpowiadających namiarom kątowym od robota do poszczególnych markerów oraz odległościom do nich. Gdy nie ma zdefiniowanych markerów, wartości tych odczytów czujnika są losowe.
2. Środowisko symulacjiŚrodowisko, w którym odbywa się symulacja pracy robota mobilnego to kwadratowy fragment płaszczyzny o wymiarach 1000 na 1000 umownych jednostek długości. Na tym fragmencie płaszczyzny (kwadracie) określono prostokątny układ współrzędnych o początku w środku kwadratu. Oś X przebiega poziomo w prawo, oś Y pionowo w górę, zaś kąty mierzone są przeciwnie do ruchu wskazówek zegara; kąt 0 odpowiada dodatniemu kierunkowi osi X.
Schemat przestrzeni symulacji przedstawia rysunek srodow.jpg.
W przestrzeni symulacji zdefiniowane jest podłoże. Może to być podłoże o kolorze czarnym (umownie: ziemia) lub o kolorze zielonym (umownie: trawa). Nawierzchnia o kolorze zielonym może być zamieniana na nawierzchnię o kolorze czarnym ('trawa może być koszona') na skutek działania noży koszących robota. Rodzaj podłoża jest rozpoznawany przez czujnik podłoża.
Konfiguracja podłoża narzucana jest jako jeden z kilku domyślnych wariantów początkowych:
· wariant 0: cały obszar przestrzeni symulacji czarny
· wariant 1: obszar symulacji czarny z kwadratowym obszarem 900x900 (trawnikiem) zielonym w centrum
· wariant 2: obszar symulacji czarny ze ścieżką w formie zamknietej pętli w kolorze zielonym
· wariant 3: obszar odpowiadający ścieżkom transportowym w wyimaginowanej fabryce
Wyboru wariantu dokonuje się w pliku konfiguracyjnym symulatora (patrz opis w dalszej części tego dokumentu).
W przestrzeni symulacji mogą znajdować się następujące obiekty (oprócz robota):
· przeszkody kołowe (T)
· przeszkody trójkątne (K)
· markery (M)
Przeszkody (kołowe i trójkątne) są obszarami rysowanymi na niebiesko odpowiadającymi fizycznym przeszkodom blokującym ruch robota. Należy wyobrażać sobie je jako ściany lub słupy, przez które robot nie może przejechać.
Markery mają postać czerwonych niewielkich kółek. Należy wyobrażać je sobie jako płaskie obiekty leżące na ziemi, nad którymi robot może swobodnie przejeżdżać.
W przestrzeni symulacji robot może poruszać się (jeździć) w dowolnym kierunku X i Y, do przodu i do tyłu, a także obracać się wokół osi pionowej w płaszczyźnie XY - zależnie od prędkości kół napędowych. Robot może przejeżdżać nad markerami, nie może przejeżdżać przez przeszkody. Wyjechanie robota poza obszar kwadratu 1000x1000 stanowiącego przestrzeń symulacji traktowane jest jako błąd sterowania (utrata kontroli nad robotem) i powoduje brak reakcji robota na sygnały sterujące aż momentu ponownego uruchomienia programu sterującego .PRG w programie RSTER.
2.1. Plik konfiguracji środowiskaŚrodowisko symulacji definiuje się w pliku o nazwie RSYM.DAT. Plik ten jest plikiem ASCII i zawiera szereg linii definiujących przeszkody, markery, położenie robota oraz wersję podłoża. Plik szukany jest w katalogu bieżącym programu RSYM. Brak pliku lub dostępu do niego powoduje przyjęcie wartości domyślnych dla nastaw środowiska symulacji.
Każda linia w pliku składa się ze znaku definicji (litera w pierwszej kolumnie) oraz parametrów. Puste linie są ignorowane. Składnia linii jest następująca:
P numer
F liczba
M x y
T x1 y1 x2 y2 x3 y3
K x y r
R x y kat
# komentarz
gdzie:
numer - numer podłoża: 0, 1 lub 2
x, y, x1, y1, x2, x3, y3, r, kat - liczby rzeczywiste, współrzędne liniowe w zakresie od -500 do +500, kąty w stopniach.
Znaczenie linii jest następujące:
P numer - numer wersji podłoża (0, 1 lub 2)
M x y - definicja markera na pozycji x,y
T x1 y1 x2 y2 x3 y3 - definicja przeszkody trójkątnej o narożnika trójkąta (x1,y1) (x2,y2), (x3,y3)
K x y r - definicja przeszkody kołowej o środku w (x,y) i promieniu r
R x y kat - definicja położenia początkowego robota: punkt (x,y) i orientacja 'kat' (w stopniach)
F liczba - współczynnik skalowania prędkości (liczba rzeczywista od 0.1 (szybciej) do 10 (wolniej) ).
Przykład pliku konfiguracji środowiska przedstawiono poniżej:
# opis srodowiska nr 3
P 2
M 0 0
M 400 400
K 0 200 50
T -100 100 100 100 0 150
R 0 0 90
F 1.7
# koniec
Maksymalna ilość markerów wynosi 3, przeszkód kołowych - 4, przeszkód trójkątnych - 6. Nadmiarowo podane w pliku konfiguracyjnym markery i przeszkody są ignorowane.
3. Porty: dostęp do efektorów i czujnikówObsługa efektorów (napędu robota, noży koszących trawę) i czujników odbywa się z poziomu języka sterowania robotem wykonywanego przez interpreter RSTER poprzez zapis lub odczyt odpowiednich wartości na porty wejścia-wyjścia. Dostępne są:
· 3 porty wyjściowe WY1-WY3
§ port 1: ruch silników napędzających koła
§ port 2: zasięg czujnika ultradźwiękowego
§ port 3: obsługa noży do trawy
· 7 portów wejściowych WE1-WE7
§ port 1: stan czujnika stykowego
§ port 2: stan czujnika podłoża
§ port 3: stan czujnika ultradźwiękowego
§ port 4: stan czujnika orientacji
§ porty 5, 6 i 7: namiary na markery (jeśli są one zdefiniowane w środowisku symulacji)
§ porty 8, 9 i 10: odległości od markerów (jeśli markery są zdefiniowane)
3.1. Silniki napędzające kołaPoprzez port WY1 (port wyjściowy nr 1) realizuje się sterowanie prędkościami koła lewego i prawego robota. Dla każdego koła można zadać 3 prędkości do p...
[ Pobierz całość w formacie PDF ]