Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09a [2009/01/28 22:18] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09a [2019/06/27 15:50] (aktualna) |
zatem mogliśmy od razu przystąpić do realizacji algorytmu. | zatem mogliśmy od razu przystąpić do realizacji algorytmu. |
| |
Zaimplementowaliśmy algorytm "sprzątacza", w który robot miał za zadanie usunąć wszystkie przeszkody znajdujące się w odległości nie większej niż określona. Aby to zrealizować, obracał się on wokół własnej osi, a po wykryciu przeszkody przez czujnik sonarowy wstrzymywał ruch obrotowy, wykonywał ruch w kierunku przeszkody wypychając ją poza obszar to wysprzątania, a potem wracał na wcześniejszą pozycję i kontynuował ruch obrotowy, aż do sprawdzenia całego obszaru wokół siebie. Czujnik dotyku służył za awaryjny wyłącznik robota, który uaktywniał się także, gdy przesuwana przeszkoda była zbyt ciężka dla robota. | Zaimplementowaliśmy algorytm "sprzątacza", w którym robot miał za zadanie usunąć wszystkie przeszkody znajdujące się w odległości nie większej niż określona. Aby to zrealizować obracał się on wokół własnej osi, a po wykryciu przeszkody przez czujnik sonarowy wstrzymywał ruch obrotowy, wykonywał ruch w kierunku przeszkody wypychając ją poza obszar do wysprzątania, a potem wracał na wcześniejszą pozycję i kontynuował ruch obrotowy, aż do sprawdzenia całego obszaru wokół siebie. Czujnik dotyku służył za awaryjny wyłącznik robota, który uaktywniał się także, gdy przesuwana przeszkoda była zbyt ciężka dla robota. |
| |
<code prolog> | <code prolog> |
nxt_go_cm(-300,40), | nxt_go_cm(-300,40), |
sleep(10). | sleep(10). |
trigger_create(_,fakt,krecenie). | trigger_create(_,_,krecenie). |
| |
% Sprawdzenie, czy znaleziono przeszkodę | % Sprawdzenie, czy znaleziono przeszkodę |
=== Problemy === | === Problemy === |
| |
Niestety, szczególnie na początku zajęć, kilkukrotnie nieoczekiwanie robot przestawał wykonywać wysyłane mu polecenia i konieczne było jego wyłączenie i nawiązywanie komunikacji od nowa. W czasie testowania algorytmu okazywało się również, że jednak polecenia biblioteki NXT nie zawsze działają według naszych oczekiwań. | Niestety, szczególnie na początku zajęć, kilkukrotnie nieoczekiwanie robot przestawał wykonywać wysyłane mu polecenia i konieczne było jego wyłączenie i nawiązywanie komunikacji od nowa. W czasie testowania algorytmu okazywało się również, że jednak polecenia biblioteki NXT nie zawsze działają według naszych oczekiwań: |
| * funkcja odczytująca stan czujnika dotyku "nxt_touch(Value,force)" przez pewien czas zwracała wartości "181" i "1023" zamiast binarnych, |
| * przy użyciu funkcji obracającej robota "nxt_rotate(150,360)" realny kąt obrotu nie zgadzał się z żądanym, |
| * funkcja nxt_go_cm nie działała, gdy otrzymywała ujemny argument "Speed" - robot nie poruszał się do tyłu. Natomiast funkcja nxt_go reagowała prawidłowo. |
| |
=== Wnioski === | === Wnioski === |
| |
Ułatwieniem w konstruowaniu algorytmu byłaby bardziej rozbudowana dokumentacji biblioteki NXT. | Ułatwieniem w konstruowaniu algorytmu byłaby bardziej rozbudowana dokumentacja biblioteki NXT. |
| |