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/03/18 11:49]
gjn
pl:miw:miw08_mindstormsapi [2008/06/22 10:16]
gjn email restored
Linia 1: Linia 1:
-====== Opis ====== 
-Piotr Hołownia, <​holownia@student.agh.edu.pl>​ 
- 
-Build an API prototype in Prolog for NXT-based robots 
-  * low-level sensomotoric API, cover NXT funcs, provide control for motors, sensors, brick i/o 
-  * mid-level mimic LEGO env blocks?? does it make sens? 
-  * component-level:​ identify common robot parts that need control: wheel, sensor, arm, etc? 
-  * robot-level:​ identify robot classes: e.g. im/mobile, rolling vs. walking; provide means to describe common robot designs, like the four provided by LEGO 
-  * high-level provide services for different classes 
-Architecture:​ 
-  * MVC, the above is logical model 
-  * provide a V for every M component to support building of the interface 
-Issues: 
-  * communication 
-  * control 
-  * design 
-  * event handling, device polling 
-Ideas: 
-  * think how to build a Prolog API for NXT 
-  * investigate the [[http://​lejos.sourceforge.net/​|LeJOS]] [[http://​lejos.sourceforge.net/​p_technologies/​nxt/​nxj/​api/​index.html|NXJ API]] to remain compatible 
-  * investigate communication layer: one can use native NXT protocol, iCommand stack, other? 
-  * middle layer for: integrating logic layer with communication layer 
- 
-====== Spotkania ====== 
- 
-===== 08.03.04 ===== 
- 
-  * fenomenologicznie :) mamy klocki, jakby można zrobić API? 
-  * inżyniersko,​ mamy klocki, BT, jak się dogadać z Prologiem 
- 
- 
- 
-===== 080311 ===== 
-  * spec: czego chcemy od niższej warstwy, np.: synchr, etc. 
-  * próbujemy opisywać predykatem w prologu moduły ze środ. lego 
- 
-===== 080318 ===== 
-  * pakiety SWI? 
-  * prefixy high-level i mid-level 
-  * sensory cd 
- 
-====== Projekt ====== 
- 
- 
- 
-===== 08.03.04 ===== 
-{{:​pl:​miw:​miw08_mindstormsapi:​akcje.pl|:​pl:​miw:​miw08_mindstormsapi:​akcje.pl}} 
-{{:​pl:​miw:​miw08_mindstormsapi:​ruch.pl|:​pl:​miw:​miw08_mindstormsapi:​ruch.pl}} 
- 
-<code prolog> 
-nxt_motor(Motor,​Speed,​ Direction) :- 
-  var(Speed), % odczyt pr 
-  get_speed(Speed) 
-nxt_motor(Motor,​Speed,​ Direction) :- 
-  var(Dir), % odczyt dir 
-nxt_motor(Motor,​Speed,​ Direction) :- 
-  nonvar(S), 
-  set_speed(S),​ 
-nxt_motor(Motor,​Speed,​ Direction) :- 
-  Speed < 0, 
-nxt_motor(Motor,​reverse,​ Direction) :- 
-  nxt_motor(Motor,​Speed,​ _), 
-  Speedn is - Speed, 
-  nxt_motor(Motor,​Speedn). 
- 
-nxt_motor(Motor,​Speed,​ Time) :- 
-  create_timer(T1),​ %potrzebuje miec timery 
-  set_speed(M,​S),​ 
-  wakeup(T1,​Time,​nxt_motor(,​0,​_)). 
- 
-</​code>​ 
- 
-  nxt_motor(M,​S,​_),​S \= 0. 
- 
- 
-<code prolog> 
-nxt_motor(Motor,​Speed,​ Direction) :- 
-  var(Speed), % odczyt pr 
-  nxt_get_speed(Speed). 
- 
-nxt_get_speed(Speed) :- 
-  icmnd_get_speed(Speed). 
- 
-nxt_get_speed(Speed) :- 
-  ptcp_get_speed(Speed). 
- 
-</​code>​ 
- 
-===== 08.03.11 ===== 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​ruch2.pl|ruch2.pl}} 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​silnik.pl|silnik.pl}} 
-  * {{:​pl:​miw:​miw08_mindstormsapi:​akcje2.pl|akcje2.pl}} 
- 
- 
-====== Sprawozdanie ====== 
-===== 08.03.04 ===== 
-Podejście inżynierskie zawiesiłem. Spróbowałem tworzyć API wyższego poziomu przy założeniu,​ że mam dostępne pewne predykaty API niższego poziomu (ustawianie prędkości obrotowej serwomechanizmu,​ obracanie o zadany kąt). Jest to trudne do realizacji bez gotowych rozwiązań API niższego poziomu. Istotne jest, aby stworzyć mechanizmy działania, które w leJOS są dostępne w klasie Behavior i umożliwiają podejmowanie akcji po zajściu jakiegoś zdarzenia. Myślę, że należy skupić się na podejściu inżynierskim. 
- 
-===== 08.03.11 ===== 
-W pliku ruch2.pl zamieszczone są predykaty realizujące złożoną pracę silników: ruch pojazdu do przodu, do tyłu, skręcanie, obracanie. 
-W pliku silnik.pl znajduje się predykat nxtMotor, pozwalający w wybrany sposób poruszać silnikiem. 
-W pliku akcje2.pl są predykaty, które powinny obracać silnik z zadaną prędkością,​ o zadany kąt, odczytywać prędkość obrotową silnika, a także umożliwiać tworzenie timerów i triggerów. 
-Wprowadzenie triggerów pozwala dodać dla każdego z ruchów pojazdu warunek: "do napotkania przeszkody"​ i wiele innych możliwości. Np. jedź do napotkania przeszkody, skręcaj do napotkania przeszkody, rozpocznij jazdę na komendę dźwiękową. 
-W tym momencie predykaty z pliku akcja2.pl wypisują jedynie swój zamierzony cel, aby móc testować działanie. 
-** Wobec tego od realizujących warstwy niższe oczekuję wykonania w tym miejscu działających mechanizmów. Czyli:** 
-  * możliwość sterowania z Prologu ruchem silnika z zadana prędkością,​ zadanym kątem lub w nieskończoność,​ 
-  * możliwość używania timerów i triggerów. 
- 
-====== Materiały ====== 
-   * http://​mindstorms.lego.com/​Overview/​NXTreme.aspx 
-   * http://​mindstorms.lego.com/​eng/​community/​resources/​default.asp 
  
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