Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09c [2009/01/26 09:59] jsi08 problemy |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09c [2019/06/27 15:50] (aktualna) |
nxt_go_cm(-400,20), | nxt_go_cm(-400,20), |
nxt_pincer(close). | nxt_pincer(close). |
sprzataj. | sprzataj. |
obrot(0). | obrot(0). |
obrot(X) :- | obrot(X) :- |
nxt_rotate(400,10), | nxt_rotate(400,10), |
Przyczyna błędu jest w komendzie: nxt_stop - naszym celem, było to, by zatrzymała komendę obrotu o 360 stopni (nxt_rotate(400,360)) i faktycznie - zatrzymywała, ale oprócz tego miała wpływ również na komendę jazdy do tyłu, tzn. rozkaz nxt_go_cm(-400,10) był anulowany. | Przyczyna błędu jest w komendzie: nxt_stop - naszym celem, było to, by zatrzymała komendę obrotu o 360 stopni (nxt_rotate(400,360)) i faktycznie - zatrzymywała, ale oprócz tego miała wpływ również na komendę jazdy do tyłu, tzn. rozkaz nxt_go_cm(-400,10) był anulowany. |
| |
check_ultrasonic :- | check_ultrasonic :- |
nxt_ultrasonic(Value,force), | nxt_ultrasonic(Value,force), |
Value < 25, | Value < 25, |
write(Value). | write(Value). |
| |
ruch :- | ruch :- |
nxt_pincer(open), %%% | nxt_pincer(open), %%% |
nxt_go_cm(-400,10), %%% | nxt_go_cm(-400,10), %%% |
nxt_go_cm(400,10). %%% | nxt_go_cm(400,10). %%% |
| |
ultrasonic :- | ultrasonic :- |
nxt_stop, %%% | nxt_stop, %%% |
ruch. | ruch. |
| |
sprzataj :- | sprzataj :- |
nxt_open, | nxt_open, |
trigger_create(_,check_ultrasonic,ultrasonic), | trigger_create(_,check_ultrasonic,ultrasonic), |
[reszta kodu be zmian] | [reszta kodu be zmian] |
| |
ultrasonic :- | ultrasonic :- |
nxt_stop, | nxt_stop, |
trigger_killall, %%% | trigger_killall, %%% |
ruch. | ruch. |
| |
sprzataj :- | sprzataj :- |
nxt_open, | nxt_open, |
trigger_create_noreturn(_,check_ultrasonic,ultrasonic), %%% | trigger_create_noreturn(_,check_ultrasonic,ultrasonic), %%% |
| |
Próbowaliśmy tez tworzyć triggera jak poprzednio przez trigger_create/3, ale kończyło się to identycznym błędem. | Próbowaliśmy tez tworzyć triggera jak poprzednio przez trigger_create/3, ale kończyło się to identycznym błędem. |
| |
| Inne problemy: |
| * Robot pozostawiony przez poprzednią grupę miał odwrotnie podpięte silniki. Zamiast skręcać w prawo, skręcał w lewo. |
| * Silniki robota, nie wyłączały się jednocześnie przez komendę nxt_stop. Robot zamiast zatrzymywać równocześnie koła, najpierw zatrzymywał jedno, a dopiero po chwili drugie. |
| * Użycie funkcji trigger_create więcej niż jeden raz powodowało zwrócenie błędu. Po jego otrzymaniu dalsza komunikacja z robotem była niemożliwa. Konieczne było zrestartowanie robota oraz ponowne uruchomienie prologa. Wyświetlany był błąd: |
| |
| **ERROR: Arithmetic: `force/0' is not a function ^ Exception: (19) _L3673 is force//256 ?** |
| |
**Wnioski:** | **Wnioski:** |
| |
=== Zmiany === | === Zmiany === |
* | * Można wprowadzić większą ilość przykładowych, sprawdzonych algorytmów o zróżnicowanym poziomie trudności (najlepiej skorzystać z algorytmów napisanych przez studentów, które działają - czyli pewnie te bez triggerów) |
| |
=== Plik z laboratorium === | === Plik z laboratorium === |