Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11d [2009/01/25 11:51] jsi08 utworzono |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-11d [2019/06/27 15:50] (aktualna) |
===== Konstrukcja ===== | ===== Konstrukcja ===== |
Robot, którego używaliśmy na zajęciach był już przygotowany, był to jeden z przykładów z instrukcji LEGO. | Robot, którego używaliśmy na zajęciach był już przygotowany, był to jeden z przykładów z instrukcji LEGO. |
| {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:irek_21_01_09_1100.jpg|}} |
===== Algorytmy ===== | ===== Algorytmy ===== |
Na zajęciach zdążyliśmy zaimplementować jeden algorytm pt. "Sprzątacz". Jego zachowanie wyglądało następująco: | Na zajęciach zdążyliśmy zaimplementować jeden algorytm pt. "Sprzątacz". Jego zachowanie wyglądało następująco: |
| |
:- consult('plnxt.pl'). | :- consult('plnxt.pl'). |
| |
start:- | start:- |
nxt_open, | nxt_open, |
go_on_buddy. | go_on_buddy. |
| |
go_on_buddy :- | go_on_buddy :- |
nxt_rotate(200,720), | nxt_rotate(200,720), |
trigger_create(_,obczajka,wypchnij). | trigger_create(_,obczajka,wypchnij). |
| |
wypchnij :- | wypchnij :- |
nxt_stop, | nxt_stop, |
nxt_stop, | nxt_stop, |
go_on_buddy. | go_on_buddy. |
| |
obczajka :- | obczajka :- |
nxt_ultrasonic(Value,force), | nxt_ultrasonic(Value,force), |
Value < 30. | Value < 30. |
| |
zamknij :- | zamknij :- |
trigger_killall, | trigger_killall, |
| |
===== Problemy, propozycje zmian ===== | ===== 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. |