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/06/03 16:59]
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 15: Linia 17:
 [[pl:​miw:​miw08_mindstormsenv:​spotkania | Kalendarium spotkań.]] ​ [[pl:​miw:​miw08_mindstormsenv:​spotkania | Kalendarium spotkań.]] ​
 ====== Sprawozdanie ====== ====== Sprawozdanie ======
 +
  
  
Linia 20: 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 69: 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 88: 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 |        |
pl/miw/miw08_mindstormsenv.1212505178.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