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:51]
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 ====== 
  
  
Linia 69: Linia 23:
 ===== 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]]// - Microsoft Robotics Studio to środowisko dla hobbystów, studentów oraz profesjonalnych użytkowników wspierające tworzenie programów dla różnych typów urządzeń.    * //​[[http://​zone.ni.com/​devzone/​cda/​tut/​p/​id/​4435|MicrosoftRobotics Studio]]// - Microsoft Robotics Studio to środowisko dla hobbystów, studentów oraz profesjonalnych użytkowników wspierające tworzenie programów dla różnych typów urządzeń.
    * //​[[http://​bricxcc.sourceforge.net/​nbc/​|BrixCC(NBC & NXC)]]//  ​    * //​[[http://​bricxcc.sourceforge.net/​nbc/​|BrixCC(NBC & NXC)]]//  ​
      * Next Byte Codes (NBC) jest to prosty język niskiego poziomu służący do programowania zestawu Lego Mindstorms NXT.      * Next Byte Codes (NBC) jest to prosty język niskiego poziomu służący do programowania zestawu Lego Mindstorms NXT.
      * 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.       * 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 to projekt, którego celem jest umożliwenie ​uruchamia .NET run-time na NXT. Ponieważ 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.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 NXT. Ponieważ 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 to podobny do C język programowania dla Lego Mindstorms NXT. Jego zaletą jest wbudowany debugger czasu rzeczywistego.    * //​[[http://​www.robotc.net/​content/​lego_over/​lego_over.html|ROBOTC]]//​ -  ROBOTC to podobny do C język programowania dla Lego Mindstorms NXT. Jego zaletą jest wbudowany debugger czasu rzeczywistego.
    * //​[[http://​www.mindstorms.rwth-aachen.de/​RWTH]]//​ - Toolbox pozwalający sterować robotami Lego poprzez BlueTooth. ​    * //​[[http://​www.mindstorms.rwth-aachen.de/​RWTH]]//​ - Toolbox pozwalający sterować robotami Lego poprzez BlueTooth. ​
-   * //​[[http://​lejos.sourceforge.net/​|leJOS]]//​ - Zestaw narzędzi do tworzenia oprogramowania dla Lego Mindstorms NXT przy uzyciu ​języka Java (więcej informacji w projekcie: [[pl:​miw:​miw08_mindstormscontrolj|miw08_mindstormscontrolj]])+   * //​[[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 118: 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 137: 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 169: 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 )
 +
  
  
Linia 191: 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 kompilacji ​programu (inicjalizowanie serwisów) |+| integracja z .NET Framework | długi czas uruchamiania ​programu (inicjalizowanie serwisów) | 
  
 ==== Podsumowanie ==== ==== Podsumowanie ====
Linia 199: Linia 161:
    * 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.    * 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.    * 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.1212270695.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