Różnice

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

Odnośnik do tego porównania

pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09a [2009/01/31 20:35]
jsi08
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090121-09a [2019/06/27 15:50]
Linia 1: Linia 1:
-==== Sprawozdanie z laboratorium nr 5 ===== 
----- 
- 
- 
-Data wykonania: **21.01.2009,​ godz. 9.30** 
- 
-Autorzy: **Damian Dudziński, Maciej Fabia, Szymon Frenkel** 
- 
----- 
- 
-=== Realizacja === 
- 
-Zastaliśmy już złożonego robota "​Franek",​ 
- 
-korzystał on z dwóch sensorów: 
-  * czujnika sonarowego, 
-  * czujnika dotyku; 
- 
-zatem mogliśmy od razu przystąpić do realizacji algorytmu. 
- 
-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> 
-:- consult('​plnxt.pl'​). 
- 
-start:- 
- nxt_open, 
- krecenie, 
- trigger_create(_,​pushed,​[nxt_stop,​nxt_close]). 
-  
-krecenie :- 
- nxt_rotate(150,​360),​ 
-        sleep(1), % Chwila przerwy 
- trigger_create(_,​przeszkoda,​wypychanie). 
-  
-wypychanie :- 
- nxt_stop, 
- nxt_go_cm(300,​40),​ 
- sleep(10), 
- nxt_go_cm(-300,​40),​ 
-        sleep(10). 
- trigger_create(_,​_,​krecenie). 
-  
-% Sprawdzenie,​ czy znaleziono przeszkodę 
-przeszkoda :- 
- nxt_ultrasonic(Value,​force),​ 
- Value < 20. 
-  
-% Sprawdzenie,​ czy sensor dotyku jest wciśnięty. 
-pushed :- 
- nxt_touch(Value,​force),​ 
- Value=1. 
-  
-:- start. 
-</​code>​ 
-{{:​pl:​mindstorms:​studenci:​przedmioty:​jsi:​jsi2008:​sprzatacz.pl|}} 
- 
-=== 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ń: 
-  * 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"​ - Franek nie poruszał się do tyłu. Natomiast funkcja nxt_go reagowała prawidłowo. 
- 
-=== Wnioski === 
- 
-Ułatwieniem w konstruowaniu algorytmu byłaby bardziej rozbudowana dokumentacja biblioteki NXT. 
  
pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090121-09a.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