Projekt okładki i stron tytułowych: Przemysław Spiechowski

Fotografia na okładce: PP77LSK/Shutterstock, Maryna Stamatova/Shutterstock

Wydawca: Adam Filutowski

Koordynator ds. redakcji: Renata Ziółkowska

Redaktor: Anna Płociniczak

Produkcja: Mariola Grzywacka

Dział reklamy: Małgorzata Pasenik (Malgorzata.Pasenik@pwn.pl)

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN: Marcin Kapusta / konwersja.virtualo.pl

Recenzenci: prof. dr hab. inż. Andrzej Buchacz, profesor zwyczajny Politechniki Śląskiej

prof. dr hab. inż. Zbigniew Koruba, prorektor Politechniki Świętokrzyskiej

Książka, którą nabyłeś, jest dziełem twórcy i wydawcy. Prosimy, abyś przestrzegał praw, jakie im przysługują. Jej zawartość możesz udostępnić nieodpłatnie osobom bliskim lub osobiście znanym. Ale nie publikuj jej w Internecie. Jeśli cytujesz jej fragmenty, nie zmieniaj ich treści i koniecznie zaznacz, czyje to dzieło. A kopiując jej część, rób to jedynie na użytek osobisty.

Szanujmy cudzą własność i prawo.

Więcej na www.legalnakultura.pl

Polska Izba Książki

Copyright © by Wydawnictwo Naukowe PWN SA

Warszawa 2017

eBook został przygotowany na podstawie wydania papierowego z 2017 r., (wyd. I)

Warszawa 2017

ISBN 978-83-01-19725-4

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl; reklama@pwn.pl

www.pwn.pl

Spis treści

Wprowadzenie

1. Języki programowania a programowanie robotów

1.1. Metody programowania robotów

1.1.1. Metody programowania online

1.1.2. Metody programowania offline

1.1.3. Hybrydowe metody programowania

1.2. Języki programowania robotów

1.2.1. Składnia języków programowania robotów

1.2.2. Strategia i pragmatyka programowania robotów

2. Podstawy teoretyczne programowania robotów

3. Programowanie robotów wybranych firm

3.1. Programowanie robotów firmy ABB

3.1.1. Kontroler IRC5, system RobotWare OS – opcje i parametry systemowe

3.1.2. FlexPendant – panel nauczania robotów firmy ABB

3.1.3. Przed przystąpieniem do programowania robotów firmy ABB – informacje podstawowe

3.1.4. Wybrane elementy języka programowania RAPID

3.1.5. Tworzenie programu dla robotów firmy ABB z wykorzystaniem FlexPendanta i środowiska RobotStudio

3.2. Programowanie robotów firmy FANUC

3.2.1. Kontroler R-30iB

3.2.2. iPendant – panel nauczania robotów firmy FANUC

3.2.3. Przed przystąpieniem do programowania robotów firmy FANUC – informacje dotyczące uruchamiania i konfiguracji systemu zrobotyzowanego

3.2.4. Wybrane elementy instrukcji wykorzystywanych do programowania robotów firmy FANUC

3.2.5. Tworzenie programu dla robotów firmy FANUC z wykorzystaniem Teach Pendant i środowiska Roboguide

3.2.6. Testowanie programu

3.2.7. Kontrolery serii R30iB Plus

3.3. Programowanie robotów firmy Mitsubishi Electric

3.3.1. Kontrolery CR750-Q

3.3.2. Panel nauczania R56TB

3.3.3. Przed przystąpieniem do programowania robotów firmy Mitsubishi Electric – informacje podstawowe

3.3.4. Wybrane elementy języka programowania Melfa-Basic V

3.3.5. Tworzenie programu dla robotów firmy Mitsubishi Electric z wykorzystaniem panelu nauczania i programu RT ToolBox2

3.4. Programowanie robotów firmy KUKA

3.4.1. Kontroler KR C4

3.4.2. SmartPAD – panel nauczania robotów firmy KUKA

3.4.3. Przed przystąpieniem do programowania robotów firmy KUKA – podstawowe informacje

4. Porównanie sposobu sterowania i programowania robotów ABB, FANUC, MITSUBISHI i KUKA

4.1. Metody sterowania robotów

4.2. Wybrane instrukcje programowania robotów

5. Kierunki rozwoju języków programowania robotów

6. Bibliografia

2. Podstawy teoretyczne programowania robotów

Manipulatory robotów przemysłowych są mechanizmami składającymi się z kilku członów. Człony te są ze sobą połączone i przemieszczają się wzajemnie w celu uchwycenia lub przeniesienia części lub narzędzia zgodnie z zadawanymi sygnałami sterującymi na podstawie wskazań operatora lub zgodnie z zapisanym i uruchomionym programem robota. We wszystkich tych przypadkach opis ruchu robota wymaga znajomości położenia poszczególnych członów systemu zrobotyzowanego względem siebie w funkcji czasu. W związku z powyższym zagadnienie zarówno sterowania, jak i programowania łączy się nierozerwalnie z koniecznością zastosowania odpowiednich układów współrzędnych, względem których realizowany będzie ruch manipulatora. Niezależnie od konstrukcji robota, zgodnie z normą ISO 9787:2013 możemy wyróżnić kilka standardowych układów współrzędnych stosowanych w robotyce.

Pierwszym jest globalny układ współrzędnych (ang. World Coordinate System), będący układem kartezjańskim odniesionym do Ziemi i niezależnym od ruchu robota. Umiejscowienie tego układu jest szczególnie istotne, gdy na stanowisku zrobotyzowanym znajduje się kilka robotów i/lub maszyn, z którymi roboty współpracują – wówczas ich wzajemne posadowienie określane jest właśnie w tym układzie współrzędnych.

Drugim podstawowym układem współrzędnych, z którym można się spotkać analizując zadania z zakresu robotyki jest podstawowy układ współrzędnych (ang. Base Coordinate System), odniesiony do bazowej powierzchni montażowej (powierzchni łączącej robota z konstrukcją nośną dla niego przeznaczoną). Położenie narzędzia i innych układów w przestrzeni roboczej konkretnego robota wyzna-czane są względem tego układu współrzędnych. Najczęściej układ ten jest układem kartezjańskim nieruchomym, jednak w przypadku posadowienia robota na osi zewnętrznej suwliwej (tor jezdny) układ ten przesuwa się wraz z robotem.

Kolejnym układem (rys. 2.1) – naturalnym z punktu widzenia konstrukcji robota – jest układ współrzędnych połączenia (ang. Joint Coordinate System).

Rys. 2.1. Układ współrzędnych połączenia
(źródło: FANUC)

Układ ten w zależności od konstrukcji robota opisany jest za pomocą kątów poszczególnych osi robota lub przemieszczeń liniowych w przypadku połączeń suwliwych.

Istotnymi układami z punktu widzenia lokalizacji innych układów (wykorzystywanymi podczas konfiguracji pozostałych układów współrzędnych) występującymi w robotyce są:

• układ współrzędnych interfejsu mechanicznego (ang. Mechanical Interface Coordinate System),

• układ współrzędnych narzędzia (ang. Tool Coordinate System).

Układ współrzędnych narzędzia jest odniesiony do interfejsu mechanicznego (rys. 2.2), do którego przyłączany jest element wykonawczy robota (np. chwytak, palnik spawalniczy) i często oznaczany w systemie robota jako TOOL_0. Środek układu współrzędnych interfejsu mechanicznego znajduje się domyślnie w punkcie środkowym kołnierza (nazywany jest potocznie układem współrzędnych kołnierza – ang. flange). W przypadku układu współrzędnych narzędzia w zasadzie można

Rys. 2.2. Umiejscowienie układów współrzędnych systemu zrobotyzowanego:

1 – globalny układ współrzędnych (World Coordinate System), 2 – układ współrzędnych podstawy (Base Coordinate System), 3 – układ współrzędnych interfejsu mechanicznego (Mechanical Interface Coordinate System), 4 – układ współrzędnych narzędzia (Tool Coordinate System), 5 – układ współrzędnych zadania (Task Coordinate System), 6 – układ współrzędnych obiektu (Object Coordinate System), 7 – układ współrzędnych kamery (Camera Coordinate System), 8 – punkt środkowy narzędzia (Tool Centre Point), 9 – chwytak (gripper)

mówić o grupie układów współrzędnych, gdyż podczas programowania robota, często dochodzi do sytuacji, kiedy robot ma kilka zainstalowanych efektorów lub też za pomocą systemu wymiany narzędzi dokonuje wymiany efektora podczas pracy. Układ współrzędnych narzędzia (ang. tool) jest kartezjańskim układem współrzędnych, odniesionym do narzędzia lub elementu roboczego i związany jest z interfejsem mechanicznym robota (powierzchnią montażową na końcu struktury przegubowej, do której przymocowany jest element roboczy, np. chwytak). Układ współrzędnych TOOL jest przesuwany przez użytkownika do punktu roboczego narzędzia i orientowany zgodnie z osią narzędzia. Dlatego, jeśli narzędziem jest np. palnik, charakteryzujący się zgiętym kształtem, układy TOOL_0 i TOOLi będą względem siebie przesunięte i obrócone (nie będą układami równoległymi).

