Różnice

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

Odnośnik do tego porównania

pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-09c [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== 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|}}
 +
  
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090114-09c.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