|
|
pl:miw:2009:nxt_api_demo [2009/08/04 17:53] jsi08 |
pl:miw:2009:nxt_api_demo [2019/06/27 15:50] |
====== Opis ====== | |
Take the PlNXT API. Build tutorial and demo cases. | |
| |
Łukasz Bandała - feanaro@student.agh.edu.pl | |
| |
====== Spotkania ====== | |
===== 20090XYZ ==== | |
====== Projekt ====== | |
| |
===== Założenia ===== | |
| |
Celem projektu było przygotowanie demonstracji zastosowania PlNXT API. Zastanawiając się nad licznymi możliwościami | |
prezentacji potencjału połączenia języka prolog oraz klocków NXT, ostatecznie zdecydowałem się na budowę i oprogramowanie | |
robota umożliwiającego układanie kostki rubika. Język prolog doskonale nadaje się do rozwiązywania tego typu problemów. | |
| |
{{:pl:miw:2009:miw09_nxt_api_demo:kostka.png?100x100}} {{:pl:miw:2009:miw09_nxt_api_demo:lego_nxt_logo.png?250x50}} | |
| |
===== Konstrukcja ===== | |
| |
Podstawowym problemem była ograniczona ilość silników i elementów konstrukcyjnych. W pierwszej kolejności należało sprecyzować zadania robota: | |
| |
- Zmiana orientacji kostki w przestrzenii | |
- Ruch kostki | |
- Badanie rozmieszczenia kolorów na kostce | |
| |
Posiadając tylko 3 silniki można się spodziewać sporych problemów z wykonaniem wszystkich tych czynności. Okazuje się jednak, że problemem tym zajął się ktoś już kiedyś. | |
| |
Konstrukcja [[http://www.tiltedtwister.com|Tilted Twister]] jest dokładnie tym czego poszukiwałem. Wykorzystująca wszelkie elementy w podstawowym zestawie NXT w sposób wysoce optymalny, umożliwia wykonywanie wszystkich wymienionych powyżej czynności. Można to zobaczyć [[http://www.youtube.com/watch?v=5fAn5A0HbhU|tutaj]]. | |
| |
{{:pl:miw:2009:miw09_nxt_api_demo:dsc00242.jpg|Zbudowany Titled Twister}} | |
| |
Kompletną instrukcję budowy można pobrać ze [[http://www.tiltedtwister.com/download.html|strony projektu]]. Ponadto znajdują się tam również kody źródłowe dla C++. | |
| |
===== Oprogramowanie ===== | |
==== Wstęp ==== | |
Posiadając już zbudowaną konkretną konstrukcję, nie pozostało mi nic innego jak przystąpić do próby napisania oprogramowania w języku Prolog z wykorzystaniem biblioteki [[pl:plnxt:start|PlNXT]]. | |
| |
Biblioteka składa się z kilku modułów. Najbardziej zewnętrznymi (z punktu widzenia użytkownika) z nich są 3 następujące: nxt_movment, threads oraz nxt_sensomoto. Pierwszy jest skierowany do podstawowych robotów jeżdżących. Stąd jego mała przydatność w tym projekcie. Druga dotyczy wywoływaczy (triggers) oraz liczników. Jak okazało się podczas prac, również ten moduł jest mało użyteczny przy oprogramowywaniu twistera. Trzecia natomiast posiada podstawowe czynności związane z komponentami NXT, co okazało się zdecydowanie nabardziej przydatne. | |
| |
==== Ruchy i obroty ==== | |
| |
W celu ujednoznacznienia wykorzystywanych zwrotów, wprowadziłem drobny podział w nazewnictwie: | |
* Kostka zbudowana jest z klocków ( 8 trójściennych, 6 jednościennych oraz 12 dwuściennych). To daje w sumie 54 kolorowe kwadraty na kostce. | |
* **Ruchem** nazywać będę zmianę rozmieszczenia kolorowych kwadratów na kostce. Tym samym **ruch** zmienia rozmieszczenie klocków w kostce. Odpowiednia sekwencja **ruchów** powodować może rozwiązanie kostki. | |
* **Obrotem** nazywać będę zmianę jedynie orientacji kostki w przestrzenii. Tym samym nie umożliwiają one rozwiązania kostki. | |
| |
=== Obrót względem osi pionowej === | |
| |
Jest to podstawowy obrót | |
| |
=== Obrót względem osi poziomej === | |
| |
==== Czujniki ==== | |
| |
===== Algorytm ===== | |
===== Realizacja ===== | |
====== Sprawozdanie ====== | |
====== Prezentacja ====== | |
====== Materiały ====== | |