Sprawozdanie z laboratorium 3

1. Wstęp

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.

2. Programowanie robota

2.1 Magazynier

Zrealizowaliśmy następujący algorytm:

  1. Otwarcie szczęk (zakładamy, że są zamknięte).
  2. Jazda, aż do napotkania kulki.
  3. Zatrzymaj się, złap kulkę.
  4. Poczekaj 1 sekundę, zawróć.
  5. Jedź do przodu, zbieraj informacje o odległości do przeszkody i natężenia dźwięku.
  6. Przy przekroczeniu jednej z wartości progowych zatrzymaj się i wypuść kulkę.

Film: http://www.youtube.com/watch?v=RFSOZnVlfx4

Film (awaryjne wyłączenie): http://www.youtube.com/watch?v=kSVfDRdPiMA

2.2 Magazynier 2

Zrealizowaliśmy następujący algorytm (prawie identyczny jak poprzedni):

  1. Otwarcie szczęk (zakładamy, że są zamknięte).
  2. Jazda, aż do napotkania kulki.
  3. Zatrzymaj się, złap kulkę.
  4. Poczekaj 1 sekundę, zawróć.
  5. Jedź do przodu, zbieraj informacje o odległości do przeszkody i natężenia światła na podłożu.
  6. Przy przekroczeniu jednej z wartości progowych zatrzymaj się i wypuść kulkę.

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ę.

2.3 Zlodziej

Zrealizowaliśmy następujący algorytm (podobny do poprzednich):

  1. Otwarcie szczęk (zakładamy, że są zamknięte).
  2. Jazda, aż do napotkania kulki.
  3. Zatrzymaj się, złap kulkę.
  4. Poczekaj 1 sekundę, cofnij, zawróć.
  5. Jedź do przodu, zbieraj informacje o natężeniu dźwięku.
  6. Przy przekroczeniu wartości progowej zatrzymaj się.

Film: http://www.youtube.com/watch?v=EzEyudtwm8g

2.4 Zlodziej 2

Zrealizowaliśmy następujący algorytm (niewiele różny do poprzednich):

  1. Otwarcie szczęk (zakładamy, że są zamknięte).
  2. Jazda, aż do napotkania kulki.
  3. Zatrzymaj się, złap kulkę.
  4. Poczekaj 1 sekundę, cofnij, zawróć.
  5. Jedź wolno do przodu (skradaj się), dopóki natężenie dźwięku nie przekroczy wartości progowej („Stać, policja!”).
  6. Przy przekroczeniu wartości progowej, przyspiesz (uciekaj) i unikaj przeszkód.

Tylko część zawierająca modyfikację (inne zachowanie po sygnale dźwiękowym).

Film: http://www.youtube.com/watch?v=rpnR6yj2VGk

2.5 Komunikacja Bluetooth 1

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:

  1. Jazda, aż do napotkania przeszkody.
  2. Wysłanie informacji o przeszkodzie i zawrócenie.

Program dla odbiornika („Ślepiec”) wykonywany w nieskończonej pętli:

  1. Jazda, aż do odebrania informacji od nadajnika.
  2. Zawrócenie.

Ż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).

2.6 Komunikacja Bluetooth 2

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:

  1. Pobieranie wartości skręcenia koła.
  2. Od danej odejmowanie wartości 180 (w celu osiągnięcia ujemnych wartości) i wysyłanie wyniku.

Program dla odbiornika wykonywany w nieskończonej pętli:

  1. Odebranie informacji i wysyłanie jej na sterowanie robotem.

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.

3. Podsumowanie

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:

  1. Bardziej różnorodne algorytmy.
  2. Programy korzystające z komunikacji Bluetooth.
  3. Tworzenie programów razem z drugą grupą (możliwość użycia dwóch robotów do komunikacji), bardzo zwiększałoby to możliwości na laboratorium. Pozwalałoby to na realizację ciekawszych programów bez dodatkowych zakupów dla laboratorium.
  4. Używanie większej ilości sensorów (wymiana z inną grupą). Dzięki temu można by używać dwóch sensorów dźwięku i łatwo (i ciekawie) realizować program podążania za źródłem dźwięku lub dwóch sensorów odległości (parkowanie), lub 2 sensorów światła (followliner). Niestety, takie zmiany (może poza użyciem dwóch sensorów dźwiękowych) wymagałyby ingerencji w budowę robota, co zabrałoby cenny czas na laboratorium, a dodatkowo wprowadzało problemy z zachowaniem porządku w częściach należących do konkretnego robota.

4. Spakowane programy

pl/dydaktyka/jsi/2009/sprawozdania/jsi20091216-09a.txt · ostatnio zmienione: 2019/06/27 15:50 (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