PLNXT Wprowadzenie

LEGO Mindstorms NXT jest uniwersalną platformą, która oferuje konstruowanie robotów, jak również rozwiązania programistycznie. Jeśli chodzi o programowanie Mindstorms NXT, LEGO dostarcza środowisko, które pozwala tworzyć algorytmy przy użyciu prostego wizualnego języka diagramów przepływu sterowania. Dzięki otwartości platformy pojawiło się wiele programistycznych rozwiązań dla języków takich, jak C/C + +, Java, etc. Przykłady obejmują lejos/iCommand i NQC. Wczesne próby rozwiązań opartych o Prolog można znaleźć w projekcie Legolog. Niestety nie oferuje on ogólnego API i obsługuje tylko starszą wersję Mindstorms - RCX.

PLNXT to API w języku Prolog dla platformy Mindstorms NXT. Jest rozwijane w ramach projektu HeKatE. Ma na celu zapewnienie regułowego rozwiązania programistycznego wysokiego poziomu.

Na podstawie przeglądu istniejących rozwiązań, wymagania nowego API dla NXT zostały sformułowane następująco:

  • pokrycie wszystkich funkcji standardowych komponentów NXT,
  • przenośność, rozwiązanie dla systemu Windows i GNU/Linux,
  • ponownego wykorzystania niektórych dostępnych rozwiązań.

PLNXT ma następujące cechy:

  • jest uruchamiany na komputerze i kontroluje robota NXT przy użyciu Bluetooth/USB,
  • na poziomie funkcjonalnym API jest spójne z innymi dostępnymi rozwiązaniami.

Architektura API

  • Warstwa behawioralna (nxt_movement) udostępnia programiście funkcje wysokiego poziomu. Zawiera abstrakcyjne metody kontroli robota takie, jak przemieszczanie się, skręcanie. Obecnie działa dla robota TriBot. Ostatecznie powinna dostarczać pełnego mechanizmu ruchu dla różnych robotów.
  • Warstwa sensomotoryczna (nxt_sensomoto) zapewnia kontrolę komponentów zestawu NXT: silników, sensorów, jak również brick (jednostki centralnej). Ta warstwa może być używana do bezpośredniego odczytu sensorów, jak również programowania silników pojedynczo. Jest to warstwa, która może być używana przez programistę do uwydatnienia funkcjonalności warstwy behawioralnej.
  • Celem warstwy komunikacyjnej (nxt_actions) jest wykonywanie akcji wartswy sensomotorycznej i komunikacja z NXT. Obecnie stworzonych jest kilka alternatywnych modułów tej warstwy, dostarczających różnych środków komunikacji:
    • moduł komunikacji z bezpośrednim użyciem portu szeregowego i protokołu komunikacji LEGO,
    • rozwiązanie hybrydowe oparte na javowej bibliotece iCommand,
    • rozwiązanie hybrydowe oparte na socketach z wykorzystaniem biblioteki NXT++, która komunikuje się z robotem,
    • prosty graficzny symulator NXT, pozwalający w pewnym zakresie testować algorytmy bez użycia zestawu Mindstorms.

W rzeczywistości wszystkie te rozwiązania (poza symulatorem) oparte są na protokole komunikacji LEGO.

Dowolną inną implementację warstwy komunikacyjnej można stworzyć bazując na pliku 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. Nie powinna być bezpośrednio używana w projektach bazujących na PLNXT. Nie ma takiej potrzeby.

Obsługa wątków

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ń.

W module „threads” 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.

Platforma LEGO Mindstorms NXT

Dokumentacja

FIXME serwer dokumentacji online

Download

Release M0

20.02.2009: Pobierz PlNXT-M0

Release M3

09.05.2010: Pobierz PlNXT-M3.1

Konfiguracja

Jeżeli nie używałeś jeszcze Mindstorms NXT, polecam przejrzeć instrukcję LEGO. Ładna, kolorowa, z obrazkami. :) Na pewno dysponujesz wersją angielską. Tutaj do ściągnięcia wersja polska. Jeśli jesteś do tego zbyt leniwy, zacznij od krótkiego zapoznania z platformą LEGO Mindstorms NXT, niezbędnego do używania PLNXT. Zawarta jest tam minimalna, jak tylko się da, wiedza o platformie.

Pobierz i rozpakuj aktualną wersję PLNXT. Do ściągnięcia w dziale download.

Przygotowanie środowiska

Różne moduły komunikacyjne wymagają różnego przygotowania środowiska:

  • nxt_actions_serial – praca przez lokalny port szeregowy,
  • nxt_actions_icommand – praca za pośrednictwem iCommand (Java),
  • nxt_actions_sockets – praca za pośrednictwem gniazd TCP.

Tymczasowo możliwa jest używanie jedynie modułu serial. Wkrótce będzie to poprawione. Wobec tego dalsze instrukcje są przygotowane jedynie dla tego modułu.

Moduł serial

Moduł icommand

FIXME

Moduł sockets

FIXME

Pierwsze kroki

Jeżeli masz już poprawnie przygotowane środowisko (patrz konfiguracja), możesz przejść do pisania prostych programów. Zachęcam do zapoznania się z ''Pierwszymi krokami''.

Strony pokrewne

Patrz linki (część serwisu Laboratorium AGH - LEGO Mindstorms).

Licencja

Copyright © 2006-9 by the HeKatE Project

PLNXT jest rozwijany przez HeKatE Project (http://hekate.ia.agh.edu.pl).

PLNXT jest wolnym oprogramowaniem: możesz go rozprowadzać i/lub modyfikować na warunkach licencji GNU General Public License, wydanej przez Free Software Foundation, według wersji 3 tej licencji lub którejś z późniejszych.

PLNXT rozpowszechniany jest z nadzieją, iż będzie on użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania bliższych informacji, przeczytaj licencję GNU General Public License. Z pewnością wraz z PLNXT otrzymałeś egzemplarz licencji GNU General Public License. Jeśli nie, zobacz http://www.gnu.org/licenses/.

GPLv3

Kontakt

Prosimy o kontakt w przypadku, gdy:

  • zawartość tej strony nie jest wyczerpująca,
  • chcesz zgłosić błąd programu (bug),
  • masz dla nas rady, sugestie, komentarze, itp.

E-mail: holownia(_at_)agh.edu.pl ew. gjn(_at_)agh.edu.pl

Prace rozwojowe

Aktualności/problemy

  • 14 stycznia 2009 – PLNXT zostało użyte podczas zajęć ze studentami. Liczymy na uzyskanie opinii, które pomogą usunąć błędy. Wcześniej trwały prace nad modułem warstwy komunikacyjnej z wykorzystaniem połączenia szeregowego, opartego bezpośrednio na protokole LEGO. Protokół ten daje większe możliwości, niż używane wcześniej moduły icommand i sockets. Pozwala m.in. synchronizować pracę silników. Wyższa warstwa została przekształcona tak, żeby wykorzystać w pełni to, co daje nam protokół LEGO. Należy ją jeszcze wtórnie przystosować do użycia modułów warstwy komunikacyjnej, niezapewniających synchronizacji, jak również same te moduły. W tym momencie możliwe jest użycie tylko modułu serial jako warstwy komunikacyjnej.
pl/plnxt/start.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