Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:lab:lab4 [2008/05/17 13:13] miw |
pl:mindstorms:lab:lab4 [2019/06/27 15:50] (aktualna) |
====== Laboratorium 4 ====== | ====== Laboratorium 4 ====== |
| |
| Laboratorium przygotowane w oparciu o [[pl:miw:miw08_mindstormsenv | MindsotrmsENV ]]. |
| |
| support: <dziedzia@student.agh.edu.pl> |
| |
| ===== Lab z iCommand ===== |
| |
| [[pl:miw:miw08_mindstormscontrolj]] |
| support P. Gutowski |
| |
| |
===== Cel ===== | ===== Cel ===== |
Środowiska wykorzystywane w ramach tego ćwiczenia: | Środowiska wykorzystywane w ramach tego ćwiczenia: |
* LEGO Mindsotrms | * LEGO Mindsotrms |
* Brixcc | * BrixCC |
* Microsoft Robotics Studio | * Microsoft Robotics Studio (opcjonalnie) |
| |
Waszym zadaniem będzie uruchomienie oraz przeanalizowanie [[pl:miw:miw08_mindstormsenv#Propozycje_algorytmow|dwóch algorytmów]] (ich implementacji): | Waszym zadaniem będzie uruchomienie oraz przeanalizowanie [[pl:miw:miw08_mindstormsenv#Propozycje_algorytmow|dwóch algorytmów]] (ich implementacji). |
| |
| Filmiki pokazujące działanie algorytmów: |
| * [[http://www.youtube.com/watch?v=dollW5dg_v0 | Saper]] |
| |
| Uwaga: Ostatanie 5 minut laboratorium proszę poświęcić na [[pl:mindstorms:lab:lab4#sprawozdanie | Sprawozdanie]] |
| |
===== Przygotowanie stanowiska ===== | ===== Przygotowanie stanowiska ===== |
* zbudowany robot [[http://mindstorms.lego.com/Overview/MTR_Tribot.aspx|TriBot]] | * zbudowany robot [[http://mindstorms.lego.com/Overview/MTR_Tribot.aspx|TriBot]] |
* plansza testowa dostarczona z zestawem Lego - postaraj się, aby miała jak najmniej zagięć (zagięcia powodują błędne odczyty z czujnika natężenia swiatła). | * plansza testowa dostarczona z zestawem Lego - postaraj się, aby miała jak najmniej zagięć (zagięcia powodują błędne odczyty z czujnika natężenia swiatła). |
* zainstalowane środowiska: LEGO Mindstorms, Brixcc, Microsoft Robotics Studio | * zainstalowane środowiska: LEGO Mindstorms, BrixCC, Microsoft Robotics Studio |
| * konstrukcja robota proponowana przez Lego charakteryzuje się tym, że czujnik natężenia światła jet umieszczony bardzo nisko - powoduje to często pojawianie się nieprawidłowych odczytów, a w konsekwencji błędne działanie algorytmów. Można dokonać niewielkiej [[pl:miw:miw08_mindstormsenv:materialy#Modyfikacja_konstrukcji_TriBot_a | modyfikacji konstrukcji TriBot'a]]. |
Uwaga: Konstrukcja robota Tribot(wysokie umieszczenie sonara) w zasadzie uniemożliwia stosowanie proponowanych przez LEGO platform z piłeczkami jako przeszkody. FIXME | * konstrukcja robota Tribot(wysokie umieszczenie sonara) w zasadzie uniemożliwia stosowanie proponowanych przez LEGO platform z piłeczkami jako przeszkody(poza tym robot nie jest w stanie podnieść platformy, która przeszkadzałaby w ruchu). W tym celu należy (tymczasowo) użyć np.: telefonu komórkowego, lub przedmiotu który generalnie jest trochę wyższy od platformy i piłeczki (ewentualnie można testować algorytmy wskazując miejsce położenia przeszkody ręką). |
| |
===== Ćwiczenie ===== | ===== Ćwiczenie ===== |
==== Uwagi ogólne ==== | ==== Uwagi ogólne ==== |
* Kalibracja - jest to bardzo ważny krok który jest wykonywany przed każdym algorytmem. Dzięki niemu definiujemy jaki jest zakres możliwych wartości odczytywanych przez sensory. W naszym przypadku kalibrujemy czujnik natężenia światła. Po uruchomieniu każdego algorytmu na ekranie pojawi się napis "MAX:" oraz wartość liczbowa poniżej. Jest wartość odczytywana z czujnika natężenia światła (spróbuj umieścić czujnik nad jasną powierzchnią, a następnie nad ciemną i zauważ jak zmienia się wartość odczytu). | * Kalibracja - jest to bardzo ważny krok który jest wykonywany przed każdym algorytmem. Dzięki niemu definiujemy jaki jest zakres możliwych wartości odczytywanych przez sensory. W naszym przypadku kalibrujemy czujnik natężenia światła. Po uruchomieniu każdego algorytmu na ekranie pojawi się napis "MAX:" oraz wartość liczbowa poniżej. Jest wartość odczytywana z czujnika natężenia światła (spróbuj umieścić czujnik nad jasną powierzchnią, a następnie nad ciemną i zauważ jak zmienia się wartość odczytu). |
Przebieg kalibracji: Po uruchomieniu algorytmu (na ekranie widoczne jest "MAX: <wartość liczbowa>") ustaw robota, tak aby czujnik światła znajdował się nad najciemniejszym z obszarów po którym będzie poruszał się robot (np. czarna linia na planszy testowej), zatwierdź używając przycisku lewej strzałki znajdującego się na kostce NXT. W ten sposób ustawiliśmy maksymalną wartość odczytu z czujnika natężenia światła względem, której dokonywana będzie normalizacja pomiaru. Na ekranie powinien być widoczny napis "MIN: <wartość liczbowa>", umieść tym razem robota nad najjaśniejszym obszarem, po którym będzie się poruszał (białe tło planszy) i wciśnij przycisk prawej strzałki znajdujący się na kostce NXT. Gdy kalibracja jest zakończona na ekranie widoczny jest napis "Calibrated". | **Przebieg kalibracji:** Po uruchomieniu algorytmu (na ekranie widoczne jest "MAX: <wartość liczbowa>") ustaw robota, tak aby czujnik światła znajdował się nad najciemniejszym z obszarów po którym będzie poruszał się robot (np. czarna linia na planszy testowej), zatwierdź używając przycisku lewej strzałki znajdującego się na kostce NXT. W ten sposób ustawiliśmy maksymalną wartość odczytu z czujnika natężenia światła względem, której dokonywana będzie normalizacja pomiaru. Na ekranie powinien być widoczny napis "MIN: <wartość liczbowa>", umieść tym razem robota nad najjaśniejszym obszarem, po którym będzie się poruszał (białe tło planszy) i wciśnij przycisk prawej strzałki znajdujący się na kostce NXT. Gdy kalibracja jest zakończona na ekranie widoczny jest napis "Calibrated". |
| |
| * Jeżeli po skalibrowaniu czujników robot nie zachowuje się jak powinien (nie rozpoznaję linii, nie rozpoznaję przeszkód, etc.) spróbuj zlokalizować |
| fragment kodu i zmienić wartość odczytu dla jakiej dana akcja nie wykonuje się prawidłowo. Oczywiście wszelki modyfikacje kodu wskazane:) |
| |
* Usuwanie programów - ponieważ pamięć przeznaczona na przechowywanie plików jest ograniczona (124kB) prawdopodobnie konieczne będzie usuwanie plików z programami z kostki. W tym celu: | * Usuwanie programów - ponieważ pamięć przeznaczona na przechowywanie plików jest ograniczona (124kB) prawdopodobnie konieczne będzie usuwanie plików z programami z kostki. W tym celu: |
* otwórz Lego Mindstorms NXT | - otwórz Lego Mindstorms NXT |
* wybierz File->New - pojawi się okno edytora | - wybierz File->New - pojawi się okno edytora |
* z Menu znajdującego się w prawej-dolnej części ekranu wybierz "NXT Window", a następnie zakładkę "Memory" | - z Menu znajdującego się w prawej-dolnej części ekranu wybierz "NXT Window", a następnie zakładkę "Memory" |
* w tym miejscu można zobaczyć ile pamięci zajmuje każdy z programów oraz usunąć, te które są już niepotrzebne | - w tym miejscu można zobaczyć ile pamięci zajmuje każdy z programów oraz usunąć, te które są już niepotrzebne |
Program można też usunąć bezpośrednio z kostki NXT(My Software Siles -> <nazwa programu> -> Delete) | Program można też usunąć bezpośrednio z kostki NXT(My Software Siles -> <nazwa programu> -> Delete) |
* zmiana konstrukcji | |
* przeszkoda | * Komunikacja z robotem najlepiej działa przy użyciu USB (wyjątkiem jest Microsoft Robotics Studio, dla którego jedenym możliwym kanałem komunikacji jest BlueTooth) |
| |
==== Lego Mindstorms ==== | ==== Lego Mindstorms ==== |
| |
Ściągnij implementację algorytmów dla środowiska LEGO: | |
* {{:pl:miw:miw08_mindstormsenv:saper.rbt.zip|saper.rbt.zip}} - implementacja algorytmu Saper w natywnym środowisku LEGO Mindstorms. | |
* {{:pl:miw:miw08_mindstormsenv:patrol.rbt.zip|patrol.rbt.zip}} - implementacja algorytmu Patrol w natywnym środowisku LEGO Mindstorms. | |
| |
Spróbuj porównać implementację algorytmów z diagramami aktywności, które je opisują: | - Ściągnij implementację algorytmów dla środowiska LEGO: |
* [[pl:miw:miw08_mindstormsenv:materialy#Saper|algorytm Saper]] - diagram | * {{:pl:miw:miw08_mindstormsenv:saper_rbt.zip|saper_rbt.zip}} - implementacja algorytmu Saper w natywnym środowisku LEGO Mindstorms. |
* [[pl:miw:miw08_mindstormsenv:materialy#Patrol|algorytm Patrol]] - diagram | * {{:pl:miw:miw08_mindstormsenv:patrol_rbt.zip|patrol_rbt.zip}} - implementacja algorytmu Patrol w natywnym środowisku LEGO Mindstorms (wersja nieco różniąca się od wersji napisanej w BrixCC (uboższa))FIXME. |
| - Podłącz robota poprzez USB do komuptera. |
| - Uruchom środowisko Mindstorms NXT. Wybierz File->Open..., a następnie wskaż uprzednio rozpakowany plik z implementacją algorytmu. |
| - Zapoznaj się z kodem algorytmów. |
| - Załaduj program na kostkę. |
| - Spróbuj porównać implementację algorytmów z diagramami aktywności, które je opisują: |
| * [[pl:miw:miw08_mindstormsenv:materialy#Saper|algorytm Saper]] - diagram |
| * [[pl:miw:miw08_mindstormsenv:materialy#Patrol|algorytm Patrol]] - diagram |
| |
| |
==== Brixcc ==== | |
| ==== BrixCC ==== |
| |
| - Ściągnij implementację algorytmów dla środowiska BrixCC: |
| * {{:pl:miw:miw08_mindstormsenv:saper_nxc.zip|saper_nxc.zip}} - implementacja algorytmu Saper w języku NXC. |
| * {{:pl:miw:miw08_mindstormsenv:patrol_nxc.zip|patrol_nxc.zip}} - implementacja algorytmu Patrol w języku NXC. |
| - Podłącz robota poprzez USB do komputera. |
| - Uruchom środowisko BrixCC. |
| - W oknie, które się pojawi wybierz: |
| * Port - Automatic |
| * Brick Type - NXT |
| - Otwórz plik z wcześniej ściągniętym kodem (File->Open...) |
| - Zapoznaj się z kodem algorytmów (czytanie kodu należy rozpocząć od metody main() znajdującej się na samym końcu pliku z kodem źródłowym). |
| - Skompiluj oraz prześlij program na kostkę |
| - Podobnie jak w poprzednim przykładzie porównaj implementację z diagramami algorytmów (diagramy są te same). |
| |
==== Microsoft Robotics Studio ==== | ==== Microsoft Robotics Studio ==== |
| |
| Ponieważ środowisko Microsoft Robotics Studio udostępnia inne od ww. środowisk możliwości, przygotowane zostały inne programy pokazujące możliwości tego środowiska. |
| Działanie przygotowanego programu zostało przedstawione [[pl:miw:miw08_mindstormsenv:materialy#Messages|tutaj]].\\ |
| Aby uruchomic program należy: |
| - Ściągnij plik {{:pl:miw:miw08_mindstormsenv:messages.zip|messages.zip}}, a następnie go rozpakuj |
| - Upewnij się, że do komputera podłączony jest adapter BlueTooth |
| - W środowisku Lego Mindstorms NXT załaduj plik Msg.rbt, zapoznaj sie z nim, a następnie skompiluj i przeżlij do modułu NXT |
| - W środowisku Microsoft Robotics Studio otwórz projekt Messages, zapoznaj się z nim |
| - Upewnij się czy blok LegoNXTBrickv2(pierwszy blok na schemacie wskazuje na właściwy port, przez który odbywa się koumunikacja) |
| - Uruchom program |
| Po chwili powinno otworzyć się okno przegladarki internetowej zawierające informacje o połączeniu. Po uruchomieniu pojawiają się także 'alerty' informujące o sukcesie/niepowodzeniu kolejnych kroków. |
| \\ |
| Uwaga: Komunikacja poprzez BlueTooth dla niektórych adapterów jest uciążliwa. Jeżeli nie można się połączyć należy spróbować kilkakrotnie (za każdym razem upewniając się czy na kostce NXT widnieje symbol nawiązanego połączenia BlueTooth "B<>") |
| ===== Sprawozdanie ===== |
| |
| Proszę o przesłanie informacji dotyczących: |
| * Waszych uwag (plusy/minusy) sprawdzanych środowisk |
| * problemów z uruchamianiem algorytmów |
| * problemów z działaniem algorytmów |
| |
| na adres: <dziedzia@student.agh.edu.pl> |
| |
| |
| |