Kolejnym układem współrzędnych wymienionym w normie ISO 9787:2013 jest układ współrzędnych zadania (ang. Task Coordinate System). Układ współrzędnych zadania również jest układem kartezjańskim, umiejscowionym przez użytkownika w przestrzeni roboczej robota i wykorzystywanym w celu ułatwienia manipulacji robotem podczas określonych zadań realizowanych w ramach procesu technologicznego. W zależności od potrzeby może być on definiowany wewnątrz maszyny, z którą współpracuje robot, na palecie, na stole, podajniku lub innym urządzeniu technologicznym. Część producentów robotów dla określenia układu współrzędnych w którym realizowane są operacje procesowe używa określenia User Frame (firma FANUC) lub Base Frame (firma KUKA). Układ ten (jego dowiązanie i orientowanie) może być zdefiniowane przez użytkownika w dowolnym punkcie przestrzeni roboczej.

Poza wymienionymi układami współrzędnych (zgodnie z normą ISO 9787:2013), czasami można spotkać dodatkowo układ współrzędnych obiektu (ang. Object Coordinate System) oraz układ współrzędnych kamery (ang. Camera Coordinate System). Pierwszy z nich powiązany jest z obiektem roboczym, zaś drugi – z kamerą systemu wizyjnego sprzężonego z robotem.

Zanim omówione zostanie zagadnienie programowania robota, warto przypomnieć podstawowe zależności związane z przekształceniami (transformacjami) poszczególnych układów współrzędnych względem siebie, ponieważ proces programowania nierozerwanie wiąże się z generowaniem trajektorii robota od punktu do punktu.

Każde miejsce w przestrzeni roboczej może być określone przez wektor miejsca (rys. 2.3). Wektor ten tworzony jest za pomocą tzw. wektorów jednostkowych , charakteryzujących dowolny układ współrzędnych.

(2.1)

lub w zapisie macierzowym

(2.2)

gdzie T jako indeks górny oznacza macierz transponowaną (zamiana w macierzy kolumn na wiersze).

Rys. 2.3. Wektory jednostkowe układu współrzędnych

W rozważaniach kinematyki manipulatorów bardzo ważne są zależności pomiędzy współrzędnymi inercjalnymi (nieruchomymi) i współrzędnymi lokalnymi poszczególnych członów (rys. 2.4).

Jak widać, przemieszczenie układu lokalnego względem bazowego opisuje wektor miejsca. Łatwo zauważyć, że układ lokalny może być nie tylko przesunięty względem układu bazowego, ale również obrócony (względem poszczególnych osi układu – rys. 2.4). Tę drugą operację (obrót) można opisać poprzez tworzoną za pomocą cosinusów kierunkowych macierzy obrotu o wymiarach 3 × 3.

Można zapisać dla układu bazowego:

(2.3)

Dla układu i-tego (obróconego):

(2.4)

Obydwa wektory są reprezentacją tego samego wektora r – można więc zapisać:

(2.5)

(2.6)

(2.7)

Rys. 2.4. Widok wzajemnego położenia układów współrzędnych

a) układ i-tego ciała jest przemieszczony względem układu bazowego, b) układ i-tego ciała jest obrócony względem układu bazowego, c) układ i-tego ciała jest przemieszczony i obrócony względem układu bazowego
Oznaczenia:

• prawy, dolny indeks oznacza nowy układ lub nowe położenie po transformacji;

• lewy górny indeks oznacza układ, względem którego dokonano transformacji;

• 0i – początek układu współrzędnych ciała i;

• C – zmienny punkt ciała;

• wektory jednostkowe układu inercjalnego – ;

• wektory jednostkowe układu ciała i – ;

• wektor miejsca w układzie bazowym ;

• wektor miejsca w układzie lokalnym .

Jako równanie wektorowe równania (2.5–2.7) można zapisać w postaci:

(2.8)

gdzie macierz obrotu jest równa ( – zbiór liczb rzeczywistych):

(2.9)

Dla przypadków szczególnych można zapisać następujące zależności:

