W sobotę 20 maja na Politechnice Gdańskiej odbyła się  dziewiąta edycja Trójmiejskiego Turnieju Robotów (TTR). Większość ludzi oglądających to wydarzenie na żywo może nie zdawać sobie sprawy z różnych szczegółów technicznych dotyczących robotów startujących w zawodach. Pomyślałem więc, żeby dokładniej opisać zastosowane rozwiązania, decyzje projektowe i trudności do pokonania kryjące się za poszczególnymi konstrukcjami. Postaram się również przybliżyć specyfikę poszczególnych konkurencji i omówić najczęściej stosowane taktyki. Materiału mam dosyć sporo, dlatego podzielę relację na dwie części. Dzisiaj skupię się na robotach z kategorii Freestyle. Natomiast konkurencje Line Follower, Sumo i Micromouse zostaną omówione w kolejnym odcinku.

O kategorii freestyle

Kategoria freestyle na turniejach robotów jest okazją do zaprezentowania konstrukcji z wielu różnych dziedzin. Roboty nie mają narzuconego konkretnego zadania do wykonania. Każdy uczestnik otrzymuje do dyspozycji stanowisko, na którym może zaprezentować swojego robota publiczności. Roboty są oceniane przez jury oraz głosowanie publiczności. Konstrukcje startujące w tej konkurencji są bardzo różnorodne. Zdarzają się roboty kroczące, humanoidy, roboty balansujące, latające oraz konstrukcje zupełnie niekonwencjonalne. Dużo jest również konstrukcji wykonanych z Lego Mindstorms. W kolejnych akapitach przejdę do omówienia najciekawszych konstrukcji, jakie można było zobaczyć podczas TTR.

Leon – robot balansujący na piłce

Leon to robot balansujący na piłce do kosza inspirowany droidem BB-8 z „Przebudzenia Mocy”. Projekt ten zrobił na mnie największe wrażenie. Widać, że autor włożył w niego ogromną ilość pracy. Konstrukcja mechaniczna i elektronika zostały zaprojektowane samodzielnie. Opis matematyczny ruchu robota opartego na kuli jest dosyć skomplikowany. W implementacji należało wykorzystać obliczenia macierzowe i zmiennoprzecinkowe, a testowanie oprogramowania wykorzystującego zaawansowane obliczenia matematyczne nie należy do łatwych zadań.

Robot balansujący, czy też odwrócone wahadło jest jednym z typowych akademickich problemów teorii sterowania. Masa znajdująca się na pewnej wysokości nad ziemią znajduje się w stanie równowagi chwiejnej. Po wytrąceniu jej ze stanu równowagi należy wprawić w ruch dolną część wahadła przylegającą do ziemi tak, aby układ wrócił do pierwotnego stanu. Zadanie jest dosyć skomplikowane, ponieważ układ jest z natury niestabilny – jeżeli nie jest sterowany, dąży do przewrócenia się. Klasyczny robot balansujący porusza się na dwóch kołach. Wahadło wtedy odbiega od punktu równowagi w jednej płaszczyźnie. Projektant tego robota utrudnił sobie życie, ponieważ wahadło balansujące na piłce może poruszać się w przestrzeni 3D. Oznacza to, że należy śledzić dwa kąty odchylenia robota – wokół osi X i Y.

Innym ciekawym problemem jest napęd robota. Trzy silniki służą do wprawienia piłki w ruch. Do silników przymocowane są specjalne koła składające się z dwóch części. Zewnętrzna biała część jest sztywna i przekazuje obroty z danego silnika na piłkę. Wewnętrzna srebrna część natomiast składa się z ruchomych rolek umożliwiających kręcenie się piłki we wszystkie strony, kiedy silnik pozostaje bez ruchu. Sterowanie ruchem robota od strony programowej również jest skomplikowane. Ruch silników nie przekłada się bezpośrednio na ruch robota w danej płaszczyźnie. Niezbędne jest dokonanie przekształceń matematycznych pozwalających wyznaczyć wartości zadane na wszystkie trzy silniki realizujące zadany ruch.

Jeżeli chodzi o zasadę działania robota, to informacje o jego aktualnym położeniu w przestrzeni zbierane są za pomocą czujnika IMU składającego się z 3-osiowego akcelerometru i 3-osiowego żyroskopu. Nie pamiętam, czy magnetometr również jest wykorzystywany. Z zebranych pomiarów następnie usuwane są zakłócenia przy pomocy filtra komplementarnego. Wartości te są przekazywane do kaskady regulatorów PID wyznaczających wartości sterowania podane na silniki wyliczone na bazie odchyleń kątowych. Robota w akcji można zobaczyć na filmiku:

Robot czyszczący kominy

Kolejną konstrukcją z kategorii Freestyle jest prototyp robota służącego do czyszczenia kominów. Jest to pomysłowa konstrukcja stworzona, aby rozwiązać konkretny problem. Można zobaczyć go w akcji na filmiku:

Robot porusza się na sznurku montowanym na górze komina. Za pomocą silnika może się podciągać i opuszczać. Dzięki zastosowaniu ruchomych ramion robot dopasowuje się do szerokości komina. Kolejny silnik służy do kręcenia szczotkami czyszczącymi komin. Robotem można sterować za pomocą pilota połączonego z robotem za pomocą kabla. Pilot umożliwia sterowanie góra/dół oraz włączanie/wyłączanie szczotek. Autor przewidział możliwość zamontowania kamery, aby operator mógł podglądać działanie robota w kominie.

Pomysł stworzenia robota do czyszczenia kominów jest dosyć oryginalny. Istnieją podobne konstrukcje służące do inspekcji rur kanalizacyjnych, ale kominów na razie nikt w ten sposób nie czyści. Żeby ten pomysł mógł zostać zastosowany na szerszą skalę, projektant musi rozwiązać jeszcze kilka problemów. Najważniejszą wadą utrudniającą użytkowanie w realnych warunkach jest potrzeba zamontowania robota na szczycie komina. Zastosowanie pilota na kabel również jest niepraktyczne. Kabel musi ciągnąć się na całą długość komina – tutaj nie ma problemu, bo robot i tak opuszcza się na sznurku – a potem jeszcze od szczytu komina do stanowiska operatora.

Robot grający w warcaby

Podczas TTR można było również zagrać z robotem w warcaby. Został on stworzony przy użyciu Lego Mindstorms. Pionkami porusza robot kartezjański. Aktualna pozycja na planszy jest odczytywana przez kamerę. Sterowanie chwytakiem robota, analiza obrazu z kamery oraz wybór ruchu do wykonania są realizowane przez aplikację na komputer PC napisaną w Javie. Robot w akcji został uwieczniony na filmiku:

Lego mindstorms zostało tutaj użyte jedynie jako elementy wykonawcze. Nie ma na nich zaprogramowanej żadnej logiki. Aplikacja PC komunikuje się z Lego za pomocą protokołu TCP i wysyła bezpośrednie komendy sterowania silnikami. Obraz z kamery jest analizowany przy pomocy bliblioteki OpenCV. Algorytm wyboru ruchu wykorzystuje drzewo możliwych ruchów i metodę min-max. Zapomniałem dopytać na ile ruchów do przodu program liczy.

Podobny pomysł był już wcześniej realizowany podczas dni otwartych PG. Wtedy można było zagrać w szachy przeciwko robotowi przemysłowemu. Jest jednak jedna ważna różnica. Tamten projekt został zrealizowany przez pracowników PG, a ten zrobiła grupa licealistów.

Konstrukcje z Lego Mindstorms

Skoro jesteśmy już przy temacie Lego Mindstorms i licealistów – na turnieju pojawiło się bardzo dużo konstrukcji wykonanych z Lego przez uczniów. Na zdjęciach poniżej robotyczna ręka  i robotyczna głowa. Poza tym był jeszcze między innymi jednoręki bandyta i ploter. Odbywały się również oddzielne konkurencje Lego Sumo i Lego Line Follower.

 

 

 

 

Jest to świetna promocja robotyki i technologii w ogóle wśród uczniów. W szkołach powstają kółka, na których uczniowie przygotowują konstrukcje na turnieje. Przy okazji mogą się nauczyć programowania, elektroniki, czy fizyki rozwiązując praktyczne problemy. Dzięki temu nawet jak pójdą na studia i zostaną zalani teorią, całkami, wzorami pełnymi greckich liter itp. nie zniechęcą się, bo będą wiedzieć jak fajne rzeczy można dzięki temu zrobić.

