Roboty Universal Robots. Jak napisać pierwszy program?

Jedną z najważniejszych zalet robotów współpracujących firmy Universal Robots jest intuicyjny interfejs graficzny robota, upraszczający proces tworzenia algorytmu programu robota, testów aplikacji oraz finalnie czasu procesu wdrożenia gotowej aplikacji u klienta.

2019-03-05 10:51:12

Roboty Universal Robots
Jak napisać pierwszy program?

Jedną z najważniejszych zalet robotów współpracujących firmy Universal Robots jest intuicyjny interfejs graficzny robota, upraszczający proces tworzenia algorytmu programu robota, testów aplikacji oraz finalnie czasu procesu wdrożenia gotowej aplikacji u klienta. Z tych względów producent włożył sporo wysiłku do stworzenia optymalnego oprogramowania, które będzie w stanie sprostać powyższym wymogom.

Oprogramowaniem do komunikacji programista/operator – robot jest interfejs graficzny o nazwie „Polyscope”. W niniejszym artykule wykorzystywana jest wersja 5.2 oprogramowania, specjalna dla robotów Universal Robots serii e „s-series”.

Po włączeniu robota pojawi się okno startowe „What would you like to do first?” (rys. 1.), na którym wybieramy opcję „Program the robot”.


Rys. 1. Ekran startowy robota Universal Robots

ZAKŁADKA PROGRAMOWANIA ROBOTA

Po wybraniu opcji „Program the robot” interfejs przeniesie nas do zakładki „Program”. Okno podzielone jest na następujące obszary (rys. 2.):


Rys. 2. Zakładka tworzenia programu robota

1. Główne zakładki środowiska „Polyscope” z podświetloną zakładką „Program”. Pozostałe to „Run” (aktualnie załadowany program), „Installation” (parametry konfiguracyjne robota), „Move” (okno z konsolą do wykonywania ruchów robota), „I/O” (podgląd sygnałów wejść/wyjść) oraz „Log” (dostęp do diagnostyki robota).

2. Belka menu z informacją dotyczącą aktualnie załadowanego pliku programu „*.urp” oraz nazwą pliku konfiguracyjnego „*.installation” przyporządkowanego do programu (programów, jak i plików instalacyjnych może być wiele). Znajduje się tu opcja zapisu/załadowania powyższych plików oraz informacje o sumie kontrolnej ustawień bezpieczeństwa robota oraz przycisk głównego menu ustawień robota.

3. Zakładka z dostępnymi instrukcjami, jakie mogą zostać umieszczone w programie robota, podzielone na trzy kategorie: podstawowe („Basic”), zaawansowane („Advanced”) oraz gotowe funkcje („Templates”) stworzone przez producenta robota (np. funkcja paletyzacji „Pallet”).

4. Główny program robota. W tym miejscu umieszczane są instrukcje, a ich kolejność wykonywania będzie zgodna z kierunkiem od góry do dołu. Całość będzie opierała się na języku sekwencyjnym, tzn. kolejna instrukcja będzie wykonywana po zakończeniu wykonywania poprzedniej. Poniżej drzewa umieszczono belkę z szybkimi przyciskami, które umożliwiają zmianę pozycji instrukcji, funkcje kopiowania/wklejania itd.

5. Okno konfiguracji dla wybranej z drzewa programu instrukcji „Command”, dodatkowo zakładki „Graphics” podgląd położenia/ ruchu robota oraz „Variables”, zakładka z podglądem wartości użytych w programie zmiennych.

6. Belka kontrolna sterowania programem robota, start/stop programu, suwak prędkości dla ograniczania dynamiki ruchu ramion robota (używany np. podczas testowego uruchomienia programu robota) oraz po lewej stronie przycisk statusu inicjalizacji robota „Initialize button”).

INICJALIZACJA ROBOTA

Program robota to lista wykonywanych po kolei instrukcji, które realizują trajektorię ruchu narzędzia, kontrolują decyzyjność algorytmu programu czy sterują wyjściami do przesyłania sygnałów kontrolnych dla urządzeń peryferyjnych (elektrozawór instalacji sprężonego powietrza itd.). Aby zdefiniować ruch, musimy wyznaczyć punkty kontrolne „Waypoints”. Punkty te możemy zdefiniować jako zmienne variables (format „pose”) lub jako położenie końcówki robota w przestrzeni roboczej (wtedy polyscope sam przelicza położenie poszczególnych członów robota tak, aby uzyskać wymagane położenie punktu „TCP”). Ten drugi tryb jest wyjątkowo „przyjazny” użytkownikowi, ponieważ roboty współpracujące umożliwiają ręczne pochwycenie oraz prowadzenie końcówki narzędzia robota „Hand guiding”.


Rys. 3. Okno inicjalizacji robota

Aby jakikolwiek ruch ramienia robota mógł być możliwy, serwonapędy poszczególnych przegubów muszą zostać odpowiednio zasilone, a hamulce zwolnione. W tym celu przeprowadzamy sekwencję inicjalizacji ramienia robota. Klikamy na przycisk „Initialize button” znajdujący się w lewym dolnym rogu ekranu (ma kolor czerwony). Otworzy się okno inicjalizacji (rys. 3.), w nim możemy odnaleźć następujące obszary:

1. Aktualny status ramienia robota:

  • Power OFF – wyłączone zasilanie
  • Robot Idle – ramię robota w gotowości
  • Robot Operational – ramię aktywne

2. Podgląd ustawień obciążenia dla robota.

3. Aktualny podgląd położenia robota.


Tab. 1. Kroki inicjalizacji robota

Korzystamy z przycisku „ON”, który po załączeniu zasilania do serwonapędów robota zmieni stan na „START”. Proces inicjalizacji przedstawiony jest w tabeli 1. Co ciekawe, proces inicjalizacji robota możemy zrealizować zdalnie za pomocą wejść cyfrowych robota.

RODZAJE RUCHÓW W ROBOCIE

W robocie współpracującym możemy wykorzystać następujące typy ruchów:

  • MoveJ – ruch swobodny,
  • MoveL – ruch liniowy,
  • MoveP – ruch procesowy.


Rys. 4. Instrukcja ruchu swobodnego MoveJ

Każdy z nich ma inne zastosowanie w procesie tworzenia trajektorii ruchu narzędzia. W naszym przykładowym programie najpierw użyjemy ruchu swobodnego. Przechodzimy do zakładki „Program” i z menu po lewej stronie drzewa programu (1) wybieramy instrukcję „Move” (rys. 4.). Po prawej stronie mamy widoczne następujące ustawienia:

1. Selektor rodzaju ruchu – tu możemy zmieniać typ wykonywanego ruchu.

2. Ustawienia dotyczące zmiany punktu „TCP” oraz układu współrzędnych, względem których będzie realizowany ruch „Feature”. Dodatkową opcją jest wykonanie ruchu po współrzędnych kątowych poszczególnych członów „Use joint angles”.

3. Parametry dynamiki ruchu, prędkość i przyspieszenie.

TWORZENIE PUNKTU KONTROLNEGO DLA RUCHU ROBOTA

Po dodaniu instrukcji MoveJ automatycznie pojawia się pierwszy punkt kontrolny ruchu „Waypoint”, katalog MoveJ jest podświetlony na żółto, ponieważ nie zakończył się proces tworzenia programu, musi zostać zdefiniowany punkt Waypoint1. Zaznaczamy w drzewie projektu punkt Waypoint1 i przechodzimy do zakładki „Command” (rys. 5.). Zakładka podzielona jest na następujące obszary:


Rys. 5. Deklarowanie punktu kontrolnego “Waypoint”

1. Przycisk deklarowania nowego punktu kontrolnego „Set Waypoint” oraz edycji wcześniej istniejącego „Edit Pose”.

2. Selektor wyboru typu punktu kontrolnego:

  • „Fixed position” – punkt stały (taki będzie użyty w poniższym pierwszym programie).
  • „Realitive position” – punkt względny, wyznaczana pozycja z przesunięciem względem pozycji z poprzedniego kroku.
  • „Variable position” – punkt jako zmienna, mamy ciągłą kontrolę nad pozycją punktu, np. pozycja wyliczana w algorytmie programu robota lub pobierana z zewnętrznego urządzenia (PLC, system wizyjny itd.).

3. Podgląd graficzny pozycji ramion robota po zdefiniowaniu punktu kontrolnego, z opcją przesunięcia końcówki narzędzia do wybranego punktu „Move here”.

4. Opcje dotyczące zachowania się końcówki narzędzia po dojeździe do punktu kontrolnego:

  • „Stop at this point” – zatrzymanie w punkcie kontrolnym.
  • „Blend with radious” – mieszanie z promieniem przy ruchu bez zatrzymywania w punkcie kontrolnym.

5. Parametry dynamiki ruchu robota przy dojeździe do punktu kontrolnego:

  • „Use shared parameters” – parametry dynamiki skopiowane z ustawień instrukcji MoveJ.
  • „Joint speed” itd. – indywidualne ustawienia prędkości i przyspieszenia dla punktu.
  • „Time” – wykonanie ruchu do punktu w określonym czasie.

Po wciśnięciu przycisku „Set Waypoint” przechodzimy do zakładki „Move”, możemy wyznaczyć położenie punktu kontrolnego (rys. 6.).


Rys. 6. Zakładka ruchu „Move”

