Spis treści

Opis

Projekt zakończony

Łukasz Dziedzia , dziedzia@student.agh.edu.pl

Research available programming environments supporting mindstorms.

http://www.microsoft.com/robotics
http://msdn2.microsoft.com/en-us/robotics/default.aspx
http://msdn2.microsoft.com/en-us/library/bb483088.aspx
http://www.nxtclub.com/
http://scratch.mit.edu/

Environment comparison: pros/cons.

Spotkania

Kalendarium spotkań.

Sprawozdanie

Dostepne srodowiska

Kilka najciekawszych środowisk do programowania/sterowania MindStorms:

Dodatkowo na stronach Wikipedii można znaleźć odnośniki do kilku innych środowisk: MindStorms on wiki

Propozycja use case'u

Aby porównanie środowisk było sensowne wymagane jest, aby każde z nich testowane było w identyczny sposób. Istotne jest również, aby podczas testowania możliwości jakie oferują poszczególne środowiska wykorzystać jak największą część z funkcjonalności jaką oferuje zestaw LEGO Mindstorms. Biorąc pod uwagę powyższe założenia projekt został zrealizowany zgodnie z następującymi założeniami:

  1. Stworzyć robota, na którym odbędą się testy. Uważam, że warto posłużyć się w tym celu jednym z robotów proponowanych w instrukcjach dołączonych do zestawu(okazałoby się to korzystne w przypadku próby uruchomienia algorytmu). Po zapoznaniu się z możliwościami robotów opisanych w instrukcjach LEGO zdecydowałem się na TriBot'a (w wersji rozszerzonej). Początkowo ciekawszym wydawał się humanoidalny Alpha Rex, jednak oprócz interesującego układu ruchu nie udostępnia on ciekawych możliwości, tzn. ciekawego wykorzystania sensorów.
  2. Dla danego robota zdefiniować algorytm programu. Algorytm powinien wykorzystywać wszystkie sensory dostępne w zestawie (przynajmniej w stopniu pozwalającym na ocenę możliwości sterowaniem nimi, tzn. w przypadku, gdy nie istnieje racjonalne uzasadnienie na wykorzystanie któregoś z sensorów, algorytm powinien zawierać logikę, która wykorzysta możliwości sensora, do wykonania pewnych zadań podrzędnych).
  3. Implementacja algorytmu przy użyciu wybranych środowisk (proponowane środowiska przedstawiam poniżej).
  4. Oprócz charakterystyki porównawczej, opisującej podstawowe wady/zalety każdego ze sprawdzanych środowisk, w podsumowaniu przeprowadzonego eksperymentu powinna znaleźć się punktowa(uproszczona) ocena uwzględniająca następujące kryteria:

Wyselekcjonowane środowiska

Wykonanie eksperymentu proponuję przeprowadzić dla 3 środowisk. Wstępna analiza (polegająca na ocenie możliwości oraz popularności) wyłoniła następujące środowiska:

Propozycje algorytmów

Biorąc pod uwagę wcześniejsze założenia oraz możliwości/ograniczenia robota TriBot, proponuje następujące algorytmy:

Regułowy zapis algorytmów

Algorytmy zapisane regułami (IF THEN) dostępne są:

Implementacja

Uwagi ogólne

Środowisko Lego Mindstorms


Implementacja ww. algorytmów w natywnym środowisku LEGO (przy użyciu schematów blokowych).

+ -
'cieszący oko' interfejs niedopracowany edytor (gubiące się połączenia, nic nie mówiące warningi)
zintegrowany tutorial i pomoc dotycząca używania środowiska praca z edytorem wymaga sporo cierpliwości (wolne przewijanie przy 'dłuższych' algorytmach)
bezproblemowa komunikacja (USB) niektóre błędy kompilacji nie posiadają opisu pozwalającego je zidentyfikować
automatyczny odczyt wartości pomiarów z sensorów
możliwość kalibracji czujników z poziomu środowiska
ułatwione zarządzenie urządzeniem (wgrywanie firmware'u, zarządzanie plikami zapisanymi w pamięci NXTBrick, podgląd poziomu baterii)
możliwość definiowania własnych bloków


UWAGA Dostępna baza wiedzy dotycząca 'programowania' w środowisku LEGO Mindstorms mogłaby zostać uwzględniona w ćwiczeniach laboratoryjnych z JSI (szczególnie takie zagadnienia jak równoległe wykonywanie zadań, zmienne, typy danych oraz ich przekazywanie między blokami) Najprościej do tej pomocy dostać się można poprzez Help→Contents and Index.

BrixCC(NXC)

Jako pomoc w tworzeniu programów w języku NXC użyłem środowiska Bricx Command Center. Z tego powodu w porównaniu zamieszczę raczej ocenę NXC+Bricx Command Center, gdyż tylko razem tworzą w pełni funkcjonalne, wygodne środowisko.
Linki pomocne przy korzystaniu z NXC i Bricx Command Center:


Zaimplementowane algorytmy:


+ -
bliskie podobieństwo z językiem C sprawia, że bardzo szybko można napisać pierwszy program niewygodna forma dokumentacji (PDF).
bricxCC zawiera wiele wbudowanych, przydatnych narzędzi (bezpośrednie sterowanie, podgląd plików znajdujących się w pamięci, narzędzia diagnostyczne). brak popularnych rozwiązań stosowanych w innych edytorach kodu (formatowanie kodu, podpowiadanie nazw działa tylko dla elementów języka)
bezproblemowa komunikacja (USB)
szybsze i bardziej intuicyjne tworzenie kodu niż w przypadku układania bloczków
skompilowany kod zajmuje mniej miejsca w pamięci (ok 4krotnie)

UWAGA Język NXC nie posiada liczbowego typu zmiennoprzecinkowego! (Należy uważać programując operacje matematyczna np.: (1/10)*10 = 0 ! (mozna napisac (1*10)/10 )

Microsoft Robotics Studio

Przydatne linki:

Microsoft Robotics Studio oferuje nieco inne możliwości niż omawiane wcześniej środowiska. Tworzenie logiki sterującej robotem nie jest najlepszym zastosowaniem dla MSRS (brak możliwości wgrania skompilowanego kodu na kostkę NXT, brak interfejsu dającego możliwość programowania logiki). Obszarem zastosowań, w którym można docenić MSRS jest integracja robotów z innymi serwisami (interfejsami urządzeń, aplikacji). Mimo, że aktualna lista dostępnych serwisów nie jest zbyt bogata (wczesne stadium rozwoju tego produktu), to MSRS zasługuję na uwagę chociażby ze względu na podejście do integrowania hardware'u. Oczywiście możliwa jest też implementacja własnych serwisów.

W ramach projektu w środowisku Microsoft Robotics Studio zaimplementowana została aplikacja Messages.zip. Aplikacja składa się z 2 podprogramów, których działanie szczegółowo zostało opisane tutaj.

Dzięki aplikacji Messages przetestowane zostały:

+ -
oferuje możliwość integracji NXT z innymi urządzeniami (np.: PC, XBox, kamery internetowe, serwisy software'owe etc.) możliwość komunikacji tylko przy użyciu BlueTooth (połączenia są niestabilne)
najwygodniejszy designer mała ilość dokumentacji, tutoriali
integracja z .NET Framework długi czas uruchamiania programu (inicjalizowanie serwisów)

Podsumowanie

W ramach projektu udało się zrealizować porównanie 3 środowisk do tworzenia oprogramowania dla Lego Mindstorms NXT. Każde ze środowisk ma swoje wady i zalety (przedstawione powyżej), na ich podstawie testowane środowiska można zcharakteryzować jako:

Laboratorium

lab4

Materiały

Materiały