Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_mindstormsenv [2008/05/31 23:44] miw |
pl:miw:miw08_mindstormsenv [2019/06/27 15:50] (aktualna) |
====== Opis ====== | ====== Opis ====== |
| **__Projekt zakończony__** |
| |
**Łukasz Dziedzia **, <dziedzia@student.agh.edu.pl> | **Łukasz Dziedzia **, <dziedzia@student.agh.edu.pl> |
| |
| |
====== 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]]// - 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 projektach: ) | * //[[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" |
| |
===== 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. |
| |
\\ | \\ |
| '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 | | |
| |
**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 ) |
| |
| |
| |
| 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 ==== |
* 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]] |