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 - 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: 2017/07/17 08:08 (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