Różnice

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

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
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] (aktualna)
Linia 6: Linia 6:
   - stop(+unit) -- zatrzymanie robota   - 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 )   - 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 )
 +  - cameraOn(+unit) - włącz przesyłanie obrazy z kamery ( w celu podglądania obrazu z kamery na komputerze należy: włączyć odbiornik (zasilacz i przełącznik ) uruchomić program xawtv i wybrać jako wejście __Composite1__ - menu kontekstowe pod prawym klawiszem)
 +  - cameraOff(+unit) - wyłącz przesyłanie obrazu z kamery
   - readSensors(+unit,​-temp,​-sonar) temp,sonar wartości temperatury i sonaru odczytane z robota   - 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 ​   - readIR(+unit,​-state) state - stan czujników IR i dotykowych - sensor aktywny => odpowiedni bit w stanie niskim ​
Linia 14: Linia 16:
 | ??? | dotykowy prawy | dotykowy lewy | IR przód |  IR lewy tył | ??? | IR środkowy tył | IR prawy tył  | | ??? | 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). \\ +**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). +**Robot zatrzymuje się automatycznie po wykryciu przeszkody ( czujniki IR, dotykowe, przekroczenie wartości progowej dla sonaru).** \\ 
 +W wypadku awarii programu ( zrzucenie pliku core ) proszę go przesłać na adres ptm@agh.edu.pl wraz z opisem sytuacji.
  
  
  
 ====== Przykładowe programy ====== ====== 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}}.+Programy demonstrujące wykorzystania predykatów prologowych do sterowania robotem. Programy te do uruchomienia wymagają plików z{{hexor_prolog.tar.gz}}. 
  
 ===== Skanowanie sonarem i odczyt czujników ===== ===== Skanowanie sonarem i odczyt czujników =====
Linia 29: Linia 32:
   unit(11).   unit(11).
   runme:- start.   runme:- start.
-  start:​- ​        ​unit(U),​camera(U,​68,​240),​sensors.+  start:​- ​        unit(U),​cameraOn(U),​camera(U,​68,​240),​sensors.
   sensors:​- ​      ​counter(T),​T > 240, retract(counter(_)),​assert(counter(68)),​!,​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),​   sensors:​- ​      ​unit(U),​counter(T),​X is T + 10, retract(counter(_)),​assert(counter(X)),​camera(U,​X,​240),​
Linia 38: Linia 41:
                   write('​ ir: '​),​write(C),​                   write('​ ir: '​),​write(C),​
                   nl,​!,​sensors.                   nl,​!,​sensors.
 +
  
  
Linia 44: Linia 48:
   unit(11).   unit(11).
   runme:- gohexor.   runme:- gohexor.
-  gohexor:​- ​      ​unit(U),​forward(U),​writeln('​forward'​),​delay(5),​+  gohexor:​- ​      unit(U),​cameraOn(U),​forward(U),​writeln('​forward'​),​delay(5),​
                   backward(U),​writeln('​backward'​),​delay(5),​                   backward(U),​writeln('​backward'​),​delay(5),​
                   left(U),​writeln('​left'​),​delay(5),​                   left(U),​writeln('​left'​),​delay(5),​
                   right(U),​writeln('​right'​),​delay(5),​                   right(U),​writeln('​right'​),​delay(5),​
                   forward(U),​writeln('​forward'​),​delay(5),​                   forward(U),​writeln('​forward'​),​delay(5),​
-                  stop(U),​writeln('​stop'​),​writeln('​DONE'​). +                  stop(U),​writeln('​stop'​),​writeln('​DONE'​),​cameraOff(U). 
-  gohexor:​- ​      ​writeln('​ERROR'​).+  gohexor:​- ​      ​writeln('​ERROR'​),​cameraOff(U). 
  
  
Linia 59: Linia 64:
   onestepforward(U):​- forward(U),​stop(U).   onestepforward(U):​- forward(U),​stop(U).
  
 +Podobnie można wykonywać pojedyncze kroki w innych kierunkach:
  
 +  onestepleft(U):​- left(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}}+ 
 + 
 +====== ​Programowanie ​krok po kroku ====== 
 +  - Pobierz kod programu ​stąd {{hexor_prolog.tar.gz}}
   - Rozpakuj poleceniem //tar xzf hexor_prolog.tar.gz//​   - Rozpakuj poleceniem //tar xzf hexor_prolog.tar.gz//​
   - Pojawi się katalog //​hexor_prolog//​   - Pojawi się katalog //​hexor_prolog//​
Linia 72: Linia 82:
     * jeśli korzystasz tylko z jednego wątku drugi zakończ przez __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     * 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]] +    * dodatkowe wątki można uzyskać w/g instrukcji z [[hexor_prolog_mt]] 
-  - Zmodyfikuj go zgodnie z tematem laboratorium. +  - Zmodyfikuj go zgodnie z tematem ​[[pl:​hexor:​hexor_lab|laboratorium]]
-  - Skompiluj uruchamiając ​komende ​//make// . Jeśli pojawiły się błędy wróć do punktu 6. +  - Skompiluj uruchamiając ​komendę ​//make// . Jeśli pojawiły się błędy wróć do punktu 6. 
-  - Uruchom komendą //./hexprPL//+  - Uruchom komendą //./hexorPL//
   - Powtarzaj punkty 6-8 aż do osiągnięcia celu.   - Powtarzaj punkty 6-8 aż do osiągnięcia celu.
- 
  
  
Linia 85: Linia 94:
            - wyłącz robota ​            - wyłącz robota ​
            - podłącz wtyczkę ładowarki do gniazda na korpusie robota            - podłącz wtyczkę ładowarki do gniazda na korpusie robota
 +                   * świeci żółta dioda - ładowarka jest poprawnie podpięta do sieci
 +                   * świeci zielona dioda - ładowany jest akumulator ( intensywność świecenia jest odwrotnie proporcjonalna do naładowania akumulatora)
     * Podłącz nadajnik do portu USB komputera.     * Podłącz nadajnik do portu USB komputera.
     * Sprawdź czy pojawiło się urządzenie ttyUSB0 ( polecenie __dmesg__ w linii poleceń)     * Sprawdź czy pojawiło się urządzenie ttyUSB0 ( polecenie __dmesg__ w linii poleceń)
Linia 91: Linia 102:
     * Jeśli robot nie jest używany przez dłuższy czas to podłącz go do ładowarki.     * 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**     * **Robota nie da się włączyć jeśli wtyczka ładowarki jest podłączona**
 +
  
  
Linia 100: Linia 112:
     - oprogramowanie w Basicu sterujące mikrokontrolerami na płycie robota     - oprogramowanie w Basicu sterujące mikrokontrolerami na płycie robota
     - stacji nadrzędnej sterującej zachowaniem robota ( w tym przypadku PC + program w prologu )     - 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+Warstwy 2 i 3 połączone są ze sobą za pomocą łącza ​bezprzewodowego (RS-232)
  
-{{ :student:hexoroldnewarchitecture.png |:​student:​hexoroldnewarchitecture.png  ​Architektura systemu sterującego}} \\+{{hexoroldnewarchitecture.png|Architektura systemu sterującego}} \\
  
-Warstwa 3 budowana ​jest z następujących elementów:+Warstwa 3 zbudowana ​jest z następujących elementów:
   - __hexor.c/​hexor.h__ ​ biblioteka funkcji do komunikacji z robotem wykorzystująca port szeregowy   - __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.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__   - __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   - biblioteki EPP ułatwiającej dodawanie predykatów do prologu i zarządzanie wieloma wątkami wykonania w prologu
pl/hexor/hexor_prolog.1196263389.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (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