Celem trzeciego i ostatniego laboratorium dotyczącego LEGO Mindstorms była kontynuacja pracy w środowisku dostarczonym przez LEGO. Mieliśmy w związku z tym zrealizować kilka bardziej skomplikowanych algorytmów. Ponieważ robot (Bolek) był już wcześniej zbudowany, od razu zaczęliśmy tworzyć algorytmy sterujące nim. Zamiast zdjęć, zamieszczamy linki do filmów z wykonywanych programów. Przy pierwszym programie mieliśmy problem przy wgraniu go do robota. Powodem był nasz błąd, w programie pojawiła się nieprawidłowa szyna „schowana” za pętlą (minus dla środowiska LEGO), przez co pojawiała się informacja o błędzie. Przy próbie naprawienia testowaliśmy drugiego robota (Irek), a później używaliśmy go do realizacji niektórych programów.
Widok po usunięciu pętli.
Zrealizowaliśmy następujący algorytm:
Film: http://www.youtube.com/watch?v=RFSOZnVlfx4
Film (awaryjne wyłączenie): http://www.youtube.com/watch?v=kSVfDRdPiMA
Zrealizowaliśmy następujący algorytm (prawie identyczny jak poprzedni):
Tylko część zawierająca modyfikację (inny sensor, inna wartość progowa).
Film: http://www.youtube.com/watch?v=Zbyo0L0BaMA
Film (awaryjne wyłączenie): http://www.youtube.com/watch?v=Inko8LEXaG4
Przy tym programie trzeba było dość dokładnie określić wartość progową natężenia światła, co można zrobić uruchamiając program przy podłączonym robocie i obserwując dane zwracane przez sensor, sprawdzić, jaka jest wartość natężenia przy wjechaniu na białą kartkę.
Zrealizowaliśmy następujący algorytm (podobny do poprzednich):
Zrealizowaliśmy następujący algorytm (niewiele różny do poprzednich):
Tylko część zawierająca modyfikację (inne zachowanie po sygnale dźwiękowym).
Ponieważ algorytmy były do siebie bardzo podobne, szybko wykonaliśmy zasadniczą część zajęć i postanowiliśmy przetestować możliwości komunikacji Bluetooth. Wykorzystaliśmy to, że mogliśmy korzystać z dwóch robotów. Pierwszy pomysł to „Przewodnik i ślepiec”. Programy korzystające z komunikacji Bluetooth trzeba podzielić na ten dla odbiornika i ten dla nadajnika. Program dla nadajnika („Przewodnik”) wykonywany w nieskończonej pętli:
Program dla odbiornika („Ślepiec”) wykonywany w nieskończonej pętli:
Żeby uruchomić programy trzeba je wgrać do pamięci robotów, a także nawiązać komunikacje pomiędzy nimi. Jest to dość proste i używa się do tego tylko Bricka (a raczej obu Bricków). Dodatkowo usunęliśmy odbiornikowi („Ślepcowi”) sensor odległości, by lepiej było widać, że z niego nie korzysta.
Film: http://www.youtube.com/watch?v=Si3hFR-oqFA
Niestety, jak widać nie udało nam się spowodować, by roboty skręcały tak samo. Te same ustawienia silników do obrotu skutkowały różnym wykonaniem. Żeby tego dokonać trzeba by jeszcze przeprowadzić dodatkowe testy i zadbać o identyczność w budowie (Irek ma chyba źle zbudowany przód).
Następny program polegał na sterowaniu odbiornikiem poprzez skręcanie kołem nadajnika. Skorzystaliśmy z tego, że silniki są jednocześnie sensorami obrotu. Program dla nadajnika („Kontrolera”) wykonywany w nieskończonej pętli:
Program dla odbiornika wykonywany w nieskończonej pętli:
Film: http://www.youtube.com/watch?v=vJrK11hhfqw
Jak widać sterować należało delikatnie. Można by dodatkowo przeskalować wartość zwracaną przez sensor silnika.
Laboratorium było udanym poznawaniem dalszych możliwości LEGO Mindstorms NXT. Tak, jak wcześniej, korzystaliśmy ze środowiska LEGO, przez co mieliśmy czasem problemy (szyna za pętlą). Używaliśmy linków, a także udało nam się wykorzystać Bluetooth i zrealizować program, który podaliśmy w propozycjach po laboratorium 2. Widać, że programy korzystające z komunikacji są bardzo proste, a dają wyjątkowe powiększenie możliwości programowania. Jeszcze ciekawsze byłoby zbudowanie kontrolera do robota (drugi Brick, silniki do sterowania lewo – prawo lub wartość prędkości, sensor dotyku do włączania/wyłączania, drugi sensor dotykowy do używania funkcji specjalnych robota, np. ruch szczękami, itp. itd.). Zdajemy sobie jednak sprawę, że wymagałoby to dość dużych dodatkowych zakupów a także poświęcenia czasu na budowę kontrolera.
Propozycje zmiany laboratorium: