|
|
— |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-09c [2019/06/27 15:50] (aktualna) |
| ====== Laboratorium ====== |
| === Konstrukcja robota === |
| Na laboratorium korzystaliśmy z robota, który został zbudowany przez poprzednią grupę. Pozostawiony robot zawierał wszystko co potrzebowaliśmy, więc jakakolwiek modyfikacja nie była potrzebna. |
| === Zdjęcie robota === |
| {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:20080114irek.jpg?200|}} |
| === Algorytmy === |
| * Zadaniem robota była jazda po kwadracie. Robot jechał przez sekundę prosto, następnie skręcał o 90 stopni. Czynność tę wykonywał dopóki nie wrócił na miejsce z którego ruszył: |
| |
| kwadrat :- nxt_open, |
| nxt_go_sec(400,1), nxt_turn(400,120), |
| nxt_go_sec(400,1), nxt_turn(400,120), |
| nxt_go_sec(400,1), nxt_turn(400,120), |
| nxt_go_sec(400,1), nxt_turn(400,120). |
| |
| * Zadaniem robota było dojechanie do przeszkody, cofnięcie się, wykonanie obrotu o 180 stopni. Początkowo robot po wykonaniu obrotu kontynuował jazdę i zatrzymywał się na klaśnięcie, jednak gdy wszystkie grupy testowały swoje roboty, inne dźwięki zatrzymywały naszego robota. Z tego powodu fragment kodu, który był za to odpowiedzialny został wykomentowany. |
| |
| check_ultrasonic :- nxt_ultrasonic(Value,force), |
| Value < 30. |
| check_sound :- nxt_sound(Value,force), |
| Value > 50. |
| ultrasonic :- nxt_stop, |
| nxt_go_cm(-400,15), |
| nxt_rotate(400,60), |
| %nxt_go(400), |
| %trigger_create(_,check_sound,[nxt_stop,nxt_close]). |
| jazda :- nxt_open, |
| nxt_go(400), |
| trigger_create(_,check_ultrasonic,ultrasonic).'' |
| |
| * Zadaniem robota była jazda do przeszkody, cofnięcie się, wykonanie obrotu o 90 stopni. Zadanie miało być wykonywanie cyklicznie przez określoną ilość razy. Wystąpił jednak problem, który uniemożliwił implementacje tego algorytmu. Jest on opisany poniżej. |
| |
| === 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. 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 ? |
| |
| === Zmiany === |
| |
| * Wprowadzona zmiana, dotycząca korzystania z robotów zbudowanych przez grupy z poprzednich zajęć okazała się trafna. To dzięki niej od razu przystąpiliśmy do programowania robota. |
| * Można wprowadzić większą ilość przykładowych algorytmów o zróżnicowanym poziomie trudności. |
| |
| === Plik z laboratorium === |
| Plik zawierający opisane wyżej algorytmy: |
| {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:20080114irek.pl|}} |
| |
| |