Do wyznaczenia położenia punktu oraz orientacji narzędzia możemy użyć trybu ręcznego prowadzenia końcówki robota dostępnego w robotach współpracujących poprzez wciśnięcie przycisku „Freedrive” znajdującego się z tyłu panelu operatorskiego „Teach pendant”. Innym bardziej precyzyjnym sposobem jest skorzystanie z wybranego układu współrzędnych poprzez selektor (pole 1), a następnie wykonanie ruchu za pomocą strzałek (pole 2). Możemy również wpisać współrzędne punktu za pomocą pola 3. Istnieje również możliwość ruchu poszczególnymi członami robota za pomocą pola 4.

W naszym przykładzie wybieramy układ współrzędnych bazy „Base”, w pole 3 wpisujemy współrzędne punktu X=140 mm, Y=-430 mm, Z=100 mm, Rx=0, Ry=3.14, Rz=0 oraz zatwierdzamy punkt za pomocą przycisku „OK”. W zakładce „Program” wybieramy instrukcję „Waypoint” i wstawiamy ją poniżej wcześniej zdefiniowanego punktu. Pozycja nowego punktu Waypoint2 będzie wynosiła X=140 mm, Y=-430 mm, Z=0 mm, Rx=0, Ry=3.14, Rz=0, czyli będzie to punkt przesunięty względem osi Z układu bazy robota o 10 cm w dół (punkt narzędzia robota powinien być na wysokości podstawy robota). Trzeci, ostatni punkt Waypoint3 będzie miał współrzędne X=40 mm, Y=-430 mm, Z=0 mm, Rx=0, Ry=3.14, Rz=0. Te trzy punkty utworzą wierzchołki trójkąta prostokątnego wpisanego w płaszczyznę XZ bazy robota, a całość programu będzie wyglądała jak na rys. 7. (nie powinno być żadnych żółtych pól podświetleń). Aby przetestować program z menu z dolnej części okna, wciskamy przycisk „Play”. Aby podejrzeć zdefiniowane punkty oraz zobaczyć/monitorować trajektorię ruchu robota, używamy zakładki „Graphics” znajdującej się po prawej stronie okna.

Ruch swobodny stosowany jest w przypadku szybkiego przemieszczania głowicy narzędzia po nieliniowej trajektorii ruchu. Końcówka narzędzia porusza się po łuku, osiągając poszczególne punkty kontrolne, gdzie promień łuku uzależniony jest od wymiarów poszczególnych członów robota. W przypadku tego typu ruchu interesuje nas jedynie osiągnięcie wyznaczonych pozycji robota „Waypoints”, natomiast punkty pośrednie nie są dla nas istotne. Ruch MoveJ możemy zastosować wszędzie tam, gdzie wykonywane są duże i szybkie przesunięcia narzędzia, w których nie ma ryzyka wystąpienia kolizji. Na rys. 7. możemy zaobserwować, że linie łączące punkty kontrolne są tak naprawdę łukami.


Rys. 7. Testowanie instrukcji ruchu MoveJ

RUCH TYPU MOVEL

Ruch liniowy wykorzystujemy w przypadkach, gdy chcemy mieć pełną kontrolę nad całą trajektorią ruchu narzędzia robota. Robot wyznacza ścieżkę ruchu narzędzia jako prostą, która przechodzi przez punkty kontrolne „Waypoints”. Ten rodzaj ruchu wykorzystywany jest wszędzie tam, gdzie istnieje ryzyko kolizji (np. wkładanie detalu do pudełka). W aplikacjach zrobotyzowanych współrzędne punktów kontrolnych często są powiązane z lokalnym układem współrzędnych (ruch względem wybranego układu kartezjańskiego). Aby zobaczyć różnicę w ruchu w stosunku do poprzedniego ruchu MoveJ, zaznaczamy w drzewie programu instrukcję MoveJ i w zakładce „Command” zmieniamy selektor instrukcji ruchu na MoveL (rys. 8.). Sprawdzamy, jak zmienia się trajektoria ruchu narzędzia (rys. 9.).


Rys. 8. Podgląd parametrów dla ruchu liniowego MoveL


Rys. 9. Trajektoria ruchu liniowego

RUCH TYPU MOVEP

Ostatnim typem ruchu, jaki można realizować w robotach współpracujących Universal Robots, jest ruch MoveP – ruch procesowy. Wykorzystuje się go wszędzie tam, gdzie musimy zagwarantować stałą prędkość ruchu narzędzia na całej trajektorii ruchu robota. Jest to szczególnie istotne np. w aplikacjach klejenia czy spawania, gdzie każde zatrzymanie w punkcie kontrolnym „Waypoints” skutkowałoby nawarstwieniem się masy klejącej lub przegrzaniem materiału.


Rys. 10. Ruch procesowy MoveP

