Symulator robota mobilnego RobSym

Podobne dokumenty
2 Skªadnia polece«w pliku

1. Wprowadzenie do C/C++

1. Wprowadzenie do C/C++

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

Lekcja 5 Programowanie - Nowicjusz

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Programowanie i struktury danych

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Lekcja 12 - POMOCNICY

Lekcja 9 Liczby losowe, zmienne, staªe

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

Elementy geometrii w przestrzeni R 3

Lab. 02: Algorytm Schrage

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

Lekcja 6 Programowanie - Zaawansowane

Listy i operacje pytania

Logika dla matematyków i informatyków Wykªad 1

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

2 Liczby rzeczywiste - cz. 2

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

Lekcja 3 Banki i nowe przedmioty

Ukªady równa«liniowych

x y x y x y x + y x y

Programowanie robota mobilnego Khepera

Funkcje, wielomiany. Informacje pomocnicze

Metodydowodzenia twierdzeń

Typy danych i formatowanie

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Dyskretyzacja i kwantyzacja obrazów

Interpreter opisu dziaªa«quadrokoptera wtyczki. 1 Ogólny opis zadania. 2 Skªadnia nowych polece« 2.1 Polecenie Grasper

Programowanie wspóªbie»ne

Wojewódzki Konkurs Matematyczny

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

Programowanie wspóªbie»ne

Subversion - jak dziaªa

Wojewódzki Konkurs Matematyczny

Wykªad 4. Funkcje wielu zmiennych.

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

Programowanie i struktury danych 1 / 44

Podstawy modelowania w j zyku UML

Rozwi zanie równania ró»niczkowego metod operatorow (zastosowanie transformaty Laplace'a).

19. Obiektowo± 1 Kacze typowanie. 2 Klasy

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Proces tworzenia programu:

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Przewodnik u»ytkownika

Algorytmy zwiazane z gramatykami bezkontekstowymi

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wektory w przestrzeni

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Kompilowanie programów

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Szeregowanie zada« Przedmiot fakultatywny 15h wykªadu + 15h wicze« dr Hanna Furma«czyk. 7 pa¹dziernika 2013

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

przewidywania zapotrzebowania na moc elektryczn

Zarządzanie Zasobami by CTI. Instrukcja

Rachunek caªkowy funkcji wielu zmiennych

Lekcja 3 - BANKI I NOWE PRZEDMIOTY

1 Metody iteracyjne rozwi zywania równania f(x)=0

Optyka geometryczna. Soczewki. Marcin S. Ma kowicz. rok szk. 2009/2010. Zespóª Szkóª Ponadgimnazjalnych Nr 2 w Brzesku

Przykªadowe tematy z JiMP

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

1 Bª dy i arytmetyka zmiennopozycyjna

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Model obiektu w JavaScript

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

1 Podstawy c++ w pigułce.

J zyk C dla sterowników programowalnych GeFanuc

PERSON Kraków

Macierze i Wyznaczniki

Materiaªy do Repetytorium z matematyki

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

r = x x2 2 + x2 3.

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

VI OIG, Etap II konkurs dru»ynowy. 10 III 2012 Dost pna pami : 32 MB.

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

VinCent Office. Moduł Drukarki Fiskalnej

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Wzorce projektowe strukturalne cz. 1

Podstawy modelowania w j zyku UML

Podstawy matematyki dla informatyków

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Elementy geometrii analitycznej w przestrzeni

Rozwi zania klasycznych problemów w Rendezvous

Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13

Programowanie wspóªbie»ne

Ekstremalnie fajne równania

1 Ró»niczka drugiego rz du i ekstrema

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Transkrypt:

Symulator robota mobilnego RobSym dr in». Maciej Horczyczak 21 czerwca 2010, 2 lutego 2011 Streszczenie Dokumentacja narz dzi skªadaj cych si na symulator robota mobilnego. Dotyczy wersji 1.1.8. Opis gramatyki j zyka sterowania robotem oraz uwagi n/t konguracji interpretera. Dotyczy wersji symulatora 1.1.7. Opracowane dla potrzeb ROPRM (projekt Symulek) przez dra in». M. Horczyczaka w grudniu 2007. Ostatnie poprawki 2 lutego 2011. (c) mjkh 2001,2005,2006,2007,2010,2011 Spis tre±ci I Wprowadzenie 3 II Symulator: robot i jego ±rodowisko 4 1 Budowa robota 4 2 rodowisko symulacji 5 2.1 Plik konguracji ±rodowiska................................... 6 2.2 Porty: dost p do efektorów i czujników............................ 7 2.2.1 Silniki nap dzaj ce koªa................................. 7 2.2.2 Czujnik ultrad¹wi kowy................................. 8 2.2.3 No»e kosz ce....................................... 8 2.2.4 Czujnik stykowy..................................... 8 2.2.5 Czujnik podªo»a..................................... 8 2.2.6 Czujnik ultrad¹wi kowy................................. 8 2.2.7 Czujnik orientacji.................................... 8 2.2.8 Namiary na markery.................................. 8 III J zyk sterowania robota mobilnego 9 3 Informacje ogólne 9 4 Komentarze 9 5 Identykatory 9 6 Sªowa kluczowe 9 7 Literaªy 10 8 Etykiety 10 9 Zmienne 10 1

10 Operatory arytmetyczne 10 11 Wyra»enia arytmetyczne 11 12 Instrukcje 11 12.1 Instrukcja podstawienia..................................... 11 12.2 Instrukcje steruj ce....................................... 11 12.2.1 Instrukcje skoków.................................... 11 12.2.2 Instrukcje wywoªania i powrotu z procedury...................... 12 12.2.3 Instrukcje p tli: while, break i continue........................ 12 12.2.4 Instrukcja stop...................................... 13 12.3 Instrukcje wej±cia/wyj±cia.................................... 13 12.3.1 Instrukcje wej±cia/wyj±cia na konsoli.......................... 13 12.3.2 Instrukcja obslugi plikow - le.............................. 13 12.4 Instrukcje komunikacyjne.................................... 17 12.4.1 Instrukcje obsªugi portów................................ 17 12.5 Inne instrukcje.......................................... 17 12.5.1 Instrukcja freemem.................................... 17 12.5.2 Instrukcja spawn..................................... 17 12.5.3 Operator time...................................... 17 13 Dyrektywy 17 14 Plik konguracyjny 18 IV Biblioteka CRSTER.LIB 19 15 Informacje ogólne 19 16 Interfejs biblioteki 19 17 U»ycie biblioteki 19 V Dodatki 21 18 Podsumowanie skªadni 21 19 Przeliczanie pr dko±ci 22 2

Cz ± I Wprowadzenie Symulator robota mobilnego (projekt Symulek) jest programowym symulatorem robota mobilnego wraz z deniowalnym ±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) programowanych algorytmicznie. 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 sterujacymi 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 sterujacego). 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 konguracyjnego (pliku.dat). Prac ka»dego z programów mo»na przerwa w dowolnej chwili naciskaj c klawisz Esc. 3

Cz ± II Symulator: robot i jego ±rodowisko 1 Budowa robota Rysunek 1 przedstawia schemat robota (w rzucie z góry). Robot wyposa»ony jest w nast puj ce elementy: Efektory: dwa koªa napedowe: 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: Rysunek 1: Schemat rozmieszczenia elementów konstrukcjyjnych robota 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 rusynek 1). 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±ci 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 4

(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 zdeniowanych markerów, warto±ci tych odczytów czujnika s losowe. 2 rodowisko symulacji rodowisko, w którym odbywa sie 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 2. W przestrzeni symulacji zdeniowane 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. Obszar symulacji obwiedziony jest kwadratow ranka w kolorze szarym (kolor nr 7) rozpoznawaln przez czujnik podªo»a. Konguracja 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 - wersja I Rysunek 2: ±rodowisko symulacji wariant 4: obszar odpowiadaj cy ±cie»kom transportowym w wyimaginowanej fabryce - wersja II wariant 5: prostok tny szary placyk Wyboru wariantu dokonuje si w pliku konguracyjnym 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) 5

przeszkody trójk tne (K) markery (M) Przeszkody (koªowe i trójk tne) s obszarami rysowanymi na niebiesko odpowiadaj cymi zycznym przeszkodom blokuj cym ruch robota. Nale»y wyobra»a sobie je jako ±ciany lub sªupy, przez które robot nie moze 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. Przeszkoda koªowa nr 1 mo»e byc przesuwana w czasie symulacji r programi ersym za pomoc klawszy strzaªek. 2.1 Plik konguracji ±rodowiska rodowisko symulacji deniuje si w pliku o nazwie RSYM.DAT. Plik ten jest plikiem ASCII i zawiera szereg linii deniuj 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 denicji (litera w pierwszej kolumnie) oraz parametrów. Puste linie s ignorowane. Skªadnia linii jest nast puj ca: gdzie: P numer F liczba M x y T x1 y1 x2 y2 x3 y3 K x y r R x y kat # komentarz numer numer podªo»a: 0, 1 lub 2 x, y, x1, y1, x2, x3, y3, r, kat s to wspóªrz dne liniowe w zakresie od 500 do +500 (podawane jako liczby rzeczywiste) oraz k ty (podawane w stopniach). Znaczenie linii jest nast puj ce: P numer numer wersji podªo»a (0, 1 lub 2) M x y denicja markera na pozycji x,y T x1 y1 x2 y2 x3 y3 denicja przeszkody trójk tnej o naro»nikach (x1,y1) (x2,y2), (x3,y3) K x y r denicja przeszkody koªowej o ±rodku w (x,y) i promieniu r R x y kat poªo»enie pocz tkowe robota: punkt (x,y) i orientacja 'kat' (w stopniach) F liczba wspóªczynnik skalowania pr dko±ci (od 0.1 (szybciej) do 10 (wolniej) ). Przykªad pliku konguracji ±rodowiska przedstawiono poni»ej: # opis srodowiska nr 3 P 2 M 0 0 M 400 400 K 0 200 50 6

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 - 8, przeszkód trójk tnych - 16. Nadmiarowo podane w pliku konguracyjnym markery i przeszkody s ignorowane. 2.2 Porty: dost p do efektorów i czujników Obsª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 z/na portów wej±ciawyj±cia. Dost pne s : 3 porty wyj±ciowe WY1WY3 port 1: ruch silników nap dzaj cych koªa port 2: zasi g czujnika ultrad¹wiekowego port 3: obsªuga no»y do trawy 7 portów wej±ciowych WE1WE7 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 zdeniowane w ±rodowisku symulacji) porty 8, 9 i 10: odlegªo±ci od markerów (je±li markery s zdeniowane) 2.2.1 Silniki nap dzaj ce koªa Poprzez 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 przodu, 3 pr dko±ci do tyªu oraz pr dko± zerow (stop). Tak wi c dla ka»dego z kóª mo»na wskaza pr dko±ci: do przodu: 3, 2 lub 1 stop (pr dko± 0) do tyªu: 3, 2 lub 1 Pr dko±ci s proporcjonalne, tzn.»e robot z pr dko±ciami 3 jedzie trzykrotnie szybciej ni» z pr dko±ciami 1. Nastawy pr dko±ci zadaje si w postaci jednego bajtu zawieraj cego dane pr dko±ci dla obu kóª. Je±li przyj warto±ci pr dko±ci dla kóª od -3 do +3, to warto± bajtu wyznaczana jest wedªug wzoru: bajt = (KL + 3) 8 + (KP + 3) gdzie: KL pr dko± koªa lewego (od 3 do +3) KP pr dko± koªa prawego (od 3 do +3) Na przykªad: zatrzymanie robota: KL=0, KP=0, bajt=27 do przodu z maksymalna pr dko±ci : KL=3, KP=3, bajt=54 w lewo po ªuku: KL=1, KP=2, bajt=37 Poczatkowe warto±ci pr dko±ci kóª wynosz 0, tzn. porusza si. bajt steruj cy ma warto± 27 czyli robot nie 7

2.2.2 Czujnik ultrad¹wi kowy Port WY2 sªu»y do wskazania warto±ci odlegªo±ci granicznej D dla czujnika ultrad¹wi kowego. Zakres czuªo±ci czujnika to od 25 do 300 jednostek. Podana warto± odlegªo±ci D zmniejsza zakres, w którym czujnik daje odpowied¹ pozytywn do zakresu od 25 do D. Je±li D bedzie mniejsze od 25, to czujnik nie b dzie w ogóle reagowaª. Warto± D ustala si wysyªaj c na port WY2 liczb od 0 do 100. Jej trzykrotno± stanowi warto± D. Tak wi c, aby ustali warto± D na 150 jednostek nale»y wysªa na port warto± 50. Pocz tkowa warto± D (po restarcie symulatora) wynosi 0. 2.2.3 No»e kosz ce Port WY 3 sªu»y do wª czania i wyª czania pracy no»y kosz cych. Wysªanie na port warto±ci 1 wª cza no»e, za± warto±ci 0 wyª cza. Pocz tkowo no»e kosz ce s wyª czone. 2.2.4 Czujnik stykowy Port WE 1 podaje stan czujnika stykowego. Warto± 1 oznacza,»e czujnik (robot) czego± dotyka, warto± 0,»e nie. 2.2.5 Czujnik podªo»a Port WE2 podaje stan czujnika podªo»a. Jest to warto± od 0 do 15 odpowiadaj ca kolorowi podªo»a, po jakim porusza si robot. Odpowiednie warto±ci to, na przykªad: 0 czarny (ziemia) 2 zielony (trawa) 4 czerwony (marker) 7 szary (obramowanie) 15 biaªy 2.2.6 Czujnik ultrad¹wi kowy Port WE3 podaje odczyt czujnika ultrad¹wi kowego. Warto± 1 oznacza,»e czujnik wykrywa przeszkod, warto± 0,»e nie. Rozpoznawane s przeszkody koªowe i trójk tne. 2.2.7 Czujnik orientacji Port WE4 podaje warto± odczytu czujnika orientacji. Jest to liczba z przedziaªu od 0 do 119 odpowiadaj ca warto±ci k ta mi dzy osi robota (kierunkiem na wprost od robota), a osi X (jej dodatni cz ±ci ) wyra»onego jako liczba stopni k towych podzielona przez 3. Na przykªad: odczyt 30 odpowiada orientacji robota 90 stopni (w gór ) odczyt 90 odpowiada orientacji 270 stopni (w dóª) Kierunek orientacji robota odnierzany jest w ukªadzie wspóªrz dnych ±rodowiska w kierunku przeciwnym do ruchu wskazówek zegara. 2.2.8 Namiary na markery Porty WE5, WE6 i WE7 podaj warto±ci namiarów od robota do kolejnych markerów (pierwszego, drugiego i trzeciego), je±li takie zostaªy w ±rodowisku symulacji zdeniowane. Namiar 0 to namiar na wprost czoªa robota. Warto±ci podawane s w jednostkach 3 stopniowych (zatem s to liczby od 0 do 119 patrz 'Czujnik orientacji'). Gdy markery nie s zdeniowane, porty podaj warto±ci losowe. Porty WE8, WE9 i WE10 podaj odlegªo±ci od markerów (odpowiednio pierwszego, drugiego i trzeciego). Odlegªo±ci s podawane jako rzeczywista odlegªo± podzielona przez 5. Tak wi c, je±li jaka± odlegªo± zostaªa odczytana jako 21 to oznacza to,»e w rzeczywisto±ci wynosi ona od 105 do 109 jednostek. 8

Cz ± III J zyk sterowania robota mobilnego 3 Informacje ogólne J zyk jest j zykiem interpretowanym. Interpreter j zyka jest programem DOSowskim. Wykonanie programu skªada si z dwóch faz: 1. fazy przetwarzania wst pnego (preprocesora) 2. fazy wykonania zasadniczego (dwuprzebiegowego) W fazie 1. rozwijane s inkluzje oraz dokonywane jest wst pne sprawdzenie poprawno±ci j zykowej programu. W fazie 2. program jest wykonywany. Wykrywane s wtedy ewentualne bª dy zwiazane z kontekstem wykonania programu. Wykonanie programu mo»na w dowolnej chwili przerwa naciskaj c klawisz Esc. Wykonanie programu rozpoczyna si od wykonania tre±ci pierwszej linii programu. O ile polecenia nie wskazuj inaczej, linie programu wykonywane sa kolejno wedªug kolejno±ci ich wyst powania w pliku/plikach programu. Program zapisany jest w pliku/plikach ASCII. Program skªada si z linii tekstu zawieraj cych dyrektywy i polecenia j zyka. W jednej linii mo»e znajdowa si tylko jedno polecenie, dyrektywa, komentarz lub etykieta. Linia mo»e mie do 127 znaków dªugo±ci. Separatory (znaki spacji i tabulacji) mog wyst powa wewn trz linii, na jej pocz tku i na ko«cu. Poszczególne tokeny (staªe, identykatory, sªowa kluczowe, operatory, etykiety) musza by oddzielane separatorami. Nie istnieje mechanizm pozwalaj cy na kontynuacje jednej linii programu w nast pnej linii w pliku linia programu stanowi caªo± w ramach linii pliku. Wielko± liter jest znacz ca; tzn identykatory 'Aaa' i 'aaa' s ró»ne. 4 Komentarze Komentarzem jest dowolna linia zaczynaj ca si od znaku # (ewentualnie poprzedzonego separatorami). Tre± komentarza obejmuje caª linie. Nie mo»na dodawa komentarzy do linii zawieraj cych polecenia czy dyrektywy. Tzn. linia programu: let a 5 # teraz a jest rowne 5 jest niepoprawna. Nale»y u»y konstrukcji: let a 5 # teraz a jest rowne 5 5 Identykatory Identykatorem jest dowolny ci g znaków nie zawieraj cy separatorów ani znaku cudzysªowu ró»ny od sªów kluczowych. Identykator nie mo»e zaczyna si od znaków: +(plus), (minus),.(kropka), ani od cyfr. Wielko± znaków w identykatorach jest znacz ca. Maksymalna dªugo± identykatora nie jest ograniczona; ogranicza j praktycznie tylko dªugo± linii. Cz ± identykatorów jest zastrze»onych i stanowi tzw. sªowa kluczowe j zyka. 6 Sªowa kluczowe Sªowa kluczowe j zyka to identykatory nazw polece«i operatorów. S one nast puj ce: include stop wait set get let goto goifplus goifzero goifminus goifnzero while break continue call return write newl read 9

+ - * / log power sin arctg int time beep file freemem spawn Wielko± znaków sªów kluczowych jest znacz ca. 7 Literaªy W j zyku wystepuj literaªy tekstowe (napisy) i liczbowe (staªe liczbowe). Literaªem tekstowym jest ci g znaków uj ty w znaki apostrofu np. "jestem literalem". Literaªem liczbowym jest staªa liczbowa zapisana jako poprawna liczba, np. 123 123.0-12.3 +1.23. Wszystkie literaªy liczbowe oznaczaj warto±ci rzeczywiste. 8 Etykiety Etykiety s to identykatory poprzedzone znakiem ':' (dwukropek). Sªu» od oznaczania specycznych miejsc w tre±ci programu. Etykieta mo»e wyst pi w programie w dwóch postaciach: deniuj cej: jako okre±laj ca miejsce w programie np. :tuskoczyc wskazuj cej: jako wskazanie na okre±lone miejsce w programie np. goto :tamskoczyc Posta deniuj ca etykiety mo»e wyst pi tylko jeden raz w caªym programie. 9 Zmienne W programie mo»liwe jest u»ywanie zmiennych. S to wyª cznie globalne zmienne proste typu rzeczywistego. Identykatorem (nazw ) zmiennej jest dowolny poprawny identykator. Dopuszcza si przeci»enie identykatora jako jednocze±nie nazwy zmiennej i nazwy etykiety, np.: goifplus :ident ident Zmienne s deklarowane (i jednocze±nie deniowane) przez ich pierwsze wyst pienie jako 1 argumentu polecenia 'let'. Zmienne istniej a» do wykonania polecenia 'stop' lub 'freemem'. Odwoªanie si do nieistniej cej (niezdeniowanej) zmiennej stanowi bª d. 10 Operatory arytmetyczne W j zyku zaimplementowano nast puj ce operatory arytmetyczne: operator ilo± argumentów znaczenie * 2 mno»enie / 2 dzielenie + 2 dodawanie - 2 odejmowanie log 1 logarytm naturalny power 2 pot gowanie (x y ) sin 1 sinus arctg 1 arcus tangens int 1 cz ± caªkowita liczby time 0 liczba tików od startu programu Wszystkie operatory przyjmuja argumenty rzeczywiste i zwracaja warto±ci rzeczywiste. Wszystkie k ty wyra»ane s w radianach. Brak jest operatorów przetwarzajacych napisy (teksty). Operator int wyznacza cz ± caªkowita liczby b d cej jego argumentem poprzez odrzucenie cz ±ci uªamkowej, np. int 5.5 wynosi 5.0, za± int -3.5 wynosi -3.0. 10

11 Wyra»enia arytmetyczne Wyra»eniem arytmetycznym jest sekwencja identykatorów zmiennych liczbowych, operatorów i staªych liczbowych oddzielonych separatorami. Wyra»enia zapisuje si w klasycznej notacji wzrostkowej oddzielaj c poszczególne tokeny (jednostki leksykalne) spacjami, na przykªad: klasyczne: b b 4 a c zapisujemy jako: b * b - 4 * a * c W wyra»eniach mo»na stosowa nawiasy. Oto przykªady wyra»e«arytmetycznych: ( x - y ) * 2 5 * sin 25 12 Instrukcje W j zyku wyst puje pi rodzajów instrukcji: instrukcje podstawienia (obliczeniowe): let instrukcje steruj ce: goto goifplus goifzero goifminus goifnzero while break continue call return stop instrukcje wej±cia/wyjscia: write newl read wait beep le instrukcje komunikacyjne: set get inne instrukcje: freemem spawn time 12.1 Instrukcja podstawienia Instrukcja podstawienia (obliczeniowa) let ma nast puj c skªadni : gdzie: let _zmienna _wyrazenie _zmienna jest nazw zmiennej (deniowanej i ewentualnie - przy pierwszym wyst pieniu nazwy zmiennej - deklarowanej) _wyrazenie jest dowolnym wyra»eniem arytmetycznym. 12.2 Instrukcje steruj ce 12.2.1 Instrukcje skoków Instrukcja goto powoduje zmian kolejno±ci wykonywania polece«programu - skok do linii oznaczonej podan etykieta. Skªadnia instrukcji jest nast puj ca: goto :_etykieta przy czym etykieta :_etykieta musi istnie w programie. Instrukcja goifplus powoduje skok do linii zawieraj cej podan etykiet, je±li warto± podanego wyra»enia (lub staªej lub zmiennej) jest dodatnia. Skªadnia instrukcji goifplus jest nast puj ca: goifplus :_etykieta wyrazenie przy czym etykieta :_etykieta musi istnie w programie. 11

