1. Tytułem wstępu

Drugie laboratorium z Lego Mindstorms postawiło przed nami zadanie zbudowanie 1-2 prostych algorytmów zachowania się robota. Najczęściej polegało to na zadaniu jakiejś prostej trajektorii ruchu, oraz odpowiednich schematów zachowań na dane z odpowiednich sensorów. Postanowiliśmy zaimplementować pierwszy proponowany algorytm, czyli „Patrol”. Okazało się, że to co jest proste w założeniach, niekoniecznie musi być proste w przypadku korzystania z oprogramowania dostarczonego przez producenta klocków.

2. Wykonanie ćwiczenia

Po długich i wyjątkowo nieprzyjemnych zmaganiach, które opiszę w następnym podpunkcie udało nam się zbudować algorytm, którego graficzną reprezentację zamieszczamy poniżej.

Niestety nie udało nam się spełnić wszystkich założeń algorytmu, z uwagi na problem ze zbudowaniem równolegle wykonujących się zadań. W każdym razie, widoczny powyżej program to jazda po wyznaczonym torze (kwadrat) - aby w ogóle rozpocząć wykonywanie programu należy dać robotowi sygnał dźwiękowy, np. klaśnięcie. W momencie jazdy cały czas monitorowany jest sensor odległości - w przypadku przeszkody znajdującej się bliżej od zadanej odległości, robot wykonuje operację wymijającą, czyli skręca:). Zamieszczamy również krótki filmik prezentujący zbudowany algorytm w akcji.

Film do pobrania: filmik_lab2.rar Program do pobrania: lab2.rbt

3. Komentarz i uwagi

To bardzo dziwne, ale największą trudność na tych zajęciach sprawia specyficzne oprogramowanie, w jakim pracujemy. Widać jak na dłoni, że zostało pomyślane o dzieciach/młodzieży, która chciałaby nauczyć się programować. Ludzie, którzy mają pewne doświadczenie z innymi językami programowania, czy chociażby z pakietem Matlab/Simulink mają problem z przestawieniem się na specyficzny tok myślenia proponowany przez twórców Mindstorms. Pojawiają się pytanie, np. dlaczego w przypadku budowy aplikacji z równolegle działającymi fragmentami, program faktycznie sprawdza równolegle stan sensorów, jednak w przypadku zgłoszenia od jednego z nich i wykonania przypisanej takiemu zdarzeniu akcji, nie powraca do pozostałych wątków - program się kończy.

Niejasne są też zachowania programu podczas przesuwania poszczególnych bloczków. Dlaczego istniejące już połączenia często zostają zerwane? Czasami coś lubi zniknąć samoczynnie, lub w efekcie niezamierzonego ruchu myszą - podobnych przypadków jest bardzo wiele.

Być może coś źle robimy, ale moim zdaniem na tych labolatoriach faktycznie powinniśmy ćwiczyć implementacje konkretnych algorytmów, a nie walczyć z nielogicznie zachowującym się oprogramowaniem, czy domyślać się, jak zbudować jakiś schemat (gdzie jest rozgałęzienie typu case?). Poddaje to w wątpliwość walory edukacyjne tych ćwiczeń.

pl/dydaktyka/jsi/2009/sprawozdania/jsi20091209-11b.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