Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Podstawy robotyki. Laboratorium

Podobne dokumenty
Sterowanie, uczenie i symulacja robotów przemysłowych Kawasaki

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Podstawy robotyki. Laboratorium. Manipulator robotyczny II: Uczenie blokowe

Programowanie w języku Python. Grażyna Koba

Robot EPSON SCARA T3-401S

Materiały pomocnicze do ćwiczeń laboratoryjnych

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Instrukcja do programu BASIC PR-02

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy robotyki. PC-Roset I

Zakład Systemów Rozproszonych

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Instrukcje cykliczne (pętle) WHILE...END WHILE

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Zapis algorytmów: schematy blokowe i pseudokod 1

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

1 Powtórzenie wiadomości

Programowanie kontrolera RH robota S-420S Opracował: Karol Szostek

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny

Podstawy Programowania C++

1 Podstawy c++ w pigułce.

Licznik rewersyjny MD100 rev. 2.48

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Programowanie robota IRb-1400

Instrukcja korzystania z Virtual Box-a i SQLPLUS-a

Katedra Energetyki. Laboratorium Podstaw Elektrotechniki. Badanie silników skokowych. Temat ćwiczenia:

Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Przykład programowania PLC w języku drabinkowym - ćwiczenie 6

REGULATOR PI W SIŁOWNIKU 2XI

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

Tworzenie nowego rysunku Bezpośrednio po uruchomieniu programu zostanie otwarte okno kreatora Nowego Rysunku.

Zwory na płycie z łączem szeregowym ustawienie zworek dla programowania.

Laboratorium Sterowania Robotów Sprawozdanie

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Katedra Automatyzacji

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

INSTRUKCJA OBSŁUGI PILOTÓW ASA Go-6T

Dodatek A. Spis instrukcji języka Prophio.

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Misja#3. Robimy film animowany.

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Układy współrzędnych GUW, LUW Polecenie LUW

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Rys. 1. Brama przesuwna do wykonania na zajęciach

4. Funkcje. Przykłady

Instrukcja obsługi. 1. Dane techniczne. 2.Montaż

Podstawy Programowania

Projektowanie systemów zrobotyzowanych

dr inż. Tomasz Krzeszowski

TWORZENIE OBIEKTÓW GRAFICZNYCH

Laboratorium Programowanie Obrabiarek CNC. Nr H7

Wiersz poleceń Windows

Programowanie w języku C++ Grażyna Koba

Program V-SIM tworzenie plików video z przebiegu symulacji

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

Fragment tekstu zakończony twardym enterem, traktowany przez edytor tekstu jako jedna nierozerwalna całość.

37. Podstawy techniki bloków

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

Symulacja działania sterownika dla robota dwuosiowego typu SCARA w środowisku Matlab/Simulink.

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

MultiBoot Instrukcja obsługi

OPIS PROGRAMU USTAWIANIA NADAJNIKA TA105

Cel ćwiczenia: Nabycie umiejętności poruszania się w przestrzeni programu Kuka.Sim Pro oraz zapoznanie się z biblioteką gotowych modeli programu.

Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności: Dla głębokości zerowej uzyskamy tekst płaski:

Rys.1. Uaktywnianie pasków narzędzi. żądanych pasków narzędziowych. a) Modelowanie części: (standardowo widoczny po prawej stronie Przeglądarki MDT)

Poprzez dodanie silnika obrotowego przeprowadzić symulację pracy mechanizmu.

IIIIIIIIIIIIIIIMMIMMIII

Programowanie w Turbo Pascal

Robert Barański, AGH, KMIW For Loops While Loops v1.0

OPROGRAMOWANIE UŻYTKOWE

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Automatyzacja i robotyzacja procesów technologicznych

Kilka prostych programów

Laboratorium Programowanie Obrabiarek CNC. Nr H6

Maxima i Visual Basic w Excelu

Lekcja 5 - PROGRAMOWANIE NOWICJUSZ

Technologie Informacyjne Mechatronika 2012/2013 Algorytmy. Podstawy programowania

Podstawy Programowania Podstawowa składnia języka C++

INSTRUKCJA OBSŁUGI ELEKTRYCZNY PIEC KONWEKCYJNY

Przemysłowe Systemy Automatyki ĆWICZENIE 2

Laboratorium Napędu robotów

PROGRAMOWANIE OBRABIAREK CNC W JĘZYKU SINUMERIC

Makropolecenia w PowerPoint Spis treści

Ćwiczenie 1: Pierwsze kroki

Dokument: Zmiana stawek VAT Informacja dla dealerów

Cw.12 JAVAScript w dokumentach HTML

Programowanie w Scratch robot mbot

6. Pętle while. Przykłady

Pascal - wprowadzenie

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

Transkrypt:

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski Podstawy robotyki Laboratorium PC ROSET II: Planowanie trajektorii. Język AS. Cele ćwiczenia poszerzenie wiedzy na temat podstawowych funkcjonalności oprogramowania do projektowania i symulacji stanowisk pracy przemysłowych manipulatorów robotycznych PC ROSET w zakresie: detekcji kolizji, estymacji trajektorii i rzeczywistego czasu cyklu pracy manipulatora. poznanie podstaw programowania robota w języku AS. Zakres materiału Przygotowanie się do ćwiczenia obejmuje zapoznanie się z niniejszą instrukcją oraz materiałami dodatkowymi stanowiącymi wyciąg z dokumentacji użytkownika programu PC Roset. 1 Wprowadzenie PC Roset to oprogramowanie, które wykorzystuje wirtualny kontroler do symulowania pracy robotów Kawasaki. Oprócz opcji całościowego zaprojektowania stanowiska pracy dla przemysłowych manipulatorów robotycznych, włącznie z zaprogramowaniem robota, elementarną i niezwykle ważną funkcjonalnością tego programu jest możliwość symulacyjnego aproksymowania trajektorii ruchu dla manipulatorów. Dzięki temu można bezpiecznie i niskim kosztem dokonać sprawdzenia bezkolizyjności ruchów, wyznaczenia zasięgów robotów oraz oszacowania czasu trwania cyklów pracy. Podstawową formą uczenia manipulatorów przemysłowych jest tzw. uczenie blokowe. Podstawowa cecha tego uczenia jest łatwość i szybkość wykonania zadania w oparciu o Teach Pendanta. Podstawową wadę stanowi brak możliwości wykorzystania zaawansowanych technik programistycznych oraz parametryzowania programu np. wprowadzenia dodatkowych danych wejściowych i wyjściowych, wykorzystanie złożonych struktur danych, posługiwanie się sygnałami itd. Dodatkowo, ponieważ bardzo dogodną opcją pracy nowoczesnych manipulatorów robotycznych jest praca zdalna z wykorzystaniem terminala (np. Telnet) często konieczne jest posługiwanie się językiem wyższego poziomu zapewniającego wymienione funkcjonalności. Dla robotów Kawasaki takim językiem jest AS mający cechy hybrydowego języka programowania liniowo-strukturalnego. Dodatkową zaletą tego