Lem – łazik marsjański

Kolejna konstrukcja nie brała udziału w konkursie, ale na pewno zasługuje na opis. Została wystawiona na stoisku organizatora – koła naukowego SKALP.  Jest to łazik marsjański i kiedy go zobaczyłem pierwszy raz, byłem nieźle zaskoczony. Moje zaskoczenie było jeszcze większe, kiedy dowiedziałem się, że jest to efekt współpracy między wieloma wydziałami i pracuje przy nim ponad 20 osób. Za moich czasów projekty zawsze były prowadzone w 2-3 osoby, zwykle z tej samej grupy, a współpraca między wydziałami była wręcz zwalczana. Widać, że coś zmienia się na lepsze.

Łazikowi zrobiłem kilka zdjęć, które zamieszczam poniżej. Niestety przy stoisku nie było wtedy nikogo, kto by opowiedział więcej o szczegółach implementacyjnych i odpowiedział na pytania. Udało mi się za to znaleźć co nieco w necie – link.

 

 

 

 

 

 

 

 

 

 

 

Taki łazik to duża i ciężka konstrukcja. Może ważyć nawet kilkadziesiąt kilogramów, dlatego niezbędny jest dobry projekt konstrukcji mechanicznej. W tego typu konstrukcjach standardem jest niezależny napęd i zawieszenie dla każdego koła. Dzięki temu robot może poruszać się w trudnym terenie i pokonywać różnego rodzaju dziury, czy kamienie.

Elektronika została rozbita na wiele małych płytek porozmieszczanych w różnych miejscach robota. Przy takiej konstrukcji jest to jedyne sensowne rozwiązanie. Umożliwia separację poszczególnych elementów funkcjonalnych. Dzięki temu można łatwiej usuwać usterki albo ulepszać pojedyncze elementy. Poszczególne moduły połączone są przewodami zasilającymi i komunikacyjnymi. Jak widać na zdjęciach plątanina kabli jest dosyć spora. Układ zasilania dla tak dużej konstrukcji jest również wyzwaniem. Niestety nie znalazłem nigdzie o nim informacji ani nie zwróciłem na niego uwagi oglądając robota i robiąc zdjęcia.

Wykorzystano gotowe płytki takie jak Arduino, Raspberry Pi i komputer jednopłytkowy z Linuxem. Jest to dobry pomysł, ponieważ pozwala oszczędzić wiele czasu na projektach PCB. Poza tym ciężko by było zrobić samemu płytki na procesory o podobnej mocy obliczeniowej. Soft działa na Robot Operating System, co na pewno znacząco ułatwia pracę.

Jeżeli chodzi o czujniki, zastosowano moduł IMU oraz LIDAR (Light Detection and Ranging), czyli czujnik odległości wykorzystujący odbicie wiązki lasera od przeszkody. Czujniki tego typu charakteryzują się większą dokładnością pomiarów niż inne typy czujników odległości np. ultradźwiękowe. Czujniki IMU i LIDAR w połączeniu z odometrią pozwalają na mapowanie terenu oraz nawigację (SLAM – Simultaneous Localisation and Mapping). Swoją drogą ciekawe, jak akcelerometr będzie działał na Marsie, gdzie jest inne pole grawitacyjne. W module IMU znajduje się również magnetometr, który na Marsie nie będzie w ogóle działać.

Podsumowanie

Konstrukcji w kategorii freestyle było dosyć mało. Dodatkowo kiedy dotarłem na turniej, niektóre stoiska były puste. Nie wiem, czy uczestnicy się nie stawili, czy zwinęli się wcześniej. Jednak wśród konstrukcji, które miałem okazje zobaczyć, było kilka ciekawych okazów, które tutaj opisałem. Dla mnie to zawsze duża frajda zobaczyć konstrukcje innych inżynierów, zobaczyć jakie zastosowali rozwiązania, spróbować domyślić się tych rozwiązań samemu, czy wymienić uwagi z twórcami.