Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:miw:miw08_mindstormsenv [2008/05/31 23:30]
miw
pl:miw:miw08_mindstormsenv [2019/06/27 15:50]
Linia 1: Linia 1:
-====== Opis ====== 
-**Łukasz Dziedzia **, <​dziedzia@student.agh.edu.pl>​ 
  
-Research available programming environments supporting mindstorms. 
-  * input 
-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/​ \\ 
-  * output 
-Environment comparison: pros/cons. 
- 
-====== Spotkania ====== 
-===== 08.02.26 ===== 
-  * wyszukac wszystkie mozliwe srodowiska 
- 
-===== 08.03.11 ===== 
-  * propozycja usecase'​u 
-  * wstępnie wysel. środowiska 
- 
-LabView w uci 
-  * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|LabView]]//​ [[http://​www.agh.edu.pl/​pl/​uci/​site-licence.html|AGH site license]] 
- 
- 
- 
-===== 080318 ===== 
-  * propozycje algorytmów 
-  * próba uwzg. oryginalne środow LEGO 
- 
-===== 080408 ===== 
-  * impl tych 2 alg 
-  * ew. propozycje 3. 
-  * próba zapisania 2 alg. w postaci ogólnych reguł decyzyjnych:​ JEŻELI cośtam WTEDY cośtam, ew. bez przesłanek:​ jedź... 
- 
- 
-===== 080422 ===== 
-  * inne alg 
-  * próba modelowania tych 2 w innych środowiskach 
-  * ewaluacja nowej strony? 
- 
- 
- 
-===== 080520 ===== 
-  * przygotować [[pl:​mindstorms:​lab:​lab4]] z impl. w 4(3?) środowiskach,​ m$ ma pri 
- 
-===== 080527 ===== 
-  * dogranie na czym kończymy 
-===== 08063 ===== 
-  * uzupeln o MSRS 
-  * beta sprawozd 
- 
-====== Projekt ====== 
-===== LABView w UCI ===== 
-Skontaktowalem sie droga mailowa z Panem odpowiedzialnym za udostepnianie licencji an oprogramowanie LABView, oto jego tresc: 
- 
-> Witam,\\ 
-> program LabView moze byc instalowany wylacznie na komputerach Uczelnianych \\ 
-> i tylko przez pracownikow.\\ 
-> Pozdrawiam\\ 
-> J.Pilch\\ 
- 
- 
- 
-====== Sprawozdanie ====== 
- 
- 
-===== Dostepne srodowiska ===== 
-Kilka najciekawszych środowisk do programowania/​sterowania MindStorms: 
-   * //​[[http://​mindstorms.lego.com|LegoMindstorms NXT]]// - środowisko zaprojektowane przez firmę Lego. 
-   * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|MicrosoftRobotics Studio]]// - The Microsoft Robotics Studio is a Windows-based environment for academic, hobbyist and commercial developers to easily create robotics applications across a wide variety of hardware. 
-   * //​[[http://​bricxcc.sourceforge.net/​nbc/​|BrixCC(NBC & NXC)]]//  ​ 
-     * Next Byte Codes (NBC) is a simple language with an assembly language syntax that can be used to program LEGO's NXT programmable brick (from the new LEGO Mindstorms NXT set). 
-     * Not eXactly C (NXC) is a high level language, similar to C, built on top of the NBC compiler. It can also be used to program the NXT brick. NXC is basically NQC for the NXT. To compile NXC programs just use the NBC compiler with source code files that have a .nxc file extension. ​ 
-   * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|LabView]]//​ - Toolkit popularnego srodowiska firmy NationalInstruments ​ 
-   * //​[[http://​www.dcl.hpi.uni-potsdam.de/​research/​lego.NET/​|Lego.NET]]//​ - Lego.NET is the name of our project to make the .NET run-time available on the Lego Mindstorm platform. As the original Lego firmware is too limited for such a project, we are building on top of alternative operating systems; currently, our focus is on brickOS. 
-   * //​[[http://​www.robotc.net/​content/​lego_over/​lego_over.html|ROBOTC]]//​ -  ROBOTC is a powerful C-based programming language with a Windows environment for writing and debugging programs, and the only programming language at this level that offers a comprehensive,​ real-time debugger. ROBOTC is a cross-platform solution that allows students to learn the type of c-based programming used in advanced education and professional applications. 
-   * //​[[http://​www.mindstorms.rwth-aachen.de/​RWTH]]//​ - This toolbox is developed to control LEGO® MINDSTORMS® NXT robots with MATLAB via a wireless Bluetooth connection. ​ 
-   * //​[[http://​lejos.sourceforge.net/​|leJOS]]//​ - Java for Lego MindStorms 
- 
- 
-Dodatkowo na stronach Wikipedii można znaleźć odnośniki do kilku innych środowisk: 
-//​[[http://​en.wikipedia.org/​wiki/​Lego_Mindstorms#​Programming_languages|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 sugeruje następujący przebieg realizacji tego projektu: 
-  - 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 [[http://​mindstorms.lego.com/​Overview/​MTR_Tribot.aspx|TriBot'​a]] (w wersji rozszerzonej). Początkowo ciekawszym wydawał się humanoidalny [[http://​mindstorms.lego.com/​Overview/​MTR_AlphaRex.aspx|Alpha Rex]], jednak oprócz interesującego układu ruchu nie udostępnia on ciekawych możliwości,​ tzn. ciekawego wykorzystania sensorów. 
-  - 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). 
-  - Implementacja algorytmu przy użyciu wybranych środowisk (proponowane środowiska przedstawiam poniżej). 
-  - Oprócz charakterystki 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: 
- * ogólna ocena możliwości środowiska 
- * "user friendly"​ 
- * komunikacja z urządzeniem(NXTBrick) 
- * szybkość i intuicyjność implementowania alg. 
- 
- 
- 
-===== 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:​ 
-  * //​[[http://​mindstorms.lego.com|LegoMindstorms NXT]]// - implementacja algorytmów w natywnym środowisku Lego powinna zostać potraktowana jako punkt referencyjny przy opisywaniu innych środowisk. 
-  * //​[[http://​bricxcc.sourceforge.net/​nbc/​|BrixCC(NXC)]]//​ - jest to chyba najpopularniejsze środowisko do tworzenia oprogramowania na LEGO Mindstorms(nie licząc orignalnego środowiska Lego). Język NXC (Not eXactly C) powstał w oparciu o język C, więc jest on bardzo intuicyjny dla wielu programistów. Dodatkowo dobre doświadczenia z poprzednią wersją tego języka (NQC) wskazują na słuszność tego wyboru. 
-  * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|MicrosoftRobotics Studio]]// - zapowiadające się dobrze środowisko do tworzenia oprogramowania (oraz symulacji) dla wielu platform hardware'​owych. ​ 
- 
-===== Propozycje algorytmów ===== 
-Biorąc pod uwagę wcześniejsze założenia oraz możliwości/​ograniczenia robota [[http://​mindstorms.lego.com/​Overview/​MTR_Tribot.aspx|TriBot]],​ proponuje następujące algorytmy: 
-  * **Saper** - Celem robota będzie wywiezienie z obszaru wyznaczonego przez czarną linię (plansza dostarczona z zestawem Mindstorms) obiektu. Robot startuje z dowolnego miejsca na podłodze, jego zadaniem jest znaleźć obszar wyznaczony przez czarną linię(sensor natężenia światła). Po przekroczeniu obszaru robot powinien wyszukać miejsce, w którym znajduje sie piłeczka(sonar),​ a następnie dotrzeć do niej, uchwycic ją(czujnik dotyku) i wywieźć poza obszar wyznaczony przez czarna linię. Aktywacja robota odbędzie się za pomocą sygnału dźwiękowego (jest to najbardziej sensowne zastosowanie sensora natężenia dźwięku, jakie udało mi się zdefiniować dla tego zadania).[[pl:​miw:​miw08_mindstormsenv:​materialy#​Saper|Algorytm Saper]]. 
- 
-  * **Patrol** - Celem robota będzie poruszanie się po zadanej trajektorii(plansza dostarczone wraz z zestawem Mindstorms),​ w przypadku wykrycia na  patrolowanej drodze przeszkody(sonar) robot powinien zwolnić, aby nie zderzyć się z nią, a następnie przechwycić przeszkodę i usunąć ją z trasy. Podobnie jak w poprzednim przykładzie czujnik natężenia dźwięku może służyć do aktywacji/​deaktywacji robota. [[pl:​miw:​miw08_mindstormsenv:​materialy#​Patrol|Algorytm Patrol]]. 
- 
-===== Regułowy zapis algorytmów ===== 
- 
-Algorytmy zapisane regułami (IF THEN) dostępne są: 
-   * [[pl:​miw:​miw08_mindstormsenv:​materialy#​Propozycja regułowego zapisu algorytmu Saper|Algorytm Saper]] 
-   * [[pl:​miw:​miw08_mindstormsenv:​materialy#​Propozycja regułowego zapisu algorytmu Patrol|Algorytm Patrol]] 
- 
- 
-===== Implementacja ===== 
- 
-==== Uwagi ogólne ==== 
- 
-   * Implementując powyższe algorytmy w środowisku LEGO okazało się, że szczególnie istotna jest możliwość kalibracji sensorów. Porównując środowiska należy zwrócić na to szczególną uwagę. 
-   * Wadliwa konstrukcja robota uniemożliwiała korzystanie z sensora natężenia światła (TODO opis modyfikacji). 
-   * Przeszkodą nie może być piłeczka na platformie, sonar jest umieszczony zbyt wysoko , aby ją wykryć. 
- 
-==== Środowisko Lego Mindstorms ==== 
- 
-   * {{:​pl:​miw:​miw08_mindstormsenv:​saper_rbt.zip|saper_rbt.zip}} - implementacja [[pl:​miw:​miw08_mindstormsenv:​materialy#​Saper|Algorytmu Saper]] w natywnym środowisku LEGO Mindstorms. 
-   * {{:​pl:​miw:​miw08_mindstormsenv:​patrol_rbt.zip|patrol_rbt.zip}} - implementacja [[pl:​miw:​miw08_mindstormsenv:​materialy#​Patrol|Algorytmu Patrol]] w natywnym środowisku LEGO Mindstorms. Planowane ulepszenia: rozróżnianie '​wnętrza i zewnętrza'​ patrolowanego obszaru. 
- 
-\\ 
- 
-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) | | 
-| 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 [[http://​bricxcc.sourceforge.net/​|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 [[http://​bricxcc.sourceforge.net/​|Bricx Command Center]]: 
-   * [[http://​bricxcc.sourceforge.net/​nbc/​nxcdoc/​NXC_Guide.pdf|Dokumentacja języka NXC]] 
-   * [[http://​bricxcc.sourceforge.net/​nbc/​nxcdoc/​NXC_tutorial.pdf|Tutorial]] omawiający wiele elementów języka NXC. 
- 
-\\ 
-Zaimplementowane algorytmy: 
-   * {{:​pl:​miw:​miw08_mindstormsenv:​saper_nxc.zip|saper_nxc.zip}} - implementacja [[pl:​miw:​miw08_mindstormsenv:​materialy#​Saper|Algorytmu Saper]] w języku NXC. 
-   * {{:​pl:​miw:​miw08_mindstormsenv:​patrol_nxc.zip|patrol_nxc.zip}} - implementacja [[pl:​miw:​miw08_mindstormsenv:​materialy#​Patrol|Algorytmu Patrol]] w języku NXC. 
-\\ 
- 
-^ +                        ^ -                                                                        ^ 
-| 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: 
-   * [[http://​msdn.microsoft.com/​en-us/​robotics/​default.aspx | Oficjalna strona MSRS ]] 
-   * [[http://​blogs.msdn.com/​msroboticsstudio/​ | Blog twórców MSRS ]] 
-   * [[http://​en.wikipedia.org/​wiki/​Microsoft_Robotics_Studio | Informacja na Wikipedii ]] 
- 
-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 {{pl:​miw:​miw08_mindstormsenv:​messages.zip|Messages.zip}}. Aplikacja składa się z 2 podprogramów,​ których działanie szczegółowo zostało opisane [[pl:​miw:​miw08_mindstormsenv:​materialy#​messages|tutaj]]. 
- 
-Dzięki aplikacji Messages przetestowane zostały: 
-   * możliwości języka VPL 
-   * serwisy Lego (v2) oraz serwisy: SimpleDialog,​ TextToSpeech,​ Log 
-   * możliwości integracji Lego z ww. serwisami 
- 
-^ +                        ^ -                                                                        ^ 
-| 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 | 
- 
-==== 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: 
-   * Lego Mindstorms NXT - podstawowe środowisko dla uzytkowników preferujących graficzny interfejs do tworzenia programów. 
-   * BrixCC(NXC) - język NXC dzięki swemu podobieństwu do jęzka C może okazać się najlepszym wyborem dla osób posiadających doświadczenie w tym języku. Samo środowisko BrixCC jest proste w użyciu. 
-   * Microsoft Robotics Studio - środowisko dla ludzi chcących eksperymentować z integracją zestawu Lego z urządzeniami różnego typu. Mała ilość dokumentacji/​tutoriali może czynić je zniechęcającym na początku. 
-  ​ 
-====== Materiały ====== 
-[[pl:​miw:​miw08_mindstormsenv:​materialy|Materiały]] 
pl/miw/miw08_mindstormsenv.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