Instrukcja goifzero powoduje skok do linii zawieraj cej podan etykiet, je±li warto± podanego wyra»enia (lub staªej lub zmiennej) jest równa 0.0. Skªadnia instrukcji goifzero jest nast puj ca: goifzero :_etykieta wyrazenie przy czym etykieta :_etykieta musi istnie w programie. Instrukcja goifnzero powoduje skok do linii zawieraj cej podan etykiet, je±li warto± podanego wyra»enia (lub staªej lub zmiennej) jest ró»na od 0.0. Skªadnia instrukcji goifnzero jest nast puj ca: goifnzero :_etykieta wyrazenie przy czym etykieta :_etykieta musi istnie w programie. Instrukcja goifminus powoduje skok do linii zawieraj cej podan etykiet, je±li warto± podanego wyra»enia (lub staªej lub zmiennej) jest mniejsza od 0.0. Skªadnia instrukcji goifminus jest nast puj ca: goifminus :_etykieta wyrazenie przy czym etykieta :_etykieta musi istnie w programie. 12.2.2 Instrukcje wywoªania i powrotu z procedury Instrukcja call sªuzy do skoku do wskazanej etykieta linii z zapami taniem miejsca powrotu. Instrukcja return powoduje powrót do zapami tanego miejsca. Obie instrukcje implementuj skok ze ±ladem pozwalaj cy na tworzenie procedur (podprogramów). Procedury mog by zagnie»d»one. W jednej procedurze mo»e by wiele instrukcji return. Skªadnia powy»szych instrukcji jest nast puj ca: call :_etykieta return Z wywoªaniem procedury (tzn. u»yciem polecenia call) nie wi» si»adne mechanizmy przekazywania parametrów i tworzenia zmiennych lokalnych. Parametry mo»na przekazywa technik 'przez zmienn globaln '. 12.2.3 Instrukcje p tli: while, break i continue Instrukcje while, break i continue pozwalaj na organizacj p tli ze sprawdzaniem warunku na pocz tku. Skªadnia tych instrukcji jest nast puj ca: while _zmienna :_etykieta [zakres petli] break continue :_etykieta Wykonanie instrukcji while polega na wykonaniu nast puj cych czynno±ci: 1. sprawdzeniu czy warto± zmiennej steruj cej _zmienna jest ró»na od 0.0 2. je±li tak, wykonywany jest zakres p tli a» do napotkania etykiety :_etykieta; nast pnie wraca si ponownie do punktu 1. 3. je±li nie, wykonanie p tli jest ko«czone i sterowanie przekazywane jest do linii nast pnej po linii zawieraj cej etykiet :_etykieta Wykonanie instrukcji break polega na natychmiastowym zako«czeniu p tli i przej±ciu do wykonania instrukcji po etykiecie :_etykieta Wykonanie instrukcji continue polega na natychmiastowym porzuceniu wykonywania zakresu p tli i przej±ciu do kolejnego sprawdzenia. P tle mog by wzajemnie zagnie»d»one. Napotkane polecenia break i continue rozumiane s jako odnosz ce si do aktualnie wykonywanej (najmniej zagnie»d»onej) p tli. 12

12.2.4 Instrukcja stop Instrukcja stop powoduje natychmiastowe zako«czenie wykonywania programu. Jej skªadnia jest nast puj ca: stop W ka»dym programie powinna by przynajmniej jedna instrukcja stop. 12.3 Instrukcje wej±cia/wyj±cia 12.3.1 Instrukcje wej±cia/wyj±cia na konsoli Instrukcjami wej±cia/wyj±cia konsolowego s instrukcje o nast pujacej skªadni: write _wyrazenie write "stala tekstowa" newl read _zmienna wait _wyrazenie beep _wyrazenie Instrukcja write wypisuje na konsol warto± wyra»enia lub staª tekstow. Instrukcja newl wypisuje na konsol znak przej±cia do nowej linii. Instrukcja read wczytuje z konsoli liczb i jej warto± nadaje zmiennej _zmienna. Zmienna _zmienna musi istnie. Je±li odczyt nie odbyª si poprawnie, wyst puje bª d i przerwanie pracy programu. Instrukcja wait powoduje zawieszenie wykonywania programu (odczekanie) liczby tików zegara systemowego wskazanej przez warto± wyra»enia _wyrazenie. Je±li liczba ta jest ujemna, instrukcja wait odczekuje 0 tików. 1 sekunda to 18.2 tików. Instrukcja beep powoduje wydanie d¹wi ku trwajacego _wyrazenie tików. 12.3.2 Instrukcja obslugi plikow - le Instrukcja le sªu»y do obsªugi plików. Pliki mo»na otwiera do zapisu, czytania oraz dopisywania. Mo»na sprawdza dost pno± plików, tworzy je i usuwa. Podczas czytania mo»na sprawdza, czy osi gni to koniec pliku. W programie mo»na otworzy jednocze±nie wiele plików w ró»nych trybach i wykonywa na nich ró»ne operacje. Polecenia czytania i zapisu dotycz jednak»e ka»dorazowo tylko tego pliku, który jest w danej chwili wskazany jako plik bie» cy. Dost p do plików realizowany jest wyª cznie sekwencyjnie. Jednocze±nie mo»na otworzy maksymalnie 8 plików. Do otwartego pliku odwoªujemy si po jego numerze (deskryptorze pliku) uzyskanym w momencie otwarcia pliku lub w operacjach zapisu i odczytu odwoªujemy si domy±lnie do pliku bie» cego. Skªadnia polecenia le jest nast puj ca: gdzie: file arg1 arg2 arg3 arg1 to liczba lub zmienna o warto±ci caªkowitej od 0 do 9 okre±laj ca operacj na pliku. arg2 jest to nazwa zmiennej, w której zwracany jest rezultat operacji; zmienna musi ju» istnie. Zazwyczaj rezultat o warto±ci 0 oznacza bª d operacji. arg3 dodatkowy argument b d cy nazw zmiennej (juz istniej cej) lub ªa«cuchem tekstowym. Znaczenie poszczególnych warto±ci arg1 jest nast puj ce: 13

