Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_mindstormsapi [2008/06/12 02:01]
miw
pl:miw:miw08_mindstormsapi [2008/06/22 10:16]
gjn email restored
Linia 1: Linia 1:
-====== PlNXT ====== 
  
-PlNXT to API w Prologu do obsługi [[http://​mindstorms.lego.com/​eng/​Overview/​default.aspx|LEGO Mindstorms NXT]] 
- 
-Celem projektu było zaimplementowanie funkcji niskiego poziomu (np. obracanie silnikiem, odczyt sensorów) oraz wyższego (np. jazda do przodu przez zadany czas, wykonanie skrętu w lewo o zadany kąt z zadanym promieniem). 
- 
-Udało się założone cele zrealizować w zadowalającym stopniu. Są rzeczy, które warto poprawić. Zachęcam do zapoznania się z opisem. 
- 
-====== Opis warstw ====== 
- 
-Projekt jest podzielony na następujące wartswy: 
-  * najniższa warstwa (nxt_actions),​ 
-  * średnia warstwa (nxt_sensomoto),​ 
-  * najwyższa warstwa (nxt_movement). 
- 
- 
-===== Warstwa nxt_actions ===== 
- 
-Warstwa odpowiada za komunikację z NXT. Mamy do dyspozycji predykaty poruszające silnikami, odczytującymi dane z sensorów, itp. W tej warstwie można zastosować różne systemy komunikacji. Do tej pory zaimplementowane zostały dwa: 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​080612:​nxt_actions_icommand.pl|nxt_actions_icommand}} - komunikacja z użyciem [[http://​lejos.sourceforge.net/​p_technologies/​nxt/​icommand/​icommand.php|iCommand]],​ 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​080612:​nxt_actions_sockets.pl|nxt_actions_sockets}} - komunikacja z użyciem socketów (dziełko kolegi [[pl:​miw:​miw08_mindstormscontrolc|Ziółkowskiego]]). 
- 
-Dowolną inna implementację komunikacji można stworzyć bazując na pliku {{:​pl:​miw:​miw08_mindstormsapi:​080612:​nxt_actions_dummy.pl|nxt_actions_dummy.pl}}. 
- 
-Ograniczeniem jest to, że nazwy predykatów eksportowanych muszą pozostać takie same. Nie ma także możliwości wprowadzenia niczego nowego bez uwzględnienia tego w warstwie wyższej. Dlaczego? Jest to jedna z warstw projektu, ale wydzielona tylko, aby umożliwić wstawienie w jej miejsce różnych alternatywnych wersji. **Warstwa nxt_actions nie stanowi części API. Nie powinna być używana w projektach bazujących na PlNXT. Nie ma takiej potrzeby.** 
- 
-===== Warstwa nxt_sensomoto ===== 
- 
-Warstwa bazuje na nxt_actions. To, co zostało zaimplementowane w niższej warstwie, w tej jest obudowane w logikę. Zatem mamy tutaj: poruszanie silnikami, odczyt sensorów, odczyt napięcia baterii, odtworzenie pliku dźwiękowego zapisanego w pamięci NXT, odtworzenie dźwięku o podanej częstotliwości. 
-Dokumentacja:​ [[http://​student.agh.edu.pl/​~holownia/​plnxt/​nxt_sensomoto.html|nxt_sensomoto]] 
- 
-===== Warstwa nxt_movement ===== 
- 
-Warstwa dostarcza predykaty realizujące złożoną pracę silników: ruch pojazdu do przodu, do tyłu, skręcanie, obracanie, ruch do napotkania przeszkody. 
-Dokumentacja:​ [[http://​student.agh.edu.pl/​~holownia/​plnxt/​nxt_movement.html|nxt_movement]] 
- 
- 
-====== Dodatkowe komponenty ====== 
- 
- 
-===== Threads ===== 
- 
-Do implementacji złożonych algorytmów sterowania NXT niezbędne jest wprowadzenie mechanizmów opóźniania akcji w czasie oraz uwarunkowanie akcji od pewnych zdarzeń. Np. chcemy, żeby po 10 sekundach od wciśnięcia sensora dotyku urządzenie odtworzyło plik dźwiękowy. 
- 
-W pliku {{:​pl:​miw:​miw08_mindstormsapi:​080612:​threads.pl|threads.pl}} znajdują się predykaty umożliwiające tworzenie triggerów i timerów z wykorzystaniem wątków w SWIProlog. Trigger uruchamia akcję pod warunkiem zajścia zdarzenia. Timer uruchamia akcję po wyznaczonym czasie. 
-Dokumentacja:​ [[http://​student.agh.edu.pl/​~holownia/​plnxt/​threads.html|threads]] 
- 
- 
-====== Przygotowanie środowiska ====== 
- 
-===== Z użyciem iCommand ===== 
- 
-Krótka instrukcja konfiguracji połączenia BT z wykorzystaniem iCommand dla użytkowników systemu Windows: 
- 
-(niebawem będzie). 
- 
-Chcąc używać API, należy do katalogu projektu skopiować następujące pliki: 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​080612:​nxt_actions_icommand.pl|nxt_actions_icommand.pl}},​ 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​080612:​nxt_sensomoto.pl|nxt_sensomoto.pl}},​ 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​080612:​nxt_movement.pl|nxt_movement.pl}},​ 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​080612:​threads.pl|threads.pl}}. 
- 
-W programie należy załadować moduły, których chcemy używać. Np. 
-<code prolog> 
-:- use_module(nxt_movement). 
-:- use_module(nxt_sensomoto). 
-:- use_module(nxt_thread). 
-</​code>​ 
- 
-Aby sprawdzić poprawność przygotowania środowiska,​ zachęcam do uruchomienia pliku testowego {{:​pl:​miw:​miw08_mindstormsapi:​test.pl|test.pl}}. Jest on przygotowany dla robota [[http://​mindstorms.lego.com/​Overview/​MTR_Tribot.aspx|TriBot]]. Można dzięki niemu szybko sprawdzić poprawność odczytów czujników oraz działanie silnika. Dla [[http://​mindstorms.lego.com/​Overview/​MTR_Tribot.aspx|TriBot]] także ruch złożony (jazda do przodu, do tyłu, skręcanie, obracanie). 
- 
- 
-====== Laboratorium przygotowane w ramach projektu ====== 
- 
-[[pl:​mindstorms:​lab:​lab5|Laboratorium]] przewidziane na 1,5 godziny składa się z obserwowania testowego programu oraz implementacji wybranego algorytmu. 
- 
- 
- 
- 
-====== Co należy poprawić? ====== 
- 
-  * Moduł komunikacyjny nxt_actions_icommand nie daje możliwości odczytu kierunku obrotu silnika. Nie jest to zaimplementowane w samym iCommand. 
-  * Odczytu sensorów dokonuje się podając numer portu. Powinna być też możliwość łatwiejszego odczytu bez podawania portu. Port byłby wtedy pobierany z konfiguracji robota. 
-  * Musi istnieć możliwość usuwania wcześniej utworzonych timerów i triggerów. 
- 
- 
-====== Historia prac nad projektem ====== 
- 
-[[pl:​miw:​miw08_mindstormsapi:​historia|Historia]] - spotkania, kolejne wersje projektu, sprawozdania cząstkowe. 
pl/miw/miw08_mindstormsapi.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