Wizualizacja i sterowanie robotem - Instytut Mechaniki i Podstaw

Transkrypt

Wizualizacja i sterowanie robotem - Instytut Mechaniki i Podstaw
Maciej Wochal, Opiekun koła: Dr inż. Dawid Cekus
Politechnika Częstochowska, Wydział Inżynierii Mechanicznej i Informatyki, Instytut
Mechaniki i Podstaw Konstrukcji Maszyn,
Koło Naukowe „Komputerowego Projektowania Urządzeń Mechatronicznych i Maszyn”
WIZUALIZACJA I STEROWANIE ROBOTEM
Streszczenie: W pracy przedstawiono wykorzystanie środowiska programistycznego
Python wraz z biblioteką graficzną VPython do wizualizacji i sterowania ruchami robota
budowanego w ramach Koła Naukowego Komputerowego Wspomagania Projektowania
Urządzeń Mechatronicznych i Maszyn. Ponadto zilustrowano algorytm sterowania
ramieniem robota.
Słowa kluczowe: Python, sterowanie
1. Wstęp
W związku z budową w ramach Koła Naukowego Komputerowego
Wspomagania Projektowania Urządzeń Mechatronicznych i Maszyn robota
kroczącego przedstawionego na rysunku 1, w niniejszej pracy przedstawiono
sposób jego sterowania oraz wizualizację ruchów roboczych (aktualne położenie
elementów robota). Do tego celu wykorzystano środowisko programistyczne
Python oraz bibliotekę graficzną VPython (Visual).
Rysunek 1. Budowany robot kroczący
2. Biblioteka graficzna VPython
Jednym z ważniejszych składników wykorzystywanym do sterowania robotem
i wizualizacji jego ruchów jest biblioteka graficzna VPython [1], bez której wiele
rzeczy byłoby bardziej skomplikowane i zajęłoby sporo więcej czasu. Biblioteka ta
oferuje wiele obiektów gotowych do natychmiastowego wykorzystania (rys. 2).
Rysunek 2. Przykładowe obiekty występujące w bibliotece VPython
Kolejną przydatną cechą biblioteki Visual jest pełna automatyzacja zarządzania
sceną 3D. Nawet najprostszy program korzystający z tej biblioteki wyposażony jest
w funkcje obracania i skalowania sceny.
3. Model robota
W środowisku programistycznym Python, przy wykorzystaniu wspomnianej
biblioteki Visual, jako pierwsze zamodelowano podstawowe części, które
w projekcie są wielokrotnie wykorzystywane (rys. 3).
Następnie podzielono modelowanie ramienia robota na etapy (rys. 4), w których
najpierw wykonano model chwytaka, po czym zagnieżdżono go w kolejnym
członie, itd. Każdy z elementów posiada lokalny układ współrzędnych, co znacznie
ułatwia sterowanie.
Rysunek 3. Podstawowe elementy zamodelowane w programie Python
Rysunek 4. Etapy modelowania ramienia robota
4. Algorytm sterowania
W celu interakcji z użytkownikiem, wykorzystano wbudowane procedury
obsługi klawiatury (rys. 5) i myszki (rys. 6), które jednocześnie pozwoliły na
znaczne uproszczenie programu.
if scene.kb.keys:
k = scene.kb.getkey()
if k==’left’:
[ustalona akcja]
Rysunek 5. Procedura obsługi klawiatury
W każdej pętli programu sprawdzany jest stan urządzeń typu HID (Human
Input Devices). Każdy klawisz klawiatury ma przypisaną własną parę sygnałów,
zwanych „scancode”. Naciśnięcie dowolnego klawisza generuje sygnał
odpowiedniego przerwania, które z kolei jest obsługiwane przez podprogram
czytania i interpretacji zawartości bufora klawiatury. Jeżeli zostanie wykryta
aktywność ze strony użytkownika, program sprawdza czy naciśnięty klawisz jest
wykorzystywany do sterowania pracą robota. Po zidentyfikowaniu wciśniętych
klawiszy uruchamiane są funkcje sterujące położeniem poszczególnych członów
w przestrzeni, oraz prędkością zmiany położenia.
m = scene.mouse
if m.clicked:
obiekt = m.picked
Rysunek 6. Procedura obsługi myszki
Obsługa myszki sprowadza się do odczytania identyfikatora klikniętego
obiektu, co w późniejszym etapie pozwala na wybranie aktywnego członu robota.
Informacja o kliknięciu dotyczy obiektu najniższego poziomu. Dopiero później
następuje rekurencyjne przeszukiwanie drzewa relacji pomiędzy ramkami, w celu
określenia, do którego członu należy kliknięty obiekt.
Ogólny algorytm sterowania ramieniem robota jest stosunkowo prosty:
– jeżeli kliknięty obiekt znajduje się w ramce grupującej elementy, następuje
sprawdzenie, czy jego ramką jest któryś z obsługiwanych członów robota, jeśli
nie – wykonywana jest ta sama procedura sprawdzająca dla ramki, w której
znajduje się aktualny element – i tak do momentu, w którym pierwszy warunek
nie zostanie spełniony, lub zostanie określone, w którym członie znajduje się
kliknięty element,
– po wykryciu, na którą część robota kliknięto, następuje jej aktywacja, czyli
zmiana koloru części, oraz ustawienie wymaganych zmiennych.
4.1. Sterowanie serwomechanizmami
W momencie, gdy użytkownik wciśnie na klawiaturze strzałkę w lewo, lub
w prawo, następuje obrót aktywnej części o kąt ustalony za pomocą strzałek górnej
i dolnej. Ruch robota realizowany jest jednocześnie w modelu wirtualnym, jak
i w obiekcie rzeczywistym.
Od strony sprzętowej do sterowania serwomechanizmami użyty został
sterownik Pololu Maestro USB Servo Controller (rys. 7), z którym komunikacja
może przebiegać na poziomie portu szeregowego w standardzie TTL (+5V), co
umożliwia podłączenie np. adaptera Bluetooth, czy mikrokontrolera, lub poprzez
kabel USB widziany przez komputer, jako wirtualny port szeregowy.
Rysunek 7. Sterownik serwomechanizmów Mini Maestro 12-Channel USB Servo
Controller
W celu ustawienia wybranego serwomechanizmu w wybranej pozycji należy
nawiązać połączenie ze sterownikiem, a później sterowanie polega na przesyłaniu
trój-bajtowych instrukcji sterujących (rys. 8).
Rys. 8. Instrukcja sterująca
5. Wnioski
Mimo iż wszystkie założone cele zostały osiągnięte, to w obecnej postaci
opracowany program nie nadaje się do sterowania całym robotem kroczącym,
a jedynie do sterowania jego ramionami. Trudno jest wyobrazić sobie sterowanie
maszyną składającą się z ponad dwudziestu serwomechanizmów przy użyciu
jedynie kilku przycisków. Można w ten sposób na przykład zdefiniować kierunek,
w którym robot miałby się przemieszczać, a robot wykonałby resztę czynności
automatycznie, jednak będzie to wymagało jeszcze sporo nakładów pracy nad
algorytmami, które sprawią, że będzie on mógł się poruszać niemal autonomicznie,
a sterowanie będzie polegało jedynie na ustaleniu pewnych wytycznych, a nie
pozycjonowaniu każdego serwomechanizmu z osobna.
Literatura
1. www.vpython.org
2. D. Scherer, P. Dubois, B. Sherwood, VPython: 3D Interactive Scientific Graphics for Students,
“Computing in Science and Engineering”, 2000, 82-88.