Ten typ ruchu wymaga użycia nowego parametru w zakładce ruchu, który nazywa się „Blend with radius” promienia mieszania. Jego zastosowanie wynika z braku zatrzymania w punkcie kontrolnym (rys. 10.). W przypadku tego mechanizmu programista podaje promień r wyrażony w milimetrach, trajektoria ruchu narzędzia w punktach kontrolnych zakrzywia się tak jak na rys. 11.


Rys. 11. Zakrzywienie trajektorii ruchu narzędzia poprzez mechanizm promienia mieszania

Po zastosowaniu tego typu ruchu końcówka narzędzia będzie poruszała się tak, jak przedstawiono na rys. 12.


Rys. 12. Trajektoria dla ruchu procesowego MoveP

W ramach ruchu procesowego możliwe jest zrealizowanie ruchu po okręgu. Na rys. 10. poniżej opcji związanych z wyborem układu współrzędnych znajduje się przycisk „Add circle move” – dodaj ruch po okręgu. Instrukcja wymaga podania trzech punktów: punktu początkowego, od którego zaczyna się ruch, następnie punktu przejściowego, przez który ma zostać wyznaczona trajektoria ruchu, oraz ostatniego punktu kontrolnego, który kończy ruch obrotowy. Dodatkowo po zaznaczeniu instrukcji „CircleMove” i przejściu na zakładkę „Command” możemy określić, jak ma być zorientowane narzędzie w przestrzeni robota:

1. „Fixed” – wykorzystywana jest jedynie orientacja narzędzia dla punktu początkowego, następnie orientacja ta zachowana jest dla całego ruchu po okręgu (stała).

2. „Unconstrained” – orientacja narzędzia zmienia się od orientacji położenia dla punktu początkowego aż do orientacji narzędzia dla punktu końcowego (zmienna).

Aby przetestować ruch po okręgu, wykorzystamy wcześniej zdefiniowane trzy punkty w przestrzeni robota, gdzie punkt Waypoint1 będzie punktem startowym, Waypoint2 punktem przejściowym, a Waypoint3 – punktem końcowym. Zaznaczamy w drzewie programu poziom „MoveP”, następnie z zakładki „Command” zaznaczamy przycisk „Add circle move”. Wybieramy pozycję w drzewie programu „ViaPoint_1” i za pomocą przycisku łańcucha przypisujemy do punktu Waypoint2. W identyczny sposób przypisuję punkt „EndPoint_1” do punktu Waypoint3 (rys. 13.). Po zaznaczeniu pozycji w drzewie „CircleMove” wybieramy orientację narzędzia na zmienną „Unconstrained”. Natomiast punkty kontrolne z poprzedniego programu komentujemy w drzewie za pomocą przycisku „komentarz” znajdującego się na dolnej belce menu.


Rys. 13. Deklarowanie punktów dla ruchu po okręgu

Ruch narzędzia będzie wyglądał jak na rys. 14. Po zakończonych testach warto zapisać nasz projekt.


Rys. 14. Trajektoria dla ruchu po okręgu


PODSUMOWANIE

Bazując na trzech powyższych typach ruchów oraz ich kombinacjach, możemy zaprogramować dowolną ścieżkę dla narzędzia robota. W celu zasymulowania pracy robota można skorzystać z darmowego oprogramowania „URSim”, który dostępny jest na stronie producenta Universal Robots: https://www.universal-robots.com/download/

Robert Krupiński
Specjalista i doradca techniczny do spraw robotów Universal Robotsw Elmark Automatyka

GALERIA

partnerzy
  • Amargo
  • Conrad
  • Apator
  • Berendsen
  • Colt International
  • Lotos Oil
  • Sternet
  • Tribotec
  • Queris
  • Ingersoll Rand
  • Expo Silesia
  • HF Inverter
  • Lean Action Plan
  • GT85
  • Ecol
  • Staubli
  • Hormann
  • Pruftechnik Wibrem
  • EURO Pro Group
  • Pilz
  • Cold Jet
  • AS Instrument
  • HI VIB
  • Orlen Oil
  • Rittal
  • Parker Hanifin
  • BalticBerg
  • Habasit
  • Exxon Mobil
  • Lobo Solutions
  • FESTO
  • Cantoni
  • Finder
  • Hansford Sesnsors
  • TEST Systemy Uszczelniajace
  • Heico
  • Flir
  • IGUS
  • TQM Soft
  • SEW Eurodrive
  • CC JENSEN
  • ISL
  • Protekt
  • Efaflex
  • Elokon
  • Tubes
  • Albeco
  • SSI Schaefer
  • ABUS
  • VIMS
  • Nowimex
  • Elesa Ganter
  • NTN SNR
  • Tsubaki
  • NSK
  • Schmersal
  • BTC AG
  • Cert Partner
  • EMTSystems
  • MADevice
  • Karcher
  • ZETO
  • Elmodis
  • Optibelt
ZNAJDŹ NAS: