Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
pl:miw:miw08_mindstormscontrolj [2008/05/20 05:01]
miw
pl:miw:miw08_mindstormscontrolj [2008/06/01 16:32]
gjn
Linia 1: Linia 1:
-====== Opis ====== 
-Paweł Gutowski 
- <​pawel.gutowski@gmail.com>​ 
  
-Communication stack: ​ 
-  * Prolog -- control logic in [[http://​www.swi-prolog.org|Prolog]] program 
-  * Prolog <-> Java -- interface, use JPL and/or Logtalk 
-  * [[http://​lejos.sourceforge.net/​|LeJOS]] [[http://​lejos.sourceforge.net/​p_technologies/​nxt/​icommand/​icommand.php|iCommand]] -- communication w/ NXT in Java  
-  * Bluetooth -- controlled from iCommand 
-  * Mindstorms NXT. 
-Idea:  
-  * wrap the [[http://​lejos.sourceforge.net/​p_technologies/​nxt/​icommand/​api/​index.html|iCommand API]] with Prolog predicates. 
-  * investigate event-related issues 
-  * build some simple control logic in Prolog 
- 
- 
-====== Sprawozdanie ====== 
-===== Co chcemy osiągnąć?​ ===== 
-  * Chcemy skonfigurować środowisko deweloperskiego w Windows XP w taki sposób aby umożliwić sterowanie klockami LEGO z poziomu Prologu. Sterowanie w założeniu ma odbywać się poprzez Bluetooth, w czasie rzeczywistym. "​Program"​ Prologu będzie wykonywany na maszynie PC, zaś odczyty z czujników oraz rozkazy dla silników będą wysyłane w czasie rzeczywistym via bluetooth. 
-  * Chcemy napisać zestaw predykatów realizujących funkcjonalność podstawowych elementów robotów (rozkazy dla silnika, odczyt z każdego z czujników itp.) 
-  * Chcemy uzgodnić interfejs (sposób wywołań predykatów) z kolegą pracującym nad [[miw08_mindstormsapi|projektem mindstormsapi]],​ którego zakres obejmuje prace nad wyższymi warstwami komunikacji. 
- 
-===== Jak chcemy to osiągnąć?​ ===== 
-  * Do komunikacji PC <-> klocki LEGO poprzez bluetooth użyjemy biblioteki **iCommand** - jest to biblioteka napisana w Javie, umożliwiająca sterowanie klockami w czasie rzeczywistym,​ poprzez bluetooth. 
-  * iCommand'​a będziemy wywoływać z Prologu poprzez **JPL** jako, że umożliwia komunikację pomiędzy prologiem a kodem w Javie. 
- 
-Ostatecznie utworzone przez nas warstwy komunikacji przyjmą następującą postać: 
-^ Prolog ​              | <- Wraz z zestawem napisanych przez nas predykatów | 
-^ JPL                  |                      | 
-^ iCommand ​            ​| ​                     | 
-^ Sterowniki bluetooth | <- bluetooth stack + imprementacja dostarczona wraz z iCommand | 
-^ Klocki LEGO NXT      |                      | 
- 
-===== Co udało się zrobić? ===== 
-  * Przede wszystkim udało się, zgodnie z założeniami,​ zestawić i uruchomić wszystkie warstwy komunikacji:​ 
-Prolog -> JPL -> iCommand -> LEGO 
-  * Napisano zestaw predykatów służących do sterowania robotem: [[:​pl:​miw:​miw08_mindstormscontrolj:​nxt_iCommand.pl|nxt_iCommand.pl]]. Predykaty wywołują poprzez JPL metody z klas iCommand'​a. Zestaw ww. predykatów,​ po kosmetycznych poprawkach został użyty w [[miw08_mindstormsapi|projekcie mindstormsapi]]. 
-Zestaw utworzonych predykatów wraz z krótkim opisem: 
-<code prolog> 
-:- module(nxt_iCmd,​[ 
- nxt_iCmd_open/​0, ​              % Rozpoczęcie komunikacji/​pracy z klockami 
- nxt_iCmd_close/​0, ​             % Zakończenie komunikacji/​pracy z klockami 
- nxt_iCmd_distance/​2, ​          % Odczytanie odległości z ultradźwiękowego czujnika dystansu 
- nxt_iCmd_pressed/​2, ​           % Sprawdzenie czy czujnik dotyku jest wciśnięty czy nie 
- nxt_iCmd_lightPercentage/​2, ​   % Odczytanie wartości natężenia światła z czujnika nat. światła 
- nxt_iCmd_LED/​2, ​               % Ustawienie (włączenie lub wyłączenie) diody LED w czujniku natężenia światła 
- nxt_iCmd_loudness/​2, ​          % Odczytanie natężenia dźwięku z czujnika głośności 
- nxt_iCmd_batteryMilliVolt/​1, ​  % Odczytanie stanu baterii (napięcie) 
- nxt_iCmd_playSoundFile/​2, ​     % Odegranie pliku dźwiękowego zapisanego wewnątrz klocków 
- nxt_iCmd_stopPlayingSound/​0, ​  % Zatrzymanie odgrywania wszystkich dźwięków 
- nxt_iCmd_playTone/​2, ​          % Zagranie dźwięku o określonej częstotliwości i długości trwania 
- % motors 
- nxt_iCmd_stopMotor/​1, ​         % Zatrzymanie wybranego silnika (z użyciem hamulca) 
- nxt_iCmd_setMotorSpeed/​2, ​     % Ustawienie prędkości wybranego silnika 
- nxt_iCmd_getMotorSpeed/​2, ​     % Odczyt prędkości wybranego silnika 
- nxt_iCmd_rotateMotorToAngle/​3,​ % Nakazanie wybranemu silnikowi ustawienie się w zadanej pozycji (dążenie z zadaną prędkością) 
- nxt_iCmd_getMotorAngle/​2, ​     % Odczyt aktualnego położenia wybranego silnika 
- nxt_iCmd_resetMotorAngle/​1 ​    % Kalibracja położenia silnika - resetowanie. 
-    ]). 
-</​code>​ 
-  * Napisano [[pl:​miw:​miw08_mindstormscontrolj:​developertutorial|tutorial instalacji i konfiguracji]] środowiska deweloperskiego,​ ułatwiający powtórzenie wyników prac udokumentowanych w niniejszym sprawozdaniu 
-  * Wykonano przegląd bibliotek iCommand oraz LeJOS w poszukiwaniu funkcjonalności mogących przydać się w dalszych pracach. Ciekawsze klasy/​metody wraz z opisem zaprezentowano w [[pl:​miw:​miw08_mindstormscontrolj:​apibrief|wyciągu z API iCommand oraz leJOS]]. 
- 
-===== Jakie napotkano przeszkody? ===== 
-  * Problemy przy instalacji iCommand. Problemy wynikały z drobnych (aczkolwiek dotkliwych) błędów w dokumentacji. Szerszy opis, oraz sposoby ominięcia można znaleźć w [[pl:​miw:​miw08_mindstormscontrolj:​developertutorial|tutorialu]]. 
-  * Problemy z bluetoothem. Niestety firma LEGO nie zapewnia kompatybilności ze wszystkimi dostawcami sprzętu i oprogramowania dla bluetooth. Niektóre laptopy Toshiba oraz Dell mogą mieć problemy - więcej w [[pl:​miw:​miw08_mindstormscontrolj:​developertutorial|tutorialu]]. 
-  * Napotkano problem przy odczycie kierunku obrotu silniczka. Nie ma problemu z odczytem prędkości z jaką w danej chwili obraca się silnik, jednak nie udało się odczytać jego kierunku. 
- 
-===== Materiały utworzone w trakcie prac nad projektem ===== 
-  * {{:​pl:​miw:​miw08_mindstormscontrolj:​nxt_iCommand.pl|nxt_iCommand.pl}} - Ostateczna wersja predykatów służących do sterowania robotem. 
-  * [[pl:​miw:​miw08_mindstormscontrolj:​developertutorial|Tutorial instalacji i konfiguracji]] - How to - instalacja i konfiguracja środowiska deweloperskiego - opis ułatwiający powtórzenie wyników prac opisanych w niniejszym sprawozdaniu. 
-  * [[pl:​miw:​miw08_mindstormscontrolj:​apibrief|Wyciąg z API iCommand oraz leJOS]] - Interesujące funkcjonalności iCommand oraz LeJOS, które mogą zostać w przyszłości wykorzystane podczas rozwijania niniejszego projektu. 
-  * [[pl:​miw:​miw08_mindstormscontrolj:​history|Historia]] - Zapis historii prac nad niniejszym projektem. 
pl/miw/miw08_mindstormscontrolj.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