• jeśli i-ty układ jest przesunięty względem układu bazowego, a jego orientacja jest taka sama, jak układu bazowego (poszczególne osie układu są do siebie równoległe – rys. 2.4a):

(2.10)

• jeśli i-ty układ jest obrócony względem układu bazowego, a jego początek układu pokrywa się z początkiem układu bazowego – rys. 2.4b:

(2.11)

Pełną transformację współrzędnych (rys. 2.4c) można przedstawić jako połączenie przemieszczenia (translacji) i obrotu (rotacji):

(2.12)

Zależność (2.12) mówi, iż znając współrzędne lokalne (wektor ) oraz pozycję (wektor ) i orientację (macierz obrotu 0 roti) i-tego układu współrzędnych względem układu nieruchomego, możliwe jest wyznaczenie współrzędnych inercjalnych punktu C (znalezienie transformacji współrzędnych układu lokalnego względem układu nieruchomego).

Odwrócenie tego związku prowadzi do równania transformacji odwrotnej, tzn. znalezienia transformacji współrzędnych układu nieruchomego względem układu lokalnego.

(2.13)

Wyznaczone wyrażenia (2.12 i 2.13) pozwalają na rozwiązanie dwóch najważniejszych w teorii kinematyki manipulatorów zadań (prostego i odwrotnego), a poprzez ich różniczkowanie po czasie dają możliwość wyznaczenia zależności dla prędkości i przyspieszeń. Szczególnymi przypadkami omawianych transformacji są:

• czysty obrót (wektor przemieszczenia jest równy zero) ;

• czyste przemieszczenie (macierz obrotu jest macierzą jednostkową).

Obroty elementarne

Zgodnie z ogólnie panującymi zasadami przyjęto prawoskrętny układ współrzędnych (rys. 2.5a). Założono, że zmienne/wektory związane z obróconym układem współrzędnych będą oznaczane indeksem R (rys. 2.5b). Można wówczas zapisać:

(2.14)

Rys. 2.5. Oznaczenie obrotów poszczególnych osi układu

Dla poszczególnych obrotów elementarnych można zapisać następujące zależności:

Obrót wokół osi x (rys. 2.6a)

Związek między współrzędnymi punktu C w bazowym układzie współrzędnych i w obróconym układzie współrzędnych ma postać:

gdzie macierz obrotu wokół osi x jest opisana macierzą:

(2.15)

Obrót wokół osi y (rys. 2.6b)

Macierz obrotu wokół osi y można opisać wyrażeniem:

(2.16)

Obrót wokół osi z (rys. 2.6c)

Macierz obrotu wokół osi z można opisać wyrażeniem:

(2.17)

Rys. 2.6. Obroty elementarne wokół: a) osi x; b) osi y; c) osi z

Obroty złożone

Obroty złożone mogą być tworzone z trzech kolejno po sobie wykonywanych obrotów elementarnych.

Należy pamiętać o tym, iż mnożenie macierzy nie jest przemienne, dlatego kolejność wykonywania obrotów elementarnych jest ważna i wpływa na wynik końcowy (postać macierzy obrotów złożonych). Dowodem tego są macierze przedstawione poniżej jako wzory (2.18) i (2.19).

(2.18)

(2.19)

Gdzie przykładowo:

Współrzędne i transformacje jednorodne

Przedstawione wyżej rozważania przeprowadzano, opierając się na współrzędnych niejednorodnych. Jednak już od 1969 roku, kiedy to do obliczeń wykorzystano komputery, wszystkie problemy związane z kinematyką manipulatorów rozwiązywane są przy wykorzystaniu współrzędnych homogenicznych (jednorodnych).

Zasada wykorzystania współrzędnych jednorodnych polega na tym, że punkt o współrzędnych kartezjańskich x, y, z opisuje się czterema liczbami x_1 , x_2 , x_3 , x_4, przy czym nie wszystkie z nich mogą być jednocześnie równe zeru. Zależność między współrzędnymi prostokątnymi (x, y, z) i współrzędnymi jednorodnymi można zapisać następująco:

(2.20)

Współrzędne jednorodne można określić za pomocą wektora:

lub przy założeniu, że x_4 = 1 (rozpatrywane ciała – człony manipulatora – są ciałami sztywnymi, więc współczynnik skali jakim jest x_4 równa się jedności).

(2.21)

Wprowadzenie współrzędnych jednorodnych umożliwiło rozszerzenie macierzy N-wymiarowej do wymiaru (N+1) tworząc tzw. jednorodną macierz transformacji o postaci:

(2.22)