To jest stara wersja strony!
Opis
Projekt zakończony
Lukasz Zalewski, zalewik@gmail.com
High-level NXT programming, design tools, XTT applications
Spotkania
Projekt
Regułowe algorytmy sterowania
Poniższe algorytmy zostały opracowane dla robota mobilnego TriBot. Jest to rozbudowana wersja robota z katalogu zestawu mindstorm:
W algorytmach wykorzystano wszystkie użyte sensory (tak jak widać na obrazku: echosonda, mikrofon, czujnik dotyku i sensor natężenia światła).
-
-
-
-
-
Wadą powyższych algorytmów jest brak informacji o położeniu. Robot nie ma punktów odniesienia. Nie zna swojej pozycji. Stąd trudno wymagać, by poruszał się w zadanym kierunku nawet po napotkaniu przeszkody. Sytuację tą można poprawić wprowadzając możliwość zapisu pomiarów z czujników.
Algorytmy genetyczne
Można również rozważyć wykorzystanie algorytmów genetycznych do sterowania robotami. Tym zagadnieniem zajmują się już inne uczelnie Southwestern University, Georgetown, TX
Bardzo ciekawe zastosowanie algorytmów genetycznych w przypadku robotów zaprezentowano na naukowym zjeździe fundacji Ted. Przedstawiono tam algorytm, który sam generuje sterowanie wiedząc tylko tyle, że ma kilka serwomechanizmów i czujników.
Sprawozdanie
Opisane algorytmy sterowania z internetu
W pierwszej iteracji projektu należało znaleźć możliwie jak najwięcej przykładów sterowania robotami. Niestety, informacji na ten temat jest niewiele. Większość materiału jest nie udokumentowana, cześciej spotykane były wzmianki lub prezentacje sterowania robotami.
Ciekawostką jest to, że również inne europejskie uczelnie zajmują się opracowywaniem sterowania, prowadzą laboratoria z MindStormów.
Udokumentowane algorytmy (przykłady) sterowania robotami mobilnymi - z sieci:
Algorytmy - zapis regułowy
W drugiej iteracji należało zastanowić się i zapisać algorytmy sterowania dla wymyślonego robota Mindstorm. Do tego celu użyto robot TriBot, który zawiera wszystkie dosŧępne sensory.
Przy zapisie regułowym pojawiło się parę niejasności:
Czy reguły mają się wykluczać? I jeżeli nie, to wówczas jaki przyjąć sposób ich „odpalania”.
Czy mogą zostać użyte więcej niż jedna reguła na raz?
Od tych zasadniczych pytań zależy sposób zapisania reguł. Wydaje się oczywiste, że najlepiej byłoby dążyć do tego by reguły były zupełne i jednocześnie wykluczały się. Jednak taki zapis nie jest prosty. Oraz narzuca pewne wymogi.
W projekcie wykorzystano zarówno reguły wykluczające się jak i takie, które są luźne. Przy tych ostatnich przyjęto, że wywoływana jest pierwsza poprawna reguła (zapis ten przypomina Prolog).
| Reguły wykluczające się | Luźny zapis |
| + pewniejszy zapis | + brak ograniczeń |
| + proste zasady | + mniej reguł |
| - większa ilość reguł | - problem z wywolywaniem reguł |
| - narzucona koncepcja. W niektórych przypadkach utrudnia zapis | |
Pojedyncze wywołanie | Jest to najlepsze sposób wywoływania | Prowadzi do formalizacji(szczegułowaści) zapisu, zwiększa ilość reguł |
Monitorowanie | Nie jest potrzebne | Może prowadzić do wywołania więcej niż jednej reguły |
Nawroty | Są zbędne, niczego nowego nie wprowadzają | Najlepsze podejście. Reguły tworzą logiczną ścieżkę przejść |
Po przyjęciu sposobu zapisu reguł i przyjęciu mechanizmu ich wywoływania, przystąpiono do ich zapisu. I tu również pojawił się problem. Mianowicie, w przypadku bardziej złożonych algorytmów trudno było wydzielić takie elementy jak:
Czy raz wpisana wartość atrybutu zostaje zachowana do następnej zmiany?
Atrybuty z pamięcią | Atrybuty bez pamięci |
+ dodatkowa informacja o stanie robota | + brak konieczności zapewniania zerowaniana wartości |
- należy pamiętać, że wówczas inkrementujemy wartości, np. turn += 45 zamiast turn = 45 | + prosty zapis |
- konieczność zerowania wartości w celu np. zatrzymania robota po wykonaniu reguły | - zerowanie wymusza konieczność ponownego pozyskania informacji o stanie robota co prowadzi do zwiększenia ilości atrybutów |
| ? zerowanie powinno odbywać się albo po wykonaniu reguły, albo przy kolejnym cyklu (metoda „Pojedyncze wywołanie”) |
W projekcie przyjęto, że dla reguł atrybuty są wartościami bez pamięci.
Podjęto próbę dokonania zapisu wg przykładu z termostatem. Czyli dokonania grupowania atrybutów. Wady i podejścia tego zapistu zostały przedstawione w punkcie XTT.
Prolog - UWAGI
XTT - UWAGI
ARD - UWAGI
wydzielanie atrybutów dla algorytmów sterowania nie zawsze jest łatwe. Pojawiają się problemy z rozróżnieniem akcji od atrybutu.
również, atrybuty występują w w różnych częściach algortymu. Stąd, relacje pomiędzy atrybutami często są złożone. Przejawie się to choćby w późniejszej realizacji XTT. Czytelność XTT jest słaba.
Program HQED - UWAGI
podczas przeciągania połączenia od jednej tabeli do drugiej pojawiają się błędy. A dokładniej linia (connector) nie podąża za kursorem, co uniemożliwią dokonanie poprawnego połączenia tabel
obecna wersja programu nie jest jeszcze stabilna. Program zawiesza się np. przy wprowadzaniu danych do tabel.
Materiały
Oprócz wyżej zaprezentowanych materiałów znaleziono:
google.books.com zawiera wiele materiałów z gotowymi projektami LEGO MINDSTORMS. W tym jak zbudować i zaprogramować roboty jeżdżące, chodzące itp.
na sieci znajduje się wiele rozważań dotyczących tematyki sterowania robotami mobilnymi. Są to jednak prace ujmujące zagadnienie w sposób matematyczny. Tworzone są modele matematyczne, a następnie analizowane są przeprowadzone wcześniej symulacje. Np:
zfilmowane projekty robotów: