Programowanie cobota Universal Robots

Programowanie cobota Universal Robots

Jak wykonywany jest nasz program

Proste i intuicyjne programowanie to jedna z kilku głównych zalet cobotów Universal Robots. To właśnie możliwość chwycenia ramienia robota w rękę, przesunięcia go do pozycji docelowej i zapisania tej akcji jednym „kliknięciem” pozwala na tworzenie prostych programów w bardzo krótkim czasie. Dodawanie kolejnych funkcjonalności np. dla dedykowanych rozwiązań do cobota UR – otwieranie/zamykanie chwytaka, odczyt i interpretacja parametrów czujnika siły czy też współpraca z systemami wizyjnymi – sprowadza się do użycia prostych, zdefiniowanych, przez producenta, funkcji.

Program stworzony w ten sposób, podczas jego zapisania generuje 3 pliki z rozszerzeniem:

  1. .urp
    Zawiera metadane o samym programie, jego nazwie, używanej instalacji, wersji software’u dla której program był stworzony oraz dla której obecnie jest uruchamiany, informację o punktach pracy robota, relacjach między zmiennymi itp.
  1. .script
    Jest on interpretacyjną wersją pliku .urp wraz z dołączonymi danymi z pliku instalacyjnego,
  2. .txt
    Plik generowany w celach informacyjnych/dokumentacji. Zawiera tekstowy zapis programu.

Gdy przejrzymy plik z rozszerzeniem .script możemy odnaleźć w nim części programu odpowiadające naszym funkcją dodanym na panelu operatorskim. Analizując przykład z rys. 1. dodany ruch do punktu Waypoint_1 odpowiada skryptowemu zapisowi movej(…) a funkcja czekania 1 sekundy zapisowi sleep(1.0).

 

programowanie cobotów
Rys. 1. Po lewej: wycinek programu z graficznego interfejsu Polyscope dostępnego na panelu operatorskim. Po prawej: interpretacja programu w języku skryptowym

 

Zgodnie z rys. 2. podczas uruchomienia aplikacji skompilowany, do języka skryptowego, program wysyłany jest do modułu czasu rzeczywistego URControl (kontroler niskiego poziomu uruchomiony na płycie głównej Motherboard) odpowiedzialnego za wykonywanie programu.

 

programowanie cobota Rys. 2. Konfiguracja software'owa cobota UR

 

W taki oto sposób stworzony przez nas program - na panelu operatorskim przy użyciu Polyscope - wykonuje się na naszym robocie. Można zauważyć, że dla kontrolera interpretowalną wersją programu jest właśnie zapis przy użyciu funkcji z języka skryptowego. To co my widzimy na panelu operatorskim jest jedynie przyjazną i intuicyjną wersją interfejsu użytkownika. W większości aplikacji opcja użycia jedynie funkcjonalności dostępnych na ekranie Polyscope jest wystarczająca jednak, gdy chcemy poszerzyć możliwości naszego robota powinniśmy zasięgnąć do funkcji języka skryptowego.

 

Funkcje języka skryptowego

Możemy ich użyć na dwa sposoby:

  1. wprowadzając pojedyncze funkcje lub też całe pliki skryptu do listy poleceń w drzewie programu,
  2. definiując pojedynczą funkcję/program na zewnętrznym urządzeniu i przesyłając ją/go przez jeden z trzech interfejsów klienckich, udostępnianych przez robota, mogących przyjąć tego typu dane.

Poniżej omówimy podejście pierwsze. Druga opcja, związana z interfejsami robota, wymaga szerszego opisu i wyjaśnienia, dlatego jest to osobny temat na oddzielny artykuł.

Aby wstawić pojedynczą funkcję języka skryptowego należy z zakładki Advanced wybrać polecenie „Script” - rys.3. Następnie, zgodnie z rys. 4, w polu tekstowym wprowadzamy wyrażenie, które chcemy użyć. W naszym przypadku jest to polecenie ustawienia wyjścia cyfrowego numer 0 w stan wysoki - set_digital_out(0,True). To wyrażenie należy wpisać ręcznie (niektóre w funkcji dostępne są do wprowadzenie z listy rozwijanej po naciśnięciu opcji Function – rys. 4.).

 

programowanie UR Rys. 3. Wstawianie pojedynczej linii języka skryptowego
 
 
programowanie Universal Robots Rys. 4. Wprowadzanie języka skryptowego

 

Ustawianie stanu na wyjściu cyfrowym jest też dostępne w funkcjach podstawowych Basic. Na rysunku 5. przedstawiony jest program, w którym odbywa się ruch między dwoma punktami Waypoint_1, Waypoint_2. Po dojechaniu do Waypoint_1 ustawiany jest stan wysoki na wyjściu 0 a po zakończeniu dojazdu do Waypoint_2 stan niski. Stany te ustawiane są na dwa sposoby: pierwszy przy pomocy języka skryptowego, drugi poprzez dedykowaną funkcję Set. Wynikiem jest to samo działanie – ustawieni zadanego stanu na konkretnym wyjściu. Jest to prosty przykład wprowadzenia pojedynczej funkcji URScript.

 

programowanie cobotów UR Rys. 5. Użycie pojedynczej linii języka skryptowego w programie.

 

Cała algorytmika tego programu może być zdefiniowana w skrypcie. Zapis większej ilości lini URScript można wprowadzić wybierając opcję File w Script – rys. 6. Po edytowaniu pliku wprowadzamy funkcję który chcemy wykorzystać – rys. 7. Nasz nowy program – realizujący tą samą funkcjonalność co tworzony chwilę wcześniej – przedstawiony jest na rys. 8

 

UR script Rys. 6. Wprowadzanie/definiowanie pliku zawierającego funkcję języka skryptowego
 
 
Universal Robots Rys. 7. Wprowadzanie większej ilości linii języka skryptowego
 
 
UR Rys. 8. Gotowy program stworzony jedynie w języku skryptowym

 

Podsumowanie

W dokumentacji języka URScript mamy dostępnych ponad 200 różnych funkcji dla cobotów UR. Ich zrozumienie i poprawne używanie jest bardzo ważna kwestią przy tworzeniu bardziej zaawansowanych aplikacji. W cyklu artykułów poświęconych językowi skryptowemu będziemy przedstawiać poprawne podejście do wykorzystania jego możliwości.