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_mindstormscontrolj [2008/05/20 03:23]
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 ====== 
- 
-===== 08.02.26 ===== 
-  * testowanie komunikacji iCommand 
- 
- 
-===== 080311 ===== 
-  * próba spięcia Prologu z Javą, [[http://​www.swi-prolog.org/​packages/​jpl/​|JPL]] 
-  * przegląd działania/​sensowności klas icommand 
-  * nieob 
- 
- 
-===== 080318 ===== 
-  * j.w. 
- 
- 
- 
-===== 080401 ===== 
-  * ciała predykatów z JPL 
- 
- 
-===== 080415 ===== 
-  * impl. brakujących?​ dodatkowych funkcji silnika 
-  * specyfikacji funkcji kontroli brick: sound, display, filesystem 
-  * przemyslenie integracji [[miw08_mindstormsapi]] 
- 
- 
- 
-===== 080429 ===== 
-  * tutorial instalacji 
-  * przeglad funkcj lejos/​icommand -> z moglibysmy dodać w warstei movement/​behavioral (subsumption) 
- 
-===== 080520 ===== 
-  * beta sprawozd? ​ 
- 
-====== Projekt ====== 
- 
- 
- 
- 
-===== 080318 ===== 
- 
-  * Udało się przekopać, połączyć i odpalić naraz wszystkie warstwy: 
-Prolog -> JPL -> iCommand -> LEGO 
- 
-  * Niestety wciąż występują dziwne problemy - testowe programy lubią się wieszać w dziwnych okolicznościach (ten sam kod raz działa raz nie). 
-Podejrzana komunikacja bluetooth - wciąż powtarzają się problemy z nawiązaniem komunikacji 
- 
-  * Zakres prac: 
-Owinięcie funkcjonalności potrzebnej do obsługi 4 podstawowych czujników + 3 silników? Niby iCommand dostarcza możliwość kontrolowania innych czujników, ale brak możliwości przetestowania (brak innych czujników - np czujnik koloru). 
- 
-  * Sugeruję założyć, że silniki i czujniki są zawsze podpięte do tych samych - standardowych portów ustalonych przez LEGO - brak dodatkowych i zupełnie niepotrzebnych nakładów na konfigurację. 
- 
-  * Z jaką dokładnością owijamy iCommand? 1:1 czy trochę mądrzej? ​ 
-Sugerują tę drugą opcję - żeby zachować '​filozofię'​ prologu, a nie bawić się w gettery/​settery i przechowywanie kilkunastu obiektów. 
-<code prolog> 
-% 
-%    Proponowany zestaw predykatów:​ 
-% 
- 
-%Konfiguracja:​ 
-open(H) 
-close(H) 
- 
-%Czujnik dotyku: 
-touchPressed(H,​Pressed) 
- 
-%Czujnik głośności:​ 
-loudness(H,​Loudness) 
- 
-%Ultradźwiękowy czujnik odległości:​ 
-distance(H,​Distance) 
- 
-%Czujnik światła: 
-lightPercentage(H,​Light) 
-led(H, ON) 
- 
-%Silniki: 
-motorSpeed(Port,​ H, Motor, Speed) 
-motorPos(Port,​ H, Motor, Pos, ReturnAfter) 
-</​code>​ 
- 
-Obsługa czujników może okazać się niepraktyczna (brak callbacków). ​ 
-Wyjdzie w praktyce... 
- 
-FIXME 
-  * prefix namespace icmdMotorSpeed,​ icmdTouch 
-  * rozpisanie predykatów... 
-  * połącznie JPL j.w. 
-  
- 
- 
- 
-===== 080401 ===== 
-Zaimplementowano i przetestowano predykaty realizujące następujące funkcje: 
-  * Odczyt czujnika nacisku 
-  * Odczyt czujnika siły dźwięku 
-  * Odczyt czujnika odległości 
-  * Odczyt czujnika natężenia światła 
-  * Ustawianie ON/OFF diody LED w czujniku światła 
-  * Ustawianie prędkości silników dla pracy w nieskończoność (w obydwu kierunkach) 
-  * Odczyt prędkości silników (tylko prędkości,​ __nie kierunku__) - najprawdopodobniej istnieje możliwość odczytania również kierunku. Wymaga to zagłębienia się w klasy iCommand realizujące niższą warstwę komunikacji. 
- 
-Istnieje możliwość zaimplementowania pracy silników tak aby wykonywały zadaną ilość obrotów lub obrót do zadanej pozycji. 
-Implementacja jest możliwa zarówno z uwolnieniem sterowania w chiwli wywołania funkcji, jak i ze zwolnieniem w chwili dotarcia do zadanej pozycji. 
-__Wg dokumentacji iCommand, taki tryb pracy może nie działać prawidłowo z firmware'​m firmy LEGO.__ 
- 
-Predykaty wraz zaimplementowanymi ciałami: 
-{{:​pl:​miw:​miw08_mindstormscontrolj:​iCmd.pl|iCmd.pl}} 
- 
- 
- 
- 
- 
- 
- 
-===== 080415 ===== 
-Kolejna wersja zestawu predykatów,​ uwzględniająca niektóre uwagi: 
-{{:​pl:​miw:​miw08_mindstormscontrolj:​nxt_iCommand.pl|nxt_iCommand.pl}} 
- 
-Dodatkowe funkcjonalności iCommand: 
-  * pobranie informacji o stanie baterii. Jest zaimplementowane. Owinąłem JPL'em i przetestowałem - Działa. 
-  * keepAlive - powstrzymanie robota od wyłączenia się w przypadku dłuższego nieużywania. Opatrzone komentarzem "​UNTESTED"​ - odrzuciłem. 
-  * playSoundFile,​ playTone, stopPlaying - odgrywanie melodyjki z pliku zapisanego w bricku, lub tonu o zadanej częstotliwości i czasie trwania. Jest zaimplementowane. Owinąłem JPL'em i przetestowałem - Działa. 
-  * operacje na plikach wewnątrz NXT, transfer itp. - jest dostępnych kilka funkcji w iCommand. Większość opatrzona komentarzem:​ UNFINISHED lub UNTESTED. Komentarze w kodzie źródłowym również nie są zbyt obiecujące:​ "//​ !! * Could crash due to receiving..."​ - odrzuciłem. 
- 
-Połączenie z projektem mindstormscontrolapi (min. różnice): 
-  * Problem wspomniany w projekcie mindstormscontrolapi - pobieranie prędkości zerowej "​0"​ - rozwiązałem już w poprzedniej wersji iCmd.pl 
-  * Dla silnika, zamiast dwóch różnych predykatów uruchamiania silnika z zadaną prędkością (forward, backward) proponuję zrobić jeden (z prędkością podawaną ze ze znakiem "​-"​) - wydaje się być bardziej intuicyjne. 
-  * Zaproponowałem swoje nazewnictwo z dwóch powodów: Krótsze nazwy to lepsze nazwy, poza tym wersja nazw w nxt_iCmd wydaje mi się być bardziej intuicyjna (kwestia gustu - można zmienić). 
-  * Dodałem kilka nowych funkcjonalności (pobieranie kąta położenia silnika, obsługa dźwięków itp.) 
-  * Zasadniczo reszta cech jest kompatybilna z projektem mindstormsapi 
- 
-====== Sprawozdanie ====== 
- 
-===== 080226 - 080318 ===== 
-Problemy z komunikacją BT pod Windows. 
-W ogóle nie udało się dogadać przez BT z poziomu firmowej aplikacji LEGO [sic!] 
-Zanim udało się porozmawiać przez iCommand należało: 
-  - zrobić upgrade sterowników BT 
-  - zrobić upgrade stack'​a BT 
-  - skopiować plik konfiguracyjny do katalogu użytkownika. W moim przypadku: C:​\Documents and Settings\gutek\icommand.properties **(Okazuje się, że wbrew dokumentacji,​ iCommand szuka pliku konfigracyjnego __tylko__ w tym katalogu)** ​ 
-  - nie przejmować się tym, że komenda sprawdzająca poprawność instalacji nie działa. Nie ma prawa działać: 
-<code java> 
-java -jar icommand.jar 
-</​code> ​ 
- 
-Wciąż występują problemy z komunikacją BT: 
-  * czasami problem z nawiązaniem komunikacji (jak już raz zaskoczy to później idzie) 
-  * czasami wieszanie się programów (zarówno z prologu jak i bezpośrednio z Eclipsa) (być może nie jest to wina BT?) 
- 
-Okazuje się, że LEGO nie lubią się dogadywać z BT w niektórych laptopach Toshiby i Della (używam Toshiby). 
-Używam BT Toshiba Stack (lego nie gwarantuje kompatybilności Toshiba stack'​a z klockami) - być może trzeba będzie się przerzucić na coś innego. 
- 
- 
- 
-===== 080429 ===== 
-Wyciąg z API iCommand oraz leJOS - Funkcjonalność,​ której użycie może okazać się przydatne w przyszłości:​ 
- 
-{{:​pl:​miw:​miw08_mindstormscontrolj:​funkcjonalnosc_icommand_oraz_lejos.txt|Wyciąg z API}} 
- 
-Tutorial instalacji: Prologa->​JPL->​iCommand->​LEGO:​ 
- 
-{{:​pl:​miw:​miw08_mindstormscontrolj:​instalacja_tutorial_win.txt|Tutorial}} 
- 
- 
-====== Materiały ====== 
  
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