Matematyka i roboty
Matematyka i roboty
W latach osiemdziesiątych dwudziestego wieku Seymour Papert (MIT) nakreślił zręby nowoczesnej edukacji informatycznej, publikując książkę Burze mózgów – dzieci i komputery [2]. Piagetowska wizja edukacji połączona z komputerami zainspirowała powstanie wielu efektywnych narzędzi dydaktycznych i zapoczątkowała – między innymi – proces wprowadzania robotyki do szkół. A wszystko zaczęło się od żółwi sterowanych językiem Logo. W latach dziewięćdziesiątych firma LEGO, przy dużej współpracy S. Paperta i jego zespołu, stworzyła system robotyki nazwany – za tytułem książki – MINDSTORMS. Po ogromnym sukcesie pierwszych dwóch generacji (RCX oraz NXT) powstała aktualna wersja robota (EV3) w dwóch całkowicie różnych odsłonach – edukacyjnej oraz domowej.
Przykład – funkcja liniowa inaczej
Z funkcjami liniowymi (a raczej z ich wykresami) uczniowie spotykają się podczas lekcji matematyki w gimnazjum, by potem pogłębić swoją wiedzę na ten temat na IV etapie edukacyjnym. Nieczęsto jednak wykorzystuje się wiedzę na temat funkcji liniowej w sytuacjach praktycznych. W scenariuszu przyjrzymy się śledzeniu linii przez robota i zaprzęgniemy matematykę do poprawienia działania podstawowego algorytmu wykorzystywanemu w takich przypadkach. Wykorzystamy w tym celu jedną z klasycznych konstrukcji edukacyjnego robota LEGO MINDSTORMS EV3 oraz graficzny język programowania stworzony przez firmę National Instruments do pracy z robotami LEGO. Ćwiczenie przeznaczone jest dla uczniów III lub IV etapu edukacyjnego.
Robot poruszający się po trasie wyznaczonej na podłożu to codzienność w wielu zautomatyzowanych fabrykach. Kluczem do najbardziej wydajnego działania systemu jest takie zaprogramowanie robota, żeby jego ruch był najbardziej płynny, możliwie najszybszy oraz odporny na zakłócenia. Przyjrzyjmy się bliżej temu problemowi.
Najprostszym algorytmem poruszania się po linii jest metoda zwana zig-zap, od ruchu, jaki wykonuje robot podczas śledzenia trasy. Skierowany w dół czujnik światła odbitego sprawdza zaczernienie obszaru, a na ruch postępowy robota nałożone zostają kolejne zakręty w jedną lub drugą stronę, w zależności od odczytu sygnału z czujnika. Taki robot poruszać się będzie „wężykiem” wzdłuż krawędzi narysowanej linii.
Na rysunku przedstawiony został program realizujący algorytm zig-zap w języku graficznym LEGO Mindstorms EV3. Jeśli odczyt z czujnika pokazuje zbyt wysoką wartość (robot zjechał z linii), skręcamy w lewo, jeśli odczyt pokazuje wartość zbyt niską (robot za mocno najechał na linię) – skręcamy w prawo. Poprawne działanie algorytmu zależy od odpowiedniego dobrania wartości granicznej (w tym przypadku ustawionej na „50”).Uczniowie zaczynają od zbudowania prostego robota z czujnikiem światła (według instrukcji) i testują działanie robota na przykładowym torze.
Efekt pracy programu można zobrazować na wykresie, wykorzystując wbudowane w aplikację LEGOM MINDSTORMS Education EV3 narzędzie akwizycji danych. Na osi odciętych umieszczamy czas mierzony w sekundach, na osi rzędnych umieszczamy kąty obrotu obu serwomotorów oraz jasność odczytywana przez czujnik światła. Można zauważyć, że robot porusza się zygzakiem, a sygnał mierzony przez czujnik zmienia się znacznie w czasie.
Czy – i jak – można poprawić płynność ruchu naszego robota?
Optymalizacja
Zaczynamy od określenia optymalnej wartości granicznej odczytu z czujnika światła dla naszego toru. Uczniowie mogą wyznaczyć ją na kilka sposobów, najprostsza (i najczęściej również wykorzystywana) jest metoda polegająca na wyznaczeniu średniej z „najciemniejszego” i „najjaśniejszego” odczytu. W naszym przypadku są to – odpowiednio: 5% oraz 85%. Wartość graniczna w takiej sytuacji to 45% – taką jasność będzie miała dla czujnika krawędź linii i to po niej robot powinien się poruszać. Im bardziej odczyt będzie się różnił od wartości granicznej, tym robot szybciej będzie korygował swój ruch, aby wrócić na zadany tor. Parametry sterowania możemy wyznaczyć z prostego układu równań, lub korzystając z narzędzia „Linia trendu” w arkuszu kalkulacyjnym.
Do wykonania tego ćwiczenia uczniowie mogą wykorzystać blok ruchu sterowanego, który pozwala na określenie kierunku jazdy robota w postaci parametru liczbowego: wartości „0” odpowiada jazda prosto, wartości dodatnie powodują, że robot skręca w prawo (im większa wartość, tym zakręt ostrzejszy, aż przy „100” robot zaczyna obracać się w miejscu), analogicznie – wartości ujemne powodują skręcanie w lewo.
Na rysunku pokazany został przykładowy program realizujący opisane algorytm sterowania. Funkcja liniowa, której parametry zostały wyznaczone, zapisana jest w bloku matematycznym, a wynik obliczeń przekazywany jest bezpośrednio do parametru kierunku w bloku ruchu. Moc silników ustawiamy na konkretną wartość (25% w przykładzie).
Po raz kolejny wykorzystujemy moduł eksperymentów, żeby pokazać na wykresie ruch silników oraz odczyty z czujnika światła – tym razem tor ruchu jest wygładzony, a wartości „widziane” przez czujnik są znacznie bliższe obliczonej wartości granicznej.
Po sprawdzeniu algorytmu zadaniem uczniów jest dalsza optymalizacja, np. poprzez lepsze dopasowanie parametrów, zwiększenie lub zmniejszenie mocy, wybór innej funkcji sterującej albo określenie dodatkowej zależności wpływającej również na moc silników.