Różnice

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

Odnośnik do tego porównania

pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11d [2009/01/25 12:09]
jsi08
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11d [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Języki sztucznej inteligencji - Laboratorium (zaawansowane algorytmy z PLNXT) ====== 
-====== Maksymilian Piasecki, Jan Pollak, Mariusz Sokołowski ====== 
-====== Środa 21.01.09 godz. 11:00 ======= 
-===== Konstrukcja ===== 
-Robot, którego używaliśmy na zajęciach był już przygotowany,​ był to jeden z przykładów z instrukcji LEGO. 
  
-===== Algorytmy ===== 
-Na zajęciach zdążyliśmy zaimplementować jeden algorytm pt. "​Sprzątacz"​. Jego zachowanie wyglądało następująco:​ 
- 
-  * robot obraca się miejscu szukając przeszkód wokół niego w odległości < 30 
-  * gdy "​zauważy"​ coś zatrzymuje się i zaczyna jechać w tym kierunku przez 2 sek 
-  * następnie wykonuje obrót o 180 stopni 
-  * znów jedzie w przód przez 2 sek, wracając do pkt. wyjścia 
-  * ponownie zaczyna szukać obiektów w swoim pobliżu 
-  * gdy przez dwa obroty nie znajdzie nic, kończy pracę 
- 
-Napisany przez nas program: 
- 
-:- consult('​plnxt.pl'​). 
- 
-start:- 
- nxt_open, 
- go_on_buddy. 
- 
-go_on_buddy :- 
- nxt_rotate(200,​720),​ 
- trigger_create(_,​obczajka,​wypchnij). 
- 
-wypchnij :- 
- nxt_stop, 
- nxt_go(500),​ 
- sleep(2), 
- nxt_stop, ​ 
- nxt_rotate(200,​180),​ 
- nxt_go(500),​ 
- sleep(2), 
- nxt_stop, 
- go_on_buddy. 
- 
-obczajka :- 
- nxt_ultrasonic(Value,​force),​ 
- Value < 30. 
- 
-zamknij :- 
- trigger_killall,​ 
- nxt_close. 
- 
-Plik z programem - {{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​irek_21_01_09_1100.zip|}} 
- 
-===== Problemy, propozycje zmian ===== 
-Pierwszym napotkanym przez na problemem było użycie nxt_go_cm. Poprzedni fragment kodu odpowiadający za usuwanie wykrytego obiektu wyglądał następująco:​ 
- 
-wypchnij :- 
- nxt_stop, 
- nxt_go_cm,​(400,​30), ​ 
- nxt_rotate(200,​180),​ 
- nxt_go_cm(400,​30),​ 
- go_on_buddy. 
- 
-Jednak jego działanie było dalekie od zaplanowanego. Robot najpierw przejeżdżał kilkanaście cm następnie obracał się zaledwie o kilkadziesiąt stopni i wracał o kilkadziesiąt cm. Nic nie dały zmiany w cm w nxt_go_cm dlatego zdecydowaliśmy się na inne rozwiązanie. 
-Drugim problemem, którego tym razem nie udało nam się rozwiązać było niewłaściwe zamykanie połączenia,​ mimo użycia triger_killall przy zamykaniu połączenia program wyrzucał wyjątek i konieczne było resetowanie powłoki prologa. 
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-11d.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