Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:hexor:hexor_prolog [2007/11/28 16:23]
root Document moved from pl:hexor_prolog
pl:hexor:hexor_prolog [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Lista rozkazów ====== 
-  - forward(+unit) -- rozpoczęcie poruszania naprzód, robot porusza się do przodu do czasu podania innej komendy ruchu lub rozkazu stop. unit - numer robota, aktualnie 11,  
-  - backward(+unit) -- rozpoczęcie poruszania wstecz, robot porusza się do tyłu do czasu podania innej komendy ruchu lub rozkazu stop 
-  - left(+unit) -- rozpoczęcie skręcania w lewo, robot skręca do czasu podania innej komendy ruchu lub rozkazu stop  
-  - right(+unit) -- rozpoczęcie skręcania w prawo, robot skręca do czasu podania innej komendy ruchu lub rozkazu stop  
-  - stop(+unit) -- zatrzymanie robota 
-  - camera(+unit,​+x,​+y) - x,y współrzędne pozioma i pionowa ustawienia kamery/​sonaru Y=240 poziom, X= 68 - 248 ( max w lewo do max w prawo ) 
-  - readSensors(+unit,​-temp,​-sonar) temp,sonar wartości temperatury i sonaru odczytane z robota 
-  - readIR(+unit,​-state) state - stan czujników IR i dotykowych - sensor aktywny => odpowiedni bit w stanie niskim ​ 
-  - delay(+seconds) - czekaj przez __seconds__ sekund 
  
-^           ​Znaczenie bitów argumentu state w readIR ​    ​^^^^^^^^ 
-^ 7 ^ 6 ^ 5 ^ 4 ^ 3 ^ 2 ^ 1 ^ 0 ^  
-| ??? | dotykowy prawy | dotykowy lewy | IR przód |  IR lewy tył | ??? | IR środkowy tył | IR prawy tył  | 
- 
-Predykaty zwracają wartość TRUE w przypadku prawidłowego wykonania w przeciwnym wypadku FALSE ( np. błąd komunikacji). \\ 
-Robot zatrzymuje się automatycznie po wykryciu przeszkody ( czujniki IR, dotykowe, przekroczenie wartości progowej dla sonaru). 
- 
- 
- 
- 
-====== Przykładowe programy ====== 
-Programy demonstrujące wykorzystania predykatów prologowych do sterowania robotem. Programy te do uruchomienia wymagają plików z {{:​student:​hexor_prolog.tar.gz|tąd}}. 
- 
-===== Skanowanie sonarem i odczyt czujników ===== 
- 
-  :-dynamic counter/1. 
-  counter(68). 
-  unit(11). 
-  runme:- start. 
-  start:​- ​        ​unit(U),​camera(U,​68,​240),​sensors. 
-  sensors:​- ​      ​counter(T),​T > 240, retract(counter(_)),​assert(counter(68)),​!,​sensors. 
-  sensors:​- ​      ​unit(U),​counter(T),​X is T + 10, retract(counter(_)),​assert(counter(X)),​camera(U,​X,​240),​ 
-                  readSensors(U,​A,​B),​ 
-                  readIR(U,​C),​ 
-                  write('​temp:​ '​),​write(A),​ 
-                  write('​ sonar: '​),​write(B),​ 
-                  write('​ ir: '​),​write(C),​ 
-                  nl,​!,​sensors. 
- 
- 
-===== Poruszanie robotem ===== 
- 
-  unit(11). 
-  runme:- gohexor. 
-  gohexor:​- ​      ​unit(U),​forward(U),​writeln('​forward'​),​delay(5),​ 
-                  backward(U),​writeln('​backward'​),​delay(5),​ 
-                  left(U),​writeln('​left'​),​delay(5),​ 
-                  right(U),​writeln('​right'​),​delay(5),​ 
-                  forward(U),​writeln('​forward'​),​delay(5),​ 
-                  stop(U),​writeln('​stop'​),​writeln('​DONE'​). 
-  gohexor:​- ​      ​writeln('​ERROR'​). 
- 
- 
- 
-===== Wykonanie pojedynczego kroku ===== 
-W celu wykonania pojedynczego kroku robotem można użyć następującej procedury: 
- 
-  onestepforward(U):​- forward(U),​stop(U). 
- 
- 
- 
- 
-====== Programwanie krok po kroku ====== 
-  - [[pl:​hexor_prolog_stanowisko|Instalacja stanowiska]] 
-  - Pobierz kod programu z tąd {{:​student:​hexor_prolog.tar.gz|:​student:​hexor_prolog.tar.gz}} 
-  - Rozpakuj poleceniem //tar xzf hexor_prolog.tar.gz//​ 
-  - Pojawi się katalog //​hexor_prolog//​ 
-  - Wejdź do katalogu //cd hexor_prolog//​ 
-  - Kod programu sterującego jest w pliku //​hexorPL.pl//​ 
-    * domyślnie uruchamiane są równolegle 2 cele w prologu __runme1__ i __runme2__ 
-    * jeśli korzystasz tylko z jednego wątku drugi zakończ przez __runme2.__ 
-    * TYLKO JEDEN WĄTEK MOŻE UŻYWAĆ PREDYKATÓW DO KOMUNIKOWANIA SIĘ Z ROBOTEM 
-    * dodatkowe wątki można uzyskać w/g instrukcji z [[pl:​hexor_prolog_mt]] 
-  - Zmodyfikuj go zgodnie z tematem laboratorium. 
-  - Skompiluj uruchamiając komende //make// . Jeśli pojawiły się błędy wróć do punktu 6. 
-  - Uruchom komendą //​./​hexprPL//​ 
-  - Powtarzaj punkty 6-8 aż do osiągnięcia celu. 
- 
- 
- 
-====== Obsługa robota ====== 
-    * Przed rozpoczęciem ćwiczeń podłącz robota do ładowarki 
-           - włącz ładowarkę do sieci 
-           - wyłącz robota ​ 
-           - podłącz wtyczkę ładowarki do gniazda na korpusie robota 
-    * Podłącz nadajnik do portu USB komputera. 
-    * Sprawdź czy pojawiło się urządzenie ttyUSB0 ( polecenie __dmesg__ w linii poleceń) 
-    * Sprawdź czy jest poprawna komunikacja z robotem wykorzystując przykładowe programy. 
-    * Napisz własny program i testuj. 
-    * Jeśli robot nie jest używany przez dłuższy czas to podłącz go do ładowarki. 
-    * **Robota nie da się włączyć jeśli wtyczka ładowarki jest podłączona** 
- 
- 
- 
- 
-====== Architektura systemu sterującego ====== 
-System sterowania robota Hexor składa się z następujących warstw: 
-    - sprzęt 
-    - oprogramowanie w Basicu sterujące mikrokontrolerami na płycie robota 
-    - stacji nadrzędnej sterującej zachowaniem robota ( w tym przypadku PC + program w prologu ) 
-Warstwy 2 i 3 połączone są ze sobą za pomocą łącza beprzewodowego 
- 
-{{ :​student:​hexoroldnewarchitecture.png |:​student:​hexoroldnewarchitecture.png ​ Architektura systemu sterującego}} \\ 
- 
-Warstwa 3 budowana jest z następujących elementów: 
-  - __hexor.c/​hexor.h__ ​ biblioteka funkcji do komunikacji z robotem wykorzystująca port szeregowy 
-  - __hexorPL.c__ główny plik uruchamiający program sterujący. Zawiera funkcję __main__ w języku C, która wywołuje interpreter prologu. Plik ten zawiera też definicje predykatów które dołączane są do interpretera prologu ( patrz funkcja main ) 
-  - __hexorPL.pl__ plik zawierający program w prologu sterujący robotem. Można w nim używać dodatkowych predykatów zdefiniowanych w pliku __hexorPL.c__ 
-  - biblioteki EPP ułatwiającej dodawanie predykatów do prologu i zarządzanie wieloma wątkami wykonania w prologu 
pl/hexor/hexor_prolog.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0