Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-08d [2009/01/27 12:09]
jsi08
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-08d [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-<​code ​prolog>+====== Cel: śledzenie linii ====== 
 + 
 +Robot umieszczony na planszy testowej dojeżdża do grubej czarnej linii i od tego momentu stara się poruszać wzdłuż tej linii. Po wciśnięciu sensora dotyku kończy pracę.  
 + 
 +Dodatkowo robot reaguje na dźwięk - zatrzymuje się przy klaśnięciu. 
 + 
 +====== Wykonanie ====== 
 +===== Robot ===== 
 +Po raz pierwszy mieliśmy do dyspozycji zbudowanego wcześniej robota. Nasz Irek był zbudowany w sposób prosty, na podstawie instrukcji Quick Start. 
 + 
 +Irka wyposażyliśmy w czujnik światła, dotyku, dźwięku i ultradźwięku,​ jednak zrezygnowaliśmy z ostatniego, bo bardziej przeszkadzał,​ niż pomagał - jazda po linii (po cole ;-) ) tymczasowo nie wymagała zabezpieczania się przed ścianą. Czujnik wykorzystywaliśmy sprawdzając,​ czy robot działa (programem ''​demo2.pl''​). 
 + 
 +===== Problemy ===== 
 +Czasami Irek zachowywał się dziwnie. Zatrzymywał się i wydawał z siebie "​pykający"​ odgłos z czujnika ultradźwięku. Przesyłanie poleceń z Prologu nie dawało rezultatów. Pewne błędy widać na demonstracyjnym programie ''​demo2.pl''​. Po uruchomieniu programu zobaczyliśmy ostrzeżenie o przepełnieniu stosu przez wątek sprawdzający odległość. 
 +<​code>​
 ?- [demos/​demo2]. ?- [demos/​demo2].
 %     ​threads compiled into threads 0.00 sec, 8,216 bytes %     ​threads compiled into threads 0.00 sec, 8,216 bytes
Linia 24: Linia 38:
 ?- halt. ?- halt.
 1 threads wouldn'​t die 1 threads wouldn'​t die
-student@robo2:​~/​plnxt$ ./​bin/​plnxt_stty irek 
-Setting device configuration (pairing may be needed)... 
-DONE! 
-student@robo2:​~/​plnxt$ pl 
-Welcome to SWI-Prolog (Multi-threaded,​ Version 5.4.7) 
-Copyright (c) 1990-2003 University of Amsterdam. 
-SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, 
-and you are welcome to redistribute it under certain conditions. 
-Please visit http://​www.swi-prolog.org for details. 
- 
-For help, use ?- help(Topic). or ?- apropos(Word). 
- 
-?- [ 
-Action (h for help) ? 
 </​code>​ </​code>​
 +Ostatnia linia powyższego kodu może świadczyć o __błędzie w PLNXT__. Jeden wątek nie chciał się zamknąć nawet przy zamknięciu interpretera Prologu, działał po ponownym uruchomieniu robota i powodował błędy. Dało się słyszeć charakterystyczne "​pykanie"​ z czujnika odległości,​ robot nie reagował na żadne bodźce.
  
 +Zrestartowanie Irka i praca po ponownym sparowaniu BT przebiegała już bez problemów, o ile nie używaliśmy sensora ultradźwięku. W razie problemów restartowaliśmy NXT i można było działać od nowa.
  
 +===== Nasz program =====
  
 +Mimo ciężkiej walki z błędami, udało nam się zaprogramować algorytm poruszania się po linii.
  
 +==== Kod ====
 <code prolog> <code prolog>
-------test2.pl------------------------------------- 
 :- consult('​../​plnxt.pl'​). :- consult('​../​plnxt.pl'​).
  
Linia 74: Linia 78:
 :- start. :- start.
 </​code>​ </​code>​
 +Plik z programem: {{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​gg_jazda_po_linii.pl|}}
 +
 +==== Start ====
 +Irek ruszał do przodu wraz z wywołaniem programu z powłoki Prologu.
 +==== Działanie ====
 +Nasz Irek dojeżdżał do czarnej linii na planszy, po czym poruszał się po linii do przodu do momentu "​wyjechania"​ z linii. Następnie skręcał o pewien kąt w prawo w poszukiwaniu linii i w razie jej napotkania ruszał dalej.
 +==== Stop ====
 +Ta sekwencja powtarzała się do naciśnięcia czujnika dotyku, który zatrzymywał robota.
 +W każdej chwili Irek mógł się zatrzymać słysząc jakiś hałas.
 +
 +===== Film =====
 +YouTube:​[[http://​pl.youtube.com/​watch?​v=-nRYVM7D_yc]]
 +
 +aiWiki:​{{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​wideo056.rar|Pobierz wideo056.rar}}
 +
 +W roli głównej Irek jeżdżący po cole.
 +
 +W pozostałych rolach: Plansza, Rafał Gibas, Tomasz Gryzio, Weronika Furmańska, Paweł Grzesiak.
 +
 +Zdjęcia: Tomasz Gryzio.
 +
 +Dialogi: Natura.
 +
 +Plik z rozszerzeniem .3gp - converter do avi dostępny na stronie http://​www.boilsoft.com/​download.html
 +
 +===== Uwagi =====
 +
 +Dobranie odpowiednich wartości progowych jest bardzo ważne dla prawidłowego odczytu z sensorów. Robot dla różnych warunków (zmienne oświetlenie,​ cień, hałas) potrzebuje indywidualnego doboru wspomnianych wartości. Przed spojrzeniem krytycznie na algorytm warto spojrzeń nań z punktu widzenia czujnika - "Nie widzę, bo mi zasłaniasz,​ a nie dlatego, że źle patrzę"​.
 +
 +===== Możliwe błędy =====
 +Prawdopodobnie popełniliśmy nieco błędów w naszym programie. ''​nxt_close''​ wywołane może być zbyt często (może to nie szkodzi, ale program brzydko wygląda), na przykład dla instrukcji (klauzula ''​jedz_po_cole''​) wywoływanych w sposób rekurencyjny.
 +
 +Robot, co widać na filmie, "​tańczył"​ czasami podczas zjeżdżania z linii, wykonując piruety i zawroty. Najprawdopodobniej jednak poruszał się za szybko i skręcał bez sprzężenia zwrotnego. W takim wypadku zmniejszenie prędkości i dołożenie nowego wątku powinno naprawić problem.
 +
 +====== Uwagi do laboratorium ======
 +
 +Niezbędnym będzie poświęcenie którychś laboratoriów (najlepiej tych z oprogramowaniem Lego) na pokazanie nam, jak korzysta się z interfejsów dostępnych dla NXT. Na takie coś dziś jest oczywiście za późno, jednak da się to zrealizować w przyszłych latach. Pomoże to studentom programować zestawy Lego znacznie efektywniej i lepiej wykorzystywać bardziej zaawansowane techniki programowania.
 +
 +Nie widzę przeszkód, żeby takie spotkanie odbyło się w ramach wykładu z JSI. Pan Profesor chętnie zaprasza na wykład osoby chcące pokazać coś nowego.
 +
 +Innym na to sposobem będzie przygotowanie "​przewodnika po NXT w prologu"​ dostępnego na aiWiki, zawierającego zrealizowane przykłady, krok po kroku, wraz z filmami opisującymi rezultaty. Za wzór może posłużyć strona [[http://​showmedo.com/​|ShowMeDo]],​ na której możemy obejrzeć przeróżne samouczki z dziedziny programowania.
 +
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-08d.1233054546.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