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_mindstormsenv [2008/05/31 23:08]
miw
pl:miw:miw08_mindstormsenv [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +**__Projekt zakończony__**
 +
 **Łukasz Dziedzia **, <​dziedzia@student.agh.edu.pl>​ **Łukasz Dziedzia **, <​dziedzia@student.agh.edu.pl>​
  
Linia 13: Linia 15:
  
 ====== Spotkania ====== ====== Spotkania ======
-===== 08.02.26 ​===== +[[pl:​miw:​miw08_mindstormsenv:​spotkania | Kalendarium spotkań.]]  
-  * wyszukac wszystkie mozliwe srodowiska+====== Sprawozdanie ======
  
-===== 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 ===== ===== Dostepne srodowiska =====
 Kilka najciekawszych środowisk do programowania/​sterowania MindStorms: Kilka najciekawszych środowisk do programowania/​sterowania MindStorms:
-   * //​[[http://​mindstorms.lego.com|LegoMindstorms NXT]]// - środowisko zaprojektowane przez firmę Lego. +   * //​[[http://​mindstorms.lego.com|LegoMindstorms NXT]]// - środowisko zaprojektowane przez firmę Lego do tworzenia aplikacji przy użyciu dchematów blokowych
-   * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|MicrosoftRobotics Studio]]// - The Microsoft Robotics Studio ​is a Windows-based environment for academichobbyist and commercial developers to easily create robotics applications across a wide variety of hardware+   * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|MicrosoftRobotics Studio]]// - Microsoft Robotics Studio ​to środowisko dla hobbystówstudentów oraz profesjonalnych użytkowników wspierające tworzenie programów dla różnych typów urządzeń
-   * //​[[http://​bricxcc.sourceforge.net/​nbc/​|NBC ​NXC]]// ​  +   * //​[[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'NXT programmable brick (from the new LEGO Mindstorms NXT set)+     * Next Byte Codes (NBC) jest to prosty język niskiego poziomu ​służący do programowania zestawu Lego Mindstorms NXT. 
-     * Not eXactly C (NXC) is a high level language, similar to C, built on top of the NBC compilerIt 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.  +     * Not eXactly C (NXC) jest językiem wysokiego poziomu(podobieństwo z językiem ​C) współpracujący z kompilatorem ​NBC. Może być oczywiście wykorzystany do programowania Lego Mindstorms ​NXT.  
-   * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|LabView]]//​ - Toolkit popularnego ​srodowiska ​firmy NationalInstruments  +   * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|LabView]]//​ - //Toolkit// popularnego ​środowiska ​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 platformAs 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.dcl.hpi.uni-potsdam.de/​research/​lego.NET/​|Lego.NET]]//​ - Lego.NET to projekt, którego celem jest umożliwienie uruchamia ​.NET run-time ​na NXTPonieważ oryginaly firmware nie udostępnia takich możliwości w ramach projektu tworzony jest także system operacyjny dla Lego o nazwie ​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.robotc.net/​content/​lego_over/​lego_over.html|ROBOTC]]//​ -  ROBOTC ​to podobny do język programowania dla Lego Mindstorms NXT. Jego zaletą jest wbudowany ​debugger ​czasu rzeczywistego
-   * //​[[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://​www.mindstorms.rwth-aachen.de/​RWTH]]//​ - Toolbox pozwalający sterować robotami Lego poprzez BlueTooth.  
-   * //​[[http://​lejos.sourceforge.net/​|leJOS]]//​ - Java for Lego MindStorms+   * //​[[http://​lejos.sourceforge.net/​|leJOS]]//​ - Zestaw narzędzi do tworzenia oprogramowania dla Lego Mindstorms NXT przy użyciu języka Java (więcej informacji w projekcie: [[pl:​miw:​miw08_mindstormscontrolj|miw08_mindstormscontrolj]])
  
  
 Dodatkowo na stronach Wikipedii można znaleźć odnośniki do kilku innych środowisk: 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]]// //​[[http://​en.wikipedia.org/​wiki/​Lego_Mindstorms#​Programming_languages|MindStorms on wiki]]//
 +
 +
  
  
 ===== Propozycja use case'u ===== ===== 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:+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:
   - 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.   - 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).   - 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).   - 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:+  - 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:
  * ogólna ocena możliwości środowiska  * ogólna ocena możliwości środowiska
  * "user friendly"​  * "user friendly"​
Linia 100: Linia 57:
 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:​ 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://​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/​|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://​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. ​   * //​[[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. ​
  
Linia 117: Linia 74:
  
 ===== Implementacja ===== ===== Implementacja =====
 +
 +
  
 ==== Uwagi ogólne ==== ==== 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ę.    * 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). +   * Wadliwa konstrukcja robota uniemożliwiała korzystanie z sensora natężenia światła([[pl:​miw:​miw08_mindstormsenv:​materialy#​Modyfikacja_konstrukcji_TriBot_a |sugerowana modyfikacja konstrukcji robota]]). 
-   * Przeszkodą nie może być piłeczka na platformie, sonar jest umieszczony zbyt wysoko , aby ją wykryć.+   * Przeszkodą nie może być piłeczka na platformie, sonar jest umieszczony zbyt wysoko, aby ją wykryć. 
 + 
  
 ==== Środowisko Lego Mindstorms ==== ==== Ś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:​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.+   * {{:​pl:​miw:​miw08_mindstormsenv:​patrol_rbt.zip|patrol_rbt.zip}} - implementacja [[pl:​miw:​miw08_mindstormsenv:​materialy#​Patrol|Algorytmu Patrol]] w natywnym środowisku LEGO Mindstorms.
  
 \\ \\
Linia 136: Linia 97:
 | '​cieszący oko' interfejs | niedopracowany edytor (gubiące się połączenia,​ nic nie mówiące warningi) |  | '​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) | | 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) | |+| bezproblemowa komunikacja (USB) | niektóre błędy kompilacji nie posiadają opisu pozwalającego je zidentyfikować ​|
 | automatyczny odczyt wartości pomiarów z sensorów |        | | automatyczny odczyt wartości pomiarów z sensorów |        |
 | możliwość kalibracji czujników z poziomu środowiska |        | | możliwość kalibracji czujników z poziomu środowiska |        |
Linia 147: Linia 108:
  
  
-==== NXC ====+==== 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.\\ 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.\\
Linia 168: Linia 129:
  
 **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 ) **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 ==== ==== Microsoft Robotics Studio ====
Linia 188: Linia 152:
 | 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) | | 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 | | 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: 
 +   * 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. 
 + 
 +===== Laboratorium ===== 
 +[[pl:​mindstorms:​lab:​lab4]]
  
 ====== Materiały ====== ====== Materiały ======
 [[pl:​miw:​miw08_mindstormsenv:​materialy|Materiały]] [[pl:​miw:​miw08_mindstormsenv:​materialy|Materiały]]
pl/miw/miw08_mindstormsenv.1212268104.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (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