warto± symbol opis operacji skªadnia 0 f_curnt ustaw bie» cy plik le 0 efekt nrpliku 1 f_openr otwórz plik do czytania le 1 efekt nazwapliku 2 f_openw otwórz plik do zapisu le 2 efekt nazwapliku 3 f_opena otwórz plik do dopisywania le 3 efekt nazwapliku 4 f_close zamknij plik le 4 efekt nrpliku 5 f_acces sprawd¹ dost pno± /istnienie pliku le 5 efekt nazwapliku 6 f_erase usu«plik le 6 efekt nazwapliku 7 f_ifeof sprawd¹, czy ju» koniec pliku le 7 efekt nrpliku 8 f_read przeczytaj z bie» cego pliku le 8 efekt zmienna 9 f_write zapisz do bie» cego pliku le 8 efekt zmienna Staªe symboliczne zdeniowane s dla wygody w pliku inkluzji pliki.prg 1. Skªadnie i dziaªanie poszczególnych operacji instrukcji le przedstawiono poni»ej. Operacja 0 - f_curnt ustaw bie» cy plik Skªadnia: file 0 efekt nrpliku efekt w tej zmiennej zwracany jest rezultat operacji: 1 je±li operacja powiodªa si ; 0 w wypadku bª du nrpliku zmienna zawieraj ca numer pliku (jego deskryptor). W rezultacie otwarty plik wskazany w zmiennej nrpliku stanie sie plikiem biezacym - operacje 8 i 9 b d dotyczyªy tego wªa±nie pliku; je±li operacja zako«czyªa si bª dem np. na skutek podania niepoprawnej warto±ci nrpliku, bie» cy plik bedzie nieokre±lony. efekt i nrpliku s zmiennymi; musz one ju» istnie Operacja 1 f_openr otwórz plik do czytania Skªadnia: file 1 efekt nazwapliku efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li operacja nie powiodªa si ; w wypadku sukcesu w zmiennej zwracany jest numer pliku (liczba>0), za± nowootwarty plik staje si plikiem bie» cym nazwapliku to nazwa pliku, np: c:\programy\dane.dat lub mojedane.txt W rezultacie plik o wskazanej nazwie zostaje otwarty do czytania i staje sie plikiem bie» cym; je±li operacja zako«czyªa si bª dem, bie» cy plik b dzie nieokre±lony. Operacja 2 f_openw otwórz plik do zapisu Skªadnia: file 2 efekt nazwapliku efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li operacja nie powiodªa si ; w wypadku sukcesu w zmiennej zwracany jest numer pliku (liczba>0), zas nowo otwarty plik staje si plikiem bie» cym npliku to nazwa pliku, np: c:\programy\dane.dat lub mojedane.txt W rezultacie plik o wskazanej nazwie zostaje otwarty do zapisu i staje si plikiem bie» cym; dotychczasowa zawarto± pliku zostaje skasowana, je±li operacja zako«czyªa si bª dem, bie» cy plik b dzie nieokre±lony. 1 plik ten jest cz ±cia skªadow biblioteki procedur roblib.prg 14

Operacja 3 f_opena otwórz plik do dopisywania Skªadnia: file 3 efekt nazwapliku efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li operacja nie powiodªa si ; w wypadku sukcesu w zmiennej zwracany jest numer pliku (liczba>0), za± nowootwarty plik staje si plikiem bie» cym npliku to nazwa pliku, np: c:\programy\dane.dat lub mojedane.txt W rezultacie plik o wskazanej nazwie zostaje otwarty do dopisywania i staje sie plikiem bie» cym; nowo zapisywane warto±ci b d dopisywane na ko«cu istniej cego pliku, je±li operacja zako«czyªa si bª dem, bie» cy plik b dzie nieokre±lony. Operacja 4 f_close zamknij plik Skªadnia: file 4 efekt nrpliku efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li operacja nie powiodªa si ; 1 je±li plik zostaª pomy±lnie zamkni ty. Bie» cy plik staje si nieokre±lony, Numer pliku zawarty w zmiennej nrpliku przestaje poprawnie opisywa wcze±niej otwarty plik. nrpliku ta zmienna powinna zawiera numer pliku, który ma zosta zamkni ty; numer wcze±niej uzyskany w wyniku operacji 1,2 lub 3 polecenia le W rezultacie plik o wskazanej nazwie zostaje zamkni ty, bie» cy plik jest nieokre±lony, za± numer pliku przestaje poprawnie opisywa otwarty plik. Operacja 5 f_acces sprawd¹ dost pno± (istnienie) pliku Skªadnia: file 5 efekt nazwapliku efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li plik jest niedost pny (brak uprawnie«lub nie istnieje); 1 gdy plik jest dost pny. Warto± zmiennej efekt bezpo±rednio przed wywoªaniem polecenia le decyduje o tym, jaki aspekt dost pno±ci pliku jest sprawdzany: gdy efekt ma warto± 0, sprawdzane jest istnienie pliku gdy efekt ma warto± 1, sprawdzana jest dost no± pliku do zapisu gdy efekt ma warto± inn ni» 0 lub 1, sprawdzane jest istnienie pliku po operacji warto± zmiennej efekt równa 1 oznacza istnienie/dost pno± pliku, warto± równa 0 oznacza nieistnienie/brak dost pno±ci. nazwapliku to nazwa pliku, np: c:\programy\dane.dat lub mojedane.txt. Bie» cy plik nie ulega zmianie 15

Operacja 6 f_erase usu«plik Skªadnia: file 6 efekt nazwapliku efekt efekt jest ju» istniej ca zmienna; w tej zmiennej zwracany jest rezultat operacji: 0 je±li plik nie zostaª usuni ty (brak uprawnie«lub taki plik nie istnieje); 1 gdy plik zostaª usuni ty nazwapliku to nazwa pliku, np: c:\programy\dane.dat lub mojedane.txt. Bie» cy plik nie ulega zmianie; aby plik mógª by usuni ty musi on by zamkni ty (nie mo»e by u»ywany przez jakikolwiek proces). Operacja 7 f_ifeof sprawd¹, czy osi gni to koniec pliku Skªadnia: file 7 efekt nrpliku efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 nie osi gni to ko«ca pliku; 1 koniec pliku zostaª osi gni ty. Je±li osi gni to koniec pliku, nie mo»na juz z niego czyta. nrpliku ta zmienna powinna zawiera numer pliku, dla którego badamy osi gniecie ko«ca pliku numer wcze±niej uzyskany w wyniku operacji 1,2 lub 3 polecenia le Dla plików otwartych do zapisu lub dopisywania wska¹nik miejsca pisania w pliku ustawiony jest zawsze na ko«cu pliku, wi c zawsze zwracana jest warto± zmiennej efekt równa 1. Operacja 8 f_read przeczytaj z bie» cego pliku Skªadnia: file 8 efekt zmienna efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li nast piª bª d czytania; 1 gdy poprawnie przeczytano warto± z pliku zmienna nazwa ju» istniej cej zmiennej, w której zostanie zapami tana przeczytana warto± ; zmienna nie zmienia warto±ci w wypadku bª du czytania Czytanie z pliku nieotwartego lub otwartego do zapisu lub dopisywania jest bª dem. Operacja 9 f_write zapisz do bie» cego pliku Skªadnia: file 9 efekt wyrazenie efekt efekt jest ju» istniej c zmienn ; w tej zmiennej zwracany jest rezultat operacji: 0 je±li nast piª bª d zapisu; 1 gdy poprawnie zapisano warto± wyrazenie wyra»enie, którego warto± zostanie zapisana do pliku. Zapis do pliku zamkni tego lub otwartego do czytania jest bª dem. Uwaga: we wszystkich wariantach polecenia le bª dy w wykonaniu operacji plikowych nie przerywaj wykonania programu sterowania robotem sygnalizowane s JEDYNIE odpowiedni warto±ci w zmiennej efekt. 16

12.4 Instrukcje komunikacyjne 12.4.1 Instrukcje obsªugi portów Do instrukcji obsªugi portów zalicza si instrukcje set i get. Skªadnia ich jest nast puj ca: set _port _wyrazenie get _port _zmienna gdzie wyra»enie _wyrazenie oznacza warto± wypisywan na port, _port wyznacza numer portu (podany jako staªa lub zmienna), za± zmienna _zmienna przechowuje stan portu. Instrukcja set ustawia stan wskazanego przez _port portu na warto± _wyrazenie. Instrukcja get odczytuje stan portu wskazanego przez _port i zapisuje j w zmiennej _zmienna. Zmienna _zmienna nie jest deklarowana przez wyst pienie w instrukcji get. 12.5 Inne instrukcje 12.5.1 Instrukcja freemem Instrukcja freemem powoduje wykasowanie wszystkich zmiennych istniej cych w programie. Warto±ci zmiennych s tracone, a ich identykatory staj si nieznane (wszystkie zmienne przestaj istnie sytuacja jest taka, jak przy uruchomieniu programu). Skªadnia instrukcji freemem jest nast puj ca: freemem Instrukcja przeznaczona jest do wspóªpracy z instrukcj spawn. 12.5.2 Instrukcja spawn Instrukcja spawn powoduje przerwanie wykonywania bie» cego programu i zaªadowanie programu podanego jako argument. Istniej ce w programie zmienne zostaj zachowane. Nazw pliku podaje si w cudzysªowie. Przy wykonaniu instrukcji spawn stan systemu pozostaje niezmieniony nie nast puje reset symulatora. Skªadnia instrukcji spawn jest nast puj ca: np. spawn nazwa_pliku_programu spawn c:\pliki\program2.prg 12.5.3 Operator time Operator time podaje liczb tików systemowego licznika czasu jaka min ªa od uruchomienia programu. 1 sekunda to 18.2 tików. Operator time mo»na rozumie jako zmienn przechowujac warto± czasu. Oto dwa przykªady u»ycia operatora time: let moment time write time * 18.2 13 Dyrektywy W j zyku wyst puje jedna dyrektywa: include. Skªadnia jej jest nast puj ca: include nazwa_pliku gdzie nazwa pliku jest poprawn nazw pliku w systemie MSDOS, np. include plik.prg include c:\prg\lib\ukltrans.prg Dyrektywa powoduje doª czenie w miejscu jej wyst pienia do bie» cego pliku programu zawarto±ci pliku podanego jako argument dyrektywy. Dyrektywy include mog by zagnie»d»one i mog wystepowa w plikach wielokrotnie. 17

14 Plik konguracyjny Plik konguracyjny interpretera j zyka pozwala ustawia specyczne parametry interpretera: strblocksize=30000 wielkosc bloku stringow w bajtach; od 0 do 65000 maxlines=2000 maksymalna liczba linii programu loopstacksize=30 wielkosc stosu petli vartabsize=200 wielkosc tablicy zmiennych Parametry ustawia si w pliku konguracyjnym patrz przykªadowy plik konguracyjny. W przypadku braku denicji przyjmowana jest warto± domy±lna. Plik jest wyszukiwany w tym samym katalogu, co plik EXE programu pod nazwa rster.cfg. Oto przyklad pliku konguracyjnego # przyklad pliku rster.cfg # vartabsize=400 # koniec 18

Cz ± IV Biblioteka CRSTER.LIB 15 Informacje ogólne Biblioteka CRSTER.LIB jest biblioteka napisana w j zyku C (Borland Turbo C 2.0) przeznaczona do sterowania robotem mobilnym w symulatorze RSYM z poziomu programu napisanego w j zyku C. Biblioteka skªada si z nastepuj cych plików: plik biblioteki CRSTER.LIB plik nagªówkowy interfejsu biblioteki CRSTER.H Program ¹ródªowy (.C) powinien by pisany w j zyku C zgodnie ze standardem ANSI C. 16 Interfejs biblioteki Prototypy funkcji stanowi cych interfejs biblioteki zebrane s w pliku CRSTER.H. S one nastepuj ce: int crster_init(void); /* inicjacja lacznosci */ void crster_done(void); /* zakonczenie lacznosci */ int crster_stat(void); /* odczyt statusu lacznosci gdy =0 to, OK; gdy <>0 to blad */ int crster_get(int port); /* odczyt z portu */ void crster_put(int port, int wartosc); /* zapis na port */ void crster_wait(int tikow); /* odczekanie ilustam tikow */ long int crster_time(void); /* liczba tikow od uruchomienia */ Funkcje crster_init() i crster_done() sªu» odpowiednio do inicjacji i zako«czenia ª czno±ci programu z symulatorem RSYM. Funkcja crster_stat() pozwala na odczyt statusu komunikacji; zwracana warto± 0 oznacza sprawna komunikacj, zwracana warto± ró»na od zera oznacza bª d komunikacji. Pozostaªe funkcje realizuj zadania analogiczne do polece«j zyka sterowania robotem u»ywanego przez RSTER. Numery portów oraz ich przeznaczenie, a tak»e zwracane warto±ci s identyczne jak w wypadku RSTER. 17 U»ycie biblioteki Program steruj cy w j zyku C tworzony jest przy pomocy kompilatora Turbo C 2.0. Do programu ¹ródªowego nale»y doª czy jako inkluzj plik nagªówkowy biblioteki CRSTER.H. Podczas konsolidacji (linkowania) do programu wynikowego nale»y doª czy plik biblioteki CRSTER.LIB. Ze wzgl du na fakt,»e program skªada sie bedzie przynajmniej z dwóch plików (pliku ¹ródªowego.C i pliku biblioteki.lib), do organizacji komiplacji i konsolidacji programu nale»y posªu»y si plikiem projektu deniuj cym skªadowe elementy programu wynikowego. W programie w j zyku C konieczne jest wykonanie dwóch czynno±ci: inicjacji ª czno±ci z wykorzystaniem biblioteki oraz zako«czenia ª czno±ci. Inicjacji ª czno±ci dokonuje si wywoªuj c procedur cster_init(). Nale»y to zrobi przed jakimkolwiek wywoªaniem procedur odczytuj cych warto±ci z portów lub wysyªaj cych warto±ci na porty steruj ce robota. Inicjacji wystarczy dokona tylko jeden raz. Zako«czenia ª czno±ci dokonuje si poprzez wywoªanie procedury cster_done(). Powinno to zosta wykonane na ko«cu programu. Po zako«czeniu ª czno±ci nie mo»na korzysta z procedur czytaj cych warto±ci z portów robota lub wysyªaj cych warto±ci na te porty. W toku programu pomi dzy inicjacj ª czno±ci a jej zako«czeniem mo»na dowolnie korzysta z funkcji zapisu/odczytu portów robota. 19

A oto przykªad plików sªu» cych do kompilacji prostego programu w C wykorzystuj cego bibliotek CRSTER.LIB. Plik projektu MOJPROG.PRJ mojprog.c crster.lib Plik programu MOJPROG.C #include <stdio.h> #include "crster.h" int main() { crster_init(); /* moj program: w lewo 10s i w prawo 10s */ crster_put(3,1); crster_put(1,37); crster_wait(182); crster_put(1,44); crster_wait(182); crster_put(1,27); } crster_done(); return 0; Po kompilacji uzyskuje si program wykonywalny MOJPROG.EXE. 20

Cz ± V Dodatki 18 Podsumowanie skªadni Poni»ej zebrano podstawowe konstrukcje j zykowe. include c:\plik.prg stop wait wyrazenie_tikow set port wyrazenie get port zmienna let zmienna wyrazenie goto etykieta goifplus etykieta wyrazenie goifzero etykieta wyrazenie goifminus etykieta wyrazenie goifnzero etykieta wyrazenie while zmienna etykieta break continue call etykieta return write "tekst" write zmienna newl read zmienna log stala log zmienna log (wyrazenie) sin stala_rad sin zmienna sin (wyrazenie) arctg stala arctg zmienna arctg (wyrazenie) power podstawa wykladnik power (wyr1) (wyr2) int liczba int (wyrazenie) time beep wyrazenie_tikow freemem spawn c:\plik.prg 21

19 Przeliczanie pr dko±ci Warto±ci wysyªane na port 1 przy» daniu okre±lonej pr dko±ci kóª jezdnych (00 to zatrzymanie) (w ukªadzie KL KP => wynik): 0 0 => 27 1 1 => 36 2 2 => 45 3 3 => 54 1 1 => 18 1 0 => 35 0 1 => 28 2 0 => 43 0 2 => 29 2 1 => 44 1 2 => 37 3 0 => 51 0 3 => 30 3 1 => 52 1 3 => 38 3 2 => 53 2 3 => 46 gdzie KL to koªo lewe, KP koªo prawe, za± wynik to warto± do wysªania na port (pr dko± 0 odpowiada zatrzymaniu koªa). 22