Definiowanie układów kinematycznych manipulatorów Definicja Robota Według Encyklopedii Powszechnej PWN: robotem nazywa się urządzenie służące do wykonywania niektórych funkcji manipulacyjnych, lokomocyjnych, informacyjnych i intelektualnych człowieka. Według Amerykańskiego Instytutu Robotyki (Robot Institute of America): robot jest programowanym wielofunkcyjnym manipulatorem, przeznaczonym do operowania materiałami, częściami lub wyspecjalizowanymi urządzeniami, poprzez różne programowane ruchy, w celu wykonania różnych zadań. Podstawowym aspektem wymienionej definicji jest programowalność robota, możliwość zmiany programu. Dzięki ternu robot ma zdolność przystosowania się do zmiennych wymagań zadania. [1] Roboty pierwszej generacji (pierwszy etap rozwoju) Przeznaczone do cyklicznego powtarzania tych samych operacji. Wyposażone w pamięć zaprogramowaną przez operatora (w procesie programowania pamięci umieszcza się w niej rozkazy). Wykonują samodzielnie zaprogramowane czynności. Sterowanie ruchem odbywa się w układzie otwartym, bez sprzężenia zwrotnego od rzeczywistego położenia. Druga generacja Nazywane są adaptacyjnymi ponieważ potrafią dostosowywać się do otoczenia; wyposażone w odpowiednie czujniki są zdolne korygować swoje ruchy w zależności od położenia i kształtu obiektu. 1
Trzecia generacja Ta generacja robotów ma możliwość uczenia się na podstawie własnych doświadczeń w tym możliwość modyfikacji programu działania, dostosowując się do zmiennych warunków otoczenia. Elementy i swoboda Manipulatory przemysłowe są złożone z członów połączonych przegubami w otwarty łańcuch kinematyczny. Przeguby są zwykle obrotowe (rotacyjne) lub pryzmatyczne (liniowe). Przeguby obrotowe umożliwiają obrót jednego członu względem drugiego. Przeguby pryzmatyczne umożliwiają ruch liniowy jednego członu względem drugiego. Przeguby manipulatora mogą być napędzane elektrycznie, hydraulicznie lub pneumatycznie. Liczba przegubów określa liczbę stopni swobody manipulatora. Manipulator powinien mieć, na ogół, co najmniej sześć stopni swobody trzy do tzw. pozycjonowania oraz trzy do tzw. orientowania. Jeżeli ma mniej stopni swobody, to manipulator nie może osiągnąć każdego punktu przestrzeni z zadaną orientacją. Niektóre zadania wymagają większej niż sześć liczby stopni swobody (sięganie za przeszkodę, wokół niej). Ze wzrostem liczby stopni swobody zwiększają się trudności sterowania manipulatora. Jakość (sterowania) manipulatora Dokładność manipulatora jest miara określająca, jak blisko manipulator może dotrzeć do zadanego punktu przestrzeni. Powtarzalność jest miarą określającą jak blisko manipulator może ponownie dotrzeć do wcześniej osiągniętego punktu przestrzeni. Na ogół manipulatory maja. dobrą powtarzalność, lecz niezbyt dobrą dokładność. Najczęściej pozycję narzędzia oblicza się na podstawie pomiaru kątów lub przesunięć w przegubach zakładając geometrię manipulatora i jego sztywność. Nie stosuje się ani bezpośredniego pomiaru pozycji narzędzia, ani jego orientacji. Na dokładność wpływają więc błędy obliczeniowe, dokładność wykonania (obróbki) elementów, efekt elastyczności elementów, luzy w przekładniach itp. Dlatego wymagana jest duża sztywność robotów. Na powtarzalność wpływa w tych warunkach tzw. rozdzielczość układu sterowania, rozumiana jako najmniejsza zmiana ruchu, którą układ sterowania może rozpoznać. Jest ona obliczana jako iloraz całkowitej drogi przebywanej przez dany człon oraz liczby 2n. gdzie n jest liczbą bitów tzw. enkodera sterującego ruchem danego członu. 2
Układ sterowania robota Pod względem sterowania roboty dzieli się na działające w układzie otwartym (bez sprzężenia zwrotnego) i działające w układzie zamkniętym. Roboty działające w układzie otwartym były używane, przede wszystkim, do przenoszenia materiałów. Roboty działające w układzie ze sprzężeniem zwrotnym dzieli się na dwa rodzaje: 1) PTP (point to point) przechodzi od punktu do punktu przestrzeni roboczej według programu, bez narzucania trajektorii, 2) CP (continuous path ciągła ścieżka), kontrolowana jest cała droga końcówki roboczej. Parametry członu podsumowanie Kinematykę każdego robota można opisać przez podanie dla każdego członu wartości czterech parametrów. Pierwsze dwa opisują sam człon, a dwa następne połączenie członu z sąsiednim członem. W zazwyczaj spotykanym przypadku pary obrotowej, i jest zmienną konfiguracyjną, a pozostałe trzy wielkości są ustalonymi parametrami członu. Dla par przesuwnych d 1 jest zmienna, konfiguracyjną, a pozostałe trzy wielkości są ustalonymi parametrami członu. Określanie mechanizmów za pomocą tych wielkości odpowiada konwencji, znanej pod nazwą notacji Denavita-Hartenberga (Można stosować również inne metody opisu mechanizmów). Określanie parametrów Denavita-Hartenberga: Pełny opis stałych parametrów kinematyki sześcioczłonowego manipulatora wymaga podania 18 liczb. W przypadku manipulatora sześcioczłonowego z wszystkimi parami obrotowymi te 18 liczb podaje się w postaci sześciu zbiorów (a i, i, d i). Długość członu Na rys. przedstawiono człon i-1 oraz prostą obustronnie prostopadłą do osi, wzdłuż której mierzy się długość członu a i-1. 3
Inny sposób ułatwiający znalezienie parametru a i-1 polega na wyobrażeniu sobie cylindra o zwiększającej się średnicy, o osi pokrywającej się z osią pary obrotowej i-1. W momencie zetknięcia powierzchni cylindra z osią przegubu i promień cylindra odpowiada odległości a i-1. Kąt skręcenia członu Drugi parametr, niezbędny do zdefiniowania względnego usytuowania dwóch osi, nazywany jest kątem skręcenia członu. Jeśli wyobrazimy sobie płaszczyznę, której normalna odpowiada dopiero co znalezionej obustronnie prostopadłej do osi połączeń ruchowych, a następnie zrzutujemy obie osie i-1 oraz i na tę płaszczyznę, to możemy zmierzyć kąt zawarty między nimi. Kąt ten jest mierzony w kierunku od osi i-1 do osi i, zgodnie z regułą prawej ręki wokół prostej a i-1. Długość a i kąt Na rys. kąt i-1 odpowiada kątowi między osiami i-1 oraz i (gdzie linie równoległe oznaczono trzema kreskami). W przypadku przecinania się osi kąt skręcenia jest mierzony w płaszczyźnie zawierającej obie osie. Jednak nie można określić znaku W tym specjalnym przypadku znak kąta można przyjąć dowolnie. Odsunięcie Połączenie członu i-1 z członem i (a i-1 jest prostą obustronnie prostopadłą do obu osi członu i-1; a i jest prostą obustronnie prostopadła, do osi członu i-1). Pierwszy parametr połączenia, tzn. odsunięcie członu d i, określa odległość ze znakiem, mierzoną wzdłuż osi połączenia i od punktu, w którym a i-1 przecina tę oś, do punktu przecięcia prostej a i ze wspólną osią. Odsunięcie d i pokazano na rys. Odsunięcie członu d i jest zmienne, jeśli połączenie i jest parą przesuwną. 4
Kąt Drugim parametrem połączenia jest kąt zawarty między przedłużeniem a i-1 oraz a i, mierzony wokół osi połączenia i. Pokazano to na poprzednim rys., przy czym dwoma kreskami oznaczono linie równoległe. Parametr ten oznaczono i. Jest on zmlenną konfiguracyjną dla pary obrotowej. Odsunięcie oraz kąt Odsunięcie członu d oraz kąt konfiguracji pary obrotowej są wystarczającymi parametrami, za pomocą których można opisać istotę połączenia dwóch sąsiednich członów 5
A. Przygotowanie stanowiska Ze strony http://controlsystemslab.com/rtsx/download/ ściągnąć plik RTSX_beta1.zip Utworzyć katalog i rozpakować RTSX_beta1.zip Następnie w programie Scilab wskazać go jako bieżący katalog Rys. 1 Wskazywanie katalogu roboczego w programie Scilab W konsoli Scilab wpisać polecenie: exec("startup_rtsx.sce",-1); aby uruchomić program. Następnie -->rprdemo; aby uruchomić demonstrację 6
Robot 1 W konsoli Scilab wpisać: Definicje członów i przegubów: L(1)=Link([0 1 0 -pi/2]); L(2)=Link([-pi/2 1 0 -pi/2]); Rob00=SerialLink(L); PlotRobot(Rob00, [0 0]); Robot 2 L(2)=Link([-pi/2 1 0 0]); L(3)=Link([-pi/2 1 0 pi/2]); rob01=seriallink(l); PlotRobot(rob01, [0 0 0]); Robot Puma -->L(1)=Link([0 1 0 -pi/2]); -->L(2)=Link([-pi/2 0.2 1 0]); -->L(3)=Link([-pi/2 0.2 1 0]); -->L(4)=Link([-pi/2 0.2 0 -pi/2]); -->rob02=seriallink(l); -->PlotRobot(rob02, [0 0 0 0]); Wykorzystano materiały z książki Domachowski Automatyka i robotyka Industrial Robot: An International Journal, http://www.emeraldinsight.com/journals.htm?articleid=875115&show=html 7
Zadanie 1: Korzystając z dokumentacji programu RTSX (http://controlsystemslab.com/rtsx/online-help/) uzupełnić układ kinematyczny, aby uzyskać model robota Puma 562 Rys. 2 Robot Puma 562 [2] Zadanie 2: Zbudować model robota o konstrukcji jak na rys. i następujących długościach i przesunięciach kolejnych członów: 0: (80, 15); 1: (75,10); 3 (55) [cm] 8
Opisy wybranych poleceń Link() definiowanie przegubu robota Składnia L = Link(lparam, jtype,options) parametry: lparam wektor [1x4] lub [1x5] zawierający odstępy i kąty w następującej kolejności: [ theta d a alpha (offset)], gdzie offset jest opcjonalny. jtype typ przegubu (domyśłnie) R = obrotowy (revolute), P = (prismatic) sigma, (RP) typ połączenia: 0 ( R ) = revolute, 1 ( P ) = prismatic theta kąt przegubu d odsunięcie członu a długość członu alpha kąt skręcenia członu offset odsunięcie przegubu Przykłady: L = Link([0 1 1 pi/2]); // tworzy pojedynczy obrotowy człon, d=1, a=1, alpha=pi/2 // theta jest zmienną przegubu (połączenia) // tworzenie łańcucha członów L(1) = Link([0 0 1 0]); L(2) = Link([pi/2 1 0 0],'P'); // człon jest liniowy d=zmienna o początkowej wartości 1 L(3) = Link([0 0 2 pi],'r','m',0.43,'r',[0, 0.018, 0],'qlim',[-pi/2 pi/2]); SerialLink( ) SerialLink( ) funkcja składania członów robota w łańcuch na podstawie z członów zdefiniowanych za pomocą polecenia Link( ). Robotinfo () Robotinfo wyświetla informacja na temat struktury kinematycznej robota PlotRobot() PlotRobot() - otwiera okno graficzne zawierające scenę, na której umieszczany jest model kinematyczny robota Składnia: T=PlotRobot(robot, q, options) robot model robota q wektor [1 x nq] zmiennych określających pozycje członów w przegubach, gdzie nq = liczba zmiennych przegubów. Option - opcje, takie jak: grid wyświetlanie siatki i inne. 9
AnimateRobot() AnimateRobot() wyświetla poruszającego się robota według sekwencji wartości opisujących zmienne przegubów (kąty lub przesunięcia). Przykład: clear L; a1 = 1.2; a2 = 1; L(1)=Link([0 0 a1 0]); L(2)=Link([0 0 a2 0]); twolink=seriallink(l); // a 2-członowy manipulator // generowane są zbiory punktów trajektorii ruchów, które obejmują tutaj ruch po pełnych okręgach t = [0:0.01:1]'; punktów trajektorii qs = [2*pi*t 2*pi*t]; AnimateRobot(twolink,qs); // szereg czasowy do obliczenia zbiór 10