sposobu pracy jest dostępność dodatkowych komend, niedostępnych w programowaniu blokowym oraz łatwość dokładnego definiowania położenia punktów kontrolnych. 2 Komendy języka AS Komendy języka AS podzielić można na 1. Instrukcje bezpośrednie dostępne tylko w trybie pracy w terminalu (nie można ich używać wewnątrz programu), 2. Instrukcje skryptowe dostępne tylko z poziomu programu, 3. Instrukcje zwykłe dostępne w każdym trybie. Do podstawowych instrukcji bezpośrednich należą: id podaje podstawowe informacje o robocie (np jego nazwę), liczbę osi itd. ereset kasuje znacznik błędu, działa jak wciśnięcie przycisku Error Reset na panelu robota. zpower <on off> włącza/wyłącza silniki robota. hold wstrzymuje natychmiast wykonanie programu. abort - wstrzymuje wykonywanie programu po zakończeniu bieżącej instrukcji. continue wznawia program zatrzymany instrukcją abort lub hold. help wyświetla wszystkie komendy help <komenda> wyświetla krótką pomoc na temat wybranej komendy. Większość komend nie jest niestety obsługiwana. execute <nazwaprogramu,liczbacykli> [, wiersz] uruchamia program wykonując określoną liczbę cykli zaczynając wykonanie pierwszego cyklu od podanego numeru wiersza (domyślnie nrwiersza ma wartość 1). Jeśli jako liczbacykli poda się wartość 1, liczba cykli jest nieskończona. Na robocie musi być wybrany tryb Repeat oraz musi być włączone zasilanie silników. Należy podkreślić, że grzybki bezpieczeństwa na robocie i teach pendancie działają niezależnie od wybranego trybu pracy. Do podstawowych instrukcji zwykłych należą: print <wartosc> wypisuje na ekranie komputera podaną wartość. Wartością może być zmienna, liczba, wyrażenie lub ujęty w cudzysłowy tekst. speed <liczba>, [tryb] określa prędkość wykonywania programu w %, liczba < 0..100 >. Jeśli parametr tryb ma wartość always, polecenie dotyczy wszystkich następnych instrukcji. Jeśli nie podano trybu, instrukcja dotyczy tylko bezpośrednio następującej instrukcji ruchu. 2

accuracy <dystans>, [tryb] ustawia dokładność osiągania rządanych pozycji, dystans podawany jest w [mm]. Opcja tryb została omówiona przy opisie instrukcji speed <liczba>, [tryb]. here <punkt, #punkt> zapamiętanie bieżącej pozycji robota we współrzędnych kartezjańskich (XYZOAT, opcja punkt) lub przegubowych (JT1 do JT6, #punkt) point <#punkt> utworzenie (domyślnie wszystkie współrzędne równe są zero) lub edycja wcześniej zapamiętanego punktu. Zostanie wyświetlony monit o wprowadzenie nowych wartości współrzędnych przegubowych. Wartości oddzielane są przecinkami. Jeśli nie ma potrzeby modyfikacji którejś, należy pominąć wprowadzanie wartości. Przykład:,20 60 spowoduje zmianę dla osi JT2 i JT4. point <#cel=#zrodlo> skopiowanie do punktu #cel wartości współrzędnych z punktu #zrodlo. Punkt #cel zostanie utworzony, jeśli wcześniej nie istniał. shift (<punkt> by <deltax, deltay, deltaz>) funkcja zwraca punkt powstały w wyniku przesunięcia zadanego punktu o wektor [deltax, deltay, deltaz]. Wartości obrotu punktu (OAT) pozostają bez zmian. Aby utworzyć nowy punkt należy wykorzystać instrukcję point, np point nowypunkt = shift(starypunkt BY 10,20,30). open [nrsygnalu] ustawia sygnał nrsygnalu po rozpoczęciu następnej instrukcji ruchowej. Domyślnie nrsygnalu ma wartość 1. close [nrsygnalu] wyłącza sygnał nrsygnalu po rozpoczęciu następnej instrukcji ruchowej. Domyślnie nrsygnalu ma wartość 1. Do podstawowych instrukcji skryptowych należą: twait <czas> wstrzymuje wykonanie programu na określony czas, podany w sekundach. Dozwolone są wartości ułamkowe. delay <czas> wstrzymuje wykonanie najbliższej linii zawierającej komendę ruchową na określony czas, podany w sekundach. Dozwolone są wartości ułamkowe. Odliczanie czasu rozpoczyna się od momentu wykonania tej instrukcji. call <nazwaprogramu> uruchamia program o podanej nazwie. Po jego zakończeniu (instrukcją return) wykonuje następną linię programu bieżącego. return kończy program. Jeśli był on uruchomiony instrukcją call, wraca do programu nadrzędnego. wait sig( <sygnal 1, sygnal 2,...>) czeka aż określony sygnał zewnętrzny zostanie ustawiony (dodatnia wartość parametru sygnal k, k = 1, 2,...) lub wyłączony (ujemna wartość parametru sygnal k, k = 1, 2,...). oraz instrukcje iteracyjne i warunkowe. Instrukcje związane z poruszaniem robota omówione są w dalszej części instrukcji. 3

3 Tworzenie i edycja programu Tworzenie i edycja programów w środowisku PC Roset jest możliwe na dwa sposoby: a) w module DataViewer w zakładce Program możemy intuicyjnie tworzyć nowe i edytować istniejące (pozycja Program w drzewie po lewej) programy zarówno w trybie blokowym jak i języku AS (edytor po prawej), b) po uruchomieniu AS Bridge w module DataViewer i wirtualnego Teach Pendanta zostanie aktywowana zakładka Terminal, w której możemy symulować zdalną pracę z robotem tak, jakbyśmy pracowali na rzeczywistym urządzeniu. Używając komendy edit i podając jako jej argument nazwę programu uruchamiamy tryb edycji. Po wpisaniu każdej linii należy nacisnąć klawisz Enter. Aby zakończyć edycję należy w osobnej linii wprowadzić znak e i nacisnąć Enter. Przykładowa sesja z edytorem przebiega następująco (po każdej linii wciśnięto Enter): >edit przyklad1.program przyklad1() 1? a=1 2? b=2 3? print a 4? print b 5? e > Uruchomienie programu przebiega poprzez wykonanie polecenia execute >execute przyklad1 > 1 2 Program completed.no = 1 > Widoczne powyżej liczby 1 i 2 są rezultatem wykonania instrukcji print w linii 3 i 4 programu. Należy zwrócić uwagę na fakt, iż program wykonywany jest jednocześnie (współbieżnie) z programem monitora stąd pojawienie się prompta przed 1. 4 Zmienne lokalne i tworzenie procedur z parametrami W wielu wypadkach wskazane jest wykorzystanie parametrów przy pracy z procedurami z listą argumentów wejściowych. Lista ta powinna być w postaci <(. zmienna 1,. zmienna 2,...)>. Należy zwrócić uwagę na kropkę przed nazwą zmiennej. Oznacza ona, że zmienna jest zmienną lokalną programu. Zmienne lokalne nie są zapisywane do pamięci trwałej robota. Aby wyświetlić na ekranie wartość zmiennej lokalnej należy przypisać ją do dowolnej zmiennej globalnej, np point zmiennaglobalna =.zmiennalokalna. Aby wywołać program z parametrami przy pomocy polecenia call należy podać ich wartości w nawiasie okrągłym. 4

4.1 Przykładowy program.program Przyklad2() 1 a=1 2 b=2 3 call podprogram(a,b).end.program podprogram(.aa,.bb) 1 print.aa 2 print.bb 3 return.end Uruchomienie programu następuje poprzez execute Przyklad2. 5 Poruszanie robotem Do poruszania robotem można wykorzystać następujące komendy: jmove <punkt>[, nrsygnalu] przesuwa ramię robota do położenia punkt. Opcjonalny parametr numersygnalu oznacza sygnał, który ma być ustawiony (numersygnalu dodatni) lub wyłączony (nrsygnalu ujemny). Ustawienie sygnału nastąpi po osiągnięciu przez robota rządanej pozycji. Jeśli stosowany jest chwytak pneumatyczny należy pamiętać aby odczekać chwilę przed rozpoczęciem następnego ruchu aby umożliwić pewne trzymanie detalu. Ruch odbywał się będzie tak, by iloraz dystansu przejechanego do całkowitego był stały dla każdego złącza robota. Taki sposób poruszania robotem nosi nazwę ruchu interpolowanego. Ruch ten jest najbardziej płynny ale nie zawsze będzie odbywał się po linii prostej. Polecenie jest najczęściej stosowane do przesuwania ramienia roboczego do punktu początkowego bez trzymania ładunku przez robota. lmove <punkt>[, nrsygnalu] (z małej litery L) przesuwa ramię robota do położenia punkt. Opcjonalny parametr numersygnalu oznacza sygnał, który ma być ustawiony (numersygnalu dodatni) lub wyłączony (nrsygnalu ujemny). Ustawienie sygnału nastąpi po osiągnięciu przez robota rządanej pozycji. Ruch odbywał się będzie liniowo. Polecenie to najczęściej wykorzystywane jest gdy robot przenosi ładunki lub niezbędne jest zachowanie łatwego do przewidzenia toru jazdy. Użycie tej komendy powoduje trochę większe obciążenie układów robota. stable <czas> zatrzymuje wykonywanie programu do momentu ustabilizowania się robota a następnie wstrzymuje działanie programu na podany czas. Polecenie to jest szczególnie przydatne gdy robot przenosi ciężkie ładunki, które mogą poruszać się siłą bezwładności. align ustawia oś Z narzędzia tak, aby była równoległa do najbliższej osi układu bazowego. Innymi słowy jeśli narzędzie podłączone do kiści robota byłby odchylone o niewielki kąt względem płaszczyzny XY, align wyprostowałoby ją. Komenda ta jest niezwykle użyteczna podczas podnoszenia przedmiotów leżących na ziemi. 5

jappro <punkt, dystans> ustawia się ruchem interpolowanym nad wybranym punktem w odległości dystans. Jeśli dystans jest dodatni, ruch odbywa się w kierunku ujemnych wartości na osi Z (w dół). Jeśli dystans jest ujemny ruch odbywa się w kierunku dodatnich wartości na osi Z (w górę). lappro <punkt, dystans> (z małej litery L) ustawia się ruchem liniowym nad wybranym punktem w odległości dystans. Jeśli dystans jest dodatni, ruch odbywa się w kierunku ujemnych wartości na osi Z (w dół). Jeśli dystans jest ujemny ruch odbywa się w kierunku dodatnich wartości na osi Z (w górę). jdepart <punkt, dystans> przesuwa robota nad podany punkt lappro <punkt, dystans> (z małej litery L) ustawia się ruchem liniowym nad wybranym punktem w odległości dystans. Jeśli dystans jest dodatni, ruch odbywa się w kierunku ujemnych wartości na osi Z (w dół). Jeśli dystans jest ujemny ruch odbywa się w kierunku dodatnich wartości na osi Z (w górę). c1move <punkt>[, nrsygnalu] Okresla pierwszy punkt ruchu kołowego. Ramię robota porusza się po łuku od punktu bieżącego do punktu punkt. Po instrukcji c1move musi wystąpić instrukcja c2move. c2move <punkt>[, nrsygnalu] Określa drugi punkt ruchu kołowego, który odbywa się od punktu określonego przez instrukcję c1move. Po instrukcji c2move może wystąpić dowolna inna instrukcja ruchowa z wyjątkiem c2move (zamiast niej używa się instrukcji c1move). Przydatny może być fakt, że punkt można wprowadzić bezpośrednio we współrzędnych przegubowych jako #[JT1,JT2,..., JT6]. Można zatem napisać jmove #[0,10,20,0,0,0]. Oczywiście parametr punkt może być zarówno punktem złączowym (np uzyskanym jako wynik operacji here #punkt) jak i kartezjańskim (np here punkt). Oczywiście punkty złączowe i kartezjańskie są traktowane oddzielnie (a więc punkty x i #x stanowią dwa oddzielne, niezależne od siebie punkty, które mogą występować jednocześnie w tym samym programie). 5.1 Instrukcje iteracyjne i warunkowe Niezwykle ważna przy programowaniu jest możliwość uzależnienia wykonania określonych instrukcji od spełnienia określonego warunku. W tym celu można wykorzystać instrukcję warunkową: if warunek then instrukcjegdyprawdziwy else instrukcjegdyfalszywy end instrukcjegdyprawdziwy wykonywane sa w sytuacji, gdy warunek jest spełniony. W przeciwnym wypadku wykonują się instrukcje instrukcjegdyfalszywy. 6

Bardzo często przy programowaniu robota niezbędne jest kilkukrotne powtórzenie zadanej czynności w ramach jednego cyklu pracy. Przykładem może być zadanie paletyzacji wyciągnięcie jednego detalu z pojemnika, w którym znajduje się więcej niż jeden przedmiot. Każda część musi zatem być pobierana z innego miejsca. Do wykonania iteracji wykorzystuje się pętlę for: for zmienna = a to b instrukcje end Pętla powtarzana jest b a + 1 razy. Wartość zmiennej zmienna jest równa a w pierwszej iteracji, a + 1 w drugiej i b w ostatniej. Inną postacią tej pętli jest: for zmienna = a to b step c instrukcje end Wartością początkową pętli jest a. W każdej iteracji zmienna jest zwiększana o wartość c. Pętla ta wykonuje się do momentu, gdy wartość zmiennej osiągnie wartość większą bądź równą b. pętlę do... until: do instrukcje until warunek Pętla wykonuje się do chwili gdy warunek zostanie spełniony. Innymi słowy wykonanie pętli kończy się w momencie gdy warunek ma wartość logiczną PRAWDA. Uwaga! Należy zwrócić uwagę na różnicę pomiędzy pętlą do...until a pętlą while! Warunki wyjścia z obu pętli są przeciwne! Pętla do...until wykona się co najmniej jeden raz gdyż test wyjścia wykonywany jest na końcu. pętlę while: while warunek do instrukcje end Przed rozpoczęciem każdej iteracji następuje sprawdzenie warunku. Jeśli warunek jest prawdą pętla się wykonuje. Jeśli nie pętla się kończy. Instrukcje zawarte wewnątrz pętli while mogą nie wykonać się ani razu. 7

5.2 Tablice Czasem istnieje potrzeba wykorzystania zestawu zmiennych tego samego typu (np do reprezentowania położeń palet z materiałami). Do tego celu można wykorzystać tablice. Dostęp do danej zmiennej w tablicy polega na określeniu jej numeru, zwanego indeksem. Indeks tablicy jest liczbą z zakresu od 0 do 9999. Indeks tablicy podaje się w nawiasach kwadratowych, np here tablica[3]. Wykorzystanie tablic może zdecydowanie uprościć pisanie programu. 6 Przykładowe programy Program, który wypisuje 10 razy Witaj swiecie.program przyklad3() for licznik = 1 to 10 print "Witaj Swiecie" end.end Program, który przechodzi (linowo) ramieniem robota po kwadracie o zadanej długości, zaczynając od punktu start, który został wcześniej określony (np komendą here start).program przyklad4() dlugoscboku = 30 jmove start lmove shift(start by dlugoscboku,0,0) lmove shift(start by dlugoscboku,dlugoscboku,0) lmove shift(start by 0, dlugoscboku,0).end 7 Zadania do wykonania 1. Utworzyć nowy projekt. W projekcie umieścić 2 roboty typu FS006N w odległości 1 m od siebie. Dodatkowo umieścić jedną pionową ścianę w odległości dokładnie 1 m od środka układu bazowego dla obu robotów. Na obu robotach prawidłowo zamocować fajki spawalnicze (narzędzie arc welding torch ). Z paska przycisków modułu DataViewer wybrać opcję Collosion Check Setting (Pair) i zdefiniować regułę kolizji dla pierwszego robota i ściany tak, żeby kontrolować zbliżenie się ostatniej osi robota (nie narzędzia!!!) do ściany na odległość 1cm (rozdział 15.3.1 załączonego pliku PCRoset manual extract ). Następnie upewnić się, że w module SceneViewer w menu View w opcji Log jest aktywna podopcja ShowLog. Kierując pierwszym robotem postarać się przeciąć ścianę: narzędziem, ostatnią osią robota, dowolnym elementem robota znajdującym się przed ostatnią osią. 8

Kierując drugim robotem przeciąć: ostatnią oś pierwszego robota, ścianę. Za każdym razem zanotować do sprawozdania ewentualne komunikaty o kolizjach oraz w jaki sposób zostały one zasygnalizowane. 2. W modelu z zadania poprzedniego w oparciu o opcje detekcji kolizji par obiektów Collosion Check Setting (Pair) oraz detekcji zbliżeniowej do pojedynczych obiektów Collosion Check Setting (Single) zbudować zestaw reguł pozwalający na jednoczesne wykrywanie zestawu potencjalnych kolizji: uderzenia (tj. zbliżenia na odległość 0cm) robota pierwszego powyżej czwartej osi ze ścianą i dowolnym elementem robota drugiego, zbliżenia na odległość 20 cm elementów robota pierwszego poniżej czwartej osi do ściany, zbliżenia na odległość 20 cm elementów robota pierwszego poniżej czwartej osi do dowolnego elementu robota drugiego powyżej czwartej osi, uderzenia narzędziem robota drugiego ze ścianą, zbliżenia się dowolnego obiektu do ściany na odległość mniejszą niż 10cm. Sprawdzić poprawność zbudowanego układu ograniczeń kolizyjnych. Użyty zestaw reguł spisać do sprawozdania. Co daje opcja Collosion Check Setting (Single) i czy jest niezbędna do utworzenia potencjalnie dowolnego układu detekcji kolizji? 3. Z katalogu projektów demonstracyjnych../data/project/kawasaki-sample/d-con/ handling/demo prj02 otworzyć projekt demo prj02.pcr. Napisać w języku AS prosty program do przeniesienia tylko jednego elementu roboczego w inne miejsce i pozostawienie go tak, aby był on po ułożeniu obrócony o 45 stopni względem położenia pierwotnego (Uwaga: przed chwyceniem przedmiotu należy narzędziu dać czas na uruchomienie). Program powinien mieć minimum 4 linie, ruch z pustym narzędziem powinien być typu joint a z przenoszonym detalem typu linear. Program zapisać do pliku. Następnie: (a) wygenerować aproksymację trajektorii i zachować ją do pliku *.trj wg procedury w rozdziale 10.2 załączonej instrukcji PCRoset manual extract (Uwaga: konieczne będzie uruchomienie AsBridge i wirtualnego Teach Pendanta celem dokonania symulacji programu), (b) Po wygenerowaniu danych trajektorii do pliku, zamknąć AsBridge i przeprowadzić podgląd animacji trajektorii (patrz rozdział 11.2 załączonej instrukcji PCRoset manual extract), (c) z paska przycisków modułu DataViewer wybrać opcję Cycle Time i oszacować rzeczywisty czas realizacji poszczególnych kroków programu, wyniki zachować do pliku CSV. Zaobserwować co składa się na czas cyklu pracy i jak jest on szacowany. 9

4. W oparciu o język AS zrealizować następujące zadania: Utworzyć 3 różne pozycje przy pomocy komendy home. Napisać program, który spowoduje, że robot przesunie się do każdego punktu. Między wszystkimi punktami robot ma czekać 1.27 sekundy. Należy przesunąć ramię robota ponad każdy punkt a następnie powoli je opuścić w dół. Napisać program służący do paletyzacji: na palecie w punkcie paleta znajduje się detal (np. prostokątny klocek). Klocków jest n. Każdy następny znajduje się w odległości d cm od poprzedniego. Każdy detal ma być umieszczony w punkcie odbior, jeden na drugim, tak aby utworzyć stos. Wysokość detalu jest równa wartości zmiennej wysokość h (dane wartości zmiennych podane zostaną przez prowadzącego). (*) Napisać podprogram pokazujący omijanie przeszkody. Należy podjechać chwytakiem do detalu wskazanego przez prowadzącego, podnieść go, a następnie przejechać pomiędzy przeszkodami ruchem okrężnym, omijając je raz z jednej raz z drugiej strony. Liczba przeszkód powinna być zadana jako parametr. Napisać program demonstrujący wykorzystanie tego podprogramu. Dla każdego z programów wyznaczyć estymowany czas cyklu pracy. 5. Sporządzić sprawozdanie z wykonanego ćwiczenia, które powinno zawierać wszystkie napisane programy, odpowiedzi na uwagi szczegółowe i problemy/pytania zawarte w zadaniach oraz zwięzłe wnioski. 10