Robot edukacyjny Astorino: zastosowanie funkcji FRAME i przykładowa aplikacja paletyzacji
Kontakt w sprawie artykułu: Łukasz Giza - 2026-07-21

Dzięki temu poradnikowi dowiesz się, jak używać funkcji FRAME w języku KAWASAKI AS oraz zbudować i zaprogramować proste stanowisko zrobotyzowane z wykorzystaniem robota edukacyjnego Astorino. Celem aplikacji będzie realizacja schematu paletyzacji dostarczanych detali z wykorzystaniem funkcji FRAME.
Po utworzeniu programu i jego przetestowaniu w bezpiecznych warunkach z użyciem symulacji w środowisku programistycznym Astorino, zostanie on uruchomiony i zweryfikowany na fizycznym robocie edukacyjnym.
Zaczynamy!
Przybliżony czas wykonywania aplikacji na Kawasaki Robotics Astorino: 60 min
Potrzebne urządzenia oraz oprogramowanie
W celu wykonania aplikacji potrzebne są następujące elementy:
- robot Astorino wraz z oprogramowaniem,
- wydrukowane kostki lub ich odpowiednik: 12 sztuk – zależnie od liczby iteracji,
- podajnik kostek sterowany sygnałami I/O z poziomu Astorino,
- czujnik optyczny do detekcji kostek podłączony do Astorino,
- chwytak dla Astorino umożliwiający manipulacje kostkami,
- komputer z portem Ethernet oraz USB.
Opis stanowiska
Do wykonania tego ćwiczenia wykorzystano stację PRO wyposażoną w robota Astorino, podajnik kostek z czujnikiem oraz system wizyjny 2D. Jednak do realizacji przedstawionego zadania w pełni wystarczy stacja ECO, wyposażona jedynie w robota Astorino oraz podajnik kostek. Opcjonalnie można również wykorzystać paletę do odkładania detali.


Czym jest funkcja FRAME
Definicja:
FRAME(P1, P2, P3, P4)
Funkcja FRAME zwraca transformację współrzędnych nowo utworzonego układu odniesienia (FRAME) względem bazowego układu współrzędnych robota (BASE). Do wyznaczenia położenia i orientacji układu wykorzystywane są wyłącznie współrzędne kartezjańskie wskazanych punktów – wartości orientacji (kąty OAT) nie są brane pod uwagę. Geometria układu FRAME jest definiowana następująco: prosta przechodząca przez punkty P1 i P2 wyznacza dodatni kierunek osi X, prosta przechodząca przez punkty P1 i P3 określa kierunek osi Y, punkt P4 definiuje początek nowego układu współrzędnych (FRAME). W większości zastosowań punkty P1 i P4 są tożsame, dzięki czemu początek układu współrzędnych znajduje się w punkcie, od którego wyznaczane są osie X i Y.

Konfiguracja Robota i programu Astorino
Sprawdzenie pozycji domowej robota
Przed rozpoczęciem pracy należy zweryfikować konfigurację pozycji domowej robota.
1. Otwórz zakładkę Home/Tool.
2. Sprawdź, czy dla pozycji HOME trzecie i piąte złącze (Joint 3 i 5) mają wartości −90°.
3. Jeżeli wartość jest inna, zaznacz opcję Manual i ręcznie ustaw oraz zapisz wymagane parametry (rys. 4).

Tworzenie nowego programu
Poniżej (rys. 5) przedstawiono sposób tworzenia nowego programu.

Wgrywanie programu do robota
Po przygotowaniu programu (wybraniu gotowego lub napisaniu własnego) należy przesłać go do sterownika robota. Proces ten przedstawiono na rys. 6.

WAŻNE: Żółty kolor przycisku oznacza, że najnowsza wersja programu nie została jeszcze wgrana do robota.
Uruchamianie programu
Po poprawnym wgraniu programu można go uruchomić z poziomu tej samej zakładki, wybierając przycisk przedstawiony na rysunku 7.

Tryby pracy robota
Robot Astorino może pracować w dwóch trybach: TEACH oraz REPEAT.
Tryb TEACH przeznaczony jest do:
- nauki punktów,
- wgrywania programów,
- testowania aplikacji.
W tym trybie prędkość robota jest ograniczona, a zwolnienie przycisku Dead Man Switch na teach pendancie powoduje natychmiastowe zatrzymanie robota.
Tryb REPEAT służy do wykonywania gotowego programu. W tym trybie robot może pracować z dowolnie ustawioną prędkością roboczą, jednak nie jest możliwe wgrywanie nowych programów. Dodatkowo robot nie reaguje na zwolnienie przycisku Dead Man Switch, dlatego podczas pracy należy zachować szczególną ostrożność.
Miejsce zmiany trybu pracy robota zostało przedstawione na rys. 8.

Wizualizacja stanowiska
Na rysunku 9 przedstawiono wizualizację stanowiska roboczego wraz z rozmieszczeniem punktów oraz kolejnością wykonywanych ruchów wykorzystanych w niniejszym poradniku.

Następnie należy nauczyć robota punktów pokazanych na rysunku i zapisać je pod podanymi nazwami. W przedstawionym przykładzie punkty zostały zapisane jako współrzędne złączowe (Joint). Robotem można sterować zarówno z poziomu aplikacji Astorino (zakładka JOG), jak i za pomocą teach pendanta (rys. 10 i 11).


Definiowanie pola roboczego
Poniżej przedstawiono przykładową implementację funkcji FRAME wraz z opisem kolejnych etapów działania programu.
Program rozpoczyna się od konwersji punktów zapisanych jako współrzędne złączowe na współrzędne kartezjańskie. Jest to konieczne, ponieważ funkcja FRAME wykorzystuje wyłącznie współrzędne kartezjańskie do wyznaczenia nowego układu odniesienia.
Następnie tworzony jest nowy układ współrzędnych FRAME, którego orientacja jest wyznaczana na podstawie punktów A1, A2 oraz A3, natomiast jego początek znajduje się w punkcie A1.
W kolejnym kroku definiowany jest punkt PUT, odsunięty o 20 mm wzdłuż osi X bazowego układu współrzędnych (BASE). Do tego punktu dodawana jest transformacja FRAME, dzięki czemu jego położenie zostaje przeliczone względem nowo utworzonego układu współrzędnych.
Na końcu program nadaje punktowi PUT taką samą orientację (OAT), jaką posiada punkt A1. Zapewnia to odpowiednie ustawienie chwytaka podczas wykonywania ruchu do wyznaczonej pozycji.
.PROGRAM FRAME_DEMO
;Konwersja współrzędnych punktów
;ze współrzędnych złączowych
;na kartezjańskie
POINT A1 = #P1
POINT A2 = #P2
POINT A3 = #P3
;Utworzenie układu współrzędnych FRAME
FR = FRAME(A1, A2, A3, A1)
;Deklaracja punktu PUT – przesunięcie
;o 20 mm w osi X względem
;początku układu BASE.
;Współrzędne PUT: (X=20, Y=0, Z=0)
POINT PUT = SHIFT(NULL BY 20, 0, 0)
;Dodanie transformacji FRAME
;do punktu PUT
POINT PUT = PUT + FR
;Nadanie orientacji punktu PUT
;takiej samej jak punkt A1,
;aby chwytak dojechał
;z odpowiednim ustawieniem
POINT/OAT PUT = A1
.END Program paletyzacji
Użyte funkcje i ich opisy
Program paletyzacji wykorzystuje następujące funkcje oraz instrukcje języka Kawasaki AS:
- SPEED – określa prędkość wykonywania ruchów robota.
- ACCEL – ustawia przyspieszenie robota podczas rozpoczynania ruchu.
- DECEL – ustawia opóźnienie robota podczas zatrzymywania ruchu.
- POINT – służy do deklarowania oraz przechowywania punktów i pozycji robota.
- HOME – powoduje przejazd robota do zdefiniowanej pozycji bazowej.
- FRAME – tworzy lokalny układ współrzędnych na podstawie wskazanych punktów.
- SIGNAL – umożliwia sterowanie sygnałami wejść i wyjść robota, np. chwytakiem lub innymi urządzeniami peryferyjnymi.
- FOR … TO … END – pętla realizująca wielokrotne wykonywanie wybranego fragmentu programu.
- JAPPRO – realizuje ruch złączowy do punktu pośredniego znajdującego się nad celem, zapewniając bezpieczny dojazd.
- LMOVE – wykonuje ruch liniowy robota do wskazanego punktu.
- LDEPART – realizuje liniowe odejście od aktualnej pozycji o zadaną odległość.
- TWAIT – wstrzymuje wykonywanie programu na określony czas.
- SHIFT(P BY X, Y, Z) – tworzy nowy punkt poprzez przesunięcie wskazanego punktu o zadane wartości w osiach X, Y oraz Z.
- SWAIT – wstrzymuje wykonywanie programu, dopóki na określonym wejściu pojawi się wymagany stan.
Kod programu do symulacji
W tej części przedstawiono kompletny kod programu realizującego proces paletyzacji z wykorzystaniem funkcji FRAME. Program pobiera detal z podajnika, a następnie odkłada go na kolejne pozycje palety wyznaczane względem lokalnego układu współrzędnych. Dzięki zastosowaniu funkcji FRAME zmiana położenia lub orientacji palety wymaga jedynie ponownego wyznaczenia układu odniesienia, bez konieczności modyfikowania współrzędnych wszystkich punktów odkładania.
.PROGRAM PALETYZACJA_SIM
;Maciej Palka, ASTOR
;ustawienie parametrow robota
SPEED 50 ALWAYS
ACCEL 80 ALWAYS
DECEL 80 ALWAYS
;deklaracja punktow do frame'a
POINT PICK = #P0
POINT A1 = #P1
POINT A2 = #P2
POINT A3 = #P3
;deklaracja stalych
gripper = 57
feeder = 7
x_shift = 50
y_shift = 100
z_shift = 25
rowmax = 2
colmax = 3
layers_max = 2
;kod startowy
HOME
SIGNAL -gripper
;deklaracja frame'a
POINT FR = FRAME(A1, A2, A3, A1)
FOR .LAYER = 0 TO layers_max - 1
FOR .ROW = 0 TO rowmax - 1
FOR .COL = 0 TO colmax - 1
;pobranie detalu
JAPPRO PICK, 100
SIGNAL feeder
TWAIT 1
SIGNAL -feeder
LMOVE PICK
SIGNAL gripper
TWAIT 1
LDEPART PICK, 100
;odlozenie detalu
POINT PUT = SHIFT(NULL BY x_shift*.COL, y_shift*.ROW, z_shift*.LAYER)
POINT PUT = FR + PUT
POINT/OAT PUT = A1
JAPPRO PUT, 100
LMOVE PUT
SIGNAL -gripper
TWAIT 1
LDEPART PUT, 100
END
END
END
HOME
.ENDKod programu na fizycznego robota
Kod przeznaczony dla fizycznego robota został nieznacznie zmodyfikowany ze względu na inne mapowanie pinów wejścia/wyjścia (I/O). Wgrywając poniższy kod na własnego robota należy uwzględnić te różnice. Użytkownik ponosi pełną odpowiedzialność za prawidłowe działanie robota oraz za wszelkie ewentualne uszkodzenia lub zniszczenia wynikające z działania programu.
.PROGRAM PALETYZACJA_REAL
;Maciej Palka, ASTOR
;ustawienie parametrow robota
SPEED 50 ALWAYS
ACCEL 80 ALWAYS
DECEL 80 ALWAYS
;deklaracja punktow do frame'a
POINT PICK = #P0
POINT A1 = #P1
POINT A2 = #P2
POINT A3 = #P3
;deklaracja stalych
;gripper = 57, -58
feeder = 1
cube_detection = 1001
x_shift = 50
y_shift = 100
z_shift = 25
rowmax = 2
colmax = 3
layers_max = 2
;kod startowy
HOME
SIGNAL -57, 58
;deklaracja frame'a
POINT FR = FRAME(A1, A2, A3, A1)
FOR .LAYER = 0 TO layers_max - 1
FOR .ROW = 0 TO rowmax - 1
FOR .COL = 0 TO colmax - 1
;pobranie detalu
JAPPRO PICK, 100
SIGNAL feeder
TWAIT 1
SIGNAL -feeder
SWAIT cube_detection
LMOVE PICK
SIGNAL 57, -58
TWAIT 1
LDEPART PICK, 100
;odlozenie detalu
POINT PUT = SHIFT(NULL BY x_shift*.COL, y_shift*.ROW, z_shift*.LAYER)
POINT PUT = FR + PUT
POINT/OAT PUT = A1
JAPPRO PUT, 100
LMOVE PUT
SIGNAL -57, 58
TWAIT 1
LDEPART PUT, 100
END
END
END
SPEED 30
HOME
.ENDTestowanie programu w symulacji
Przed uruchomieniem programu na rzeczywistym stanowisku przeprowadzono jego weryfikację w środowisku symulacyjnym Astorino. Celem testów było sprawdzenie poprawności działania algorytmu, trajektorii ruchu robota oraz procesu paletyzacji z wykorzystaniem funkcji FRAME.
Symulacja potwierdziła poprawne działanie programu. Robot prawidłowo pobierał detale z podajnika oraz odkładał je na kolejne pozycje palety wyznaczane względem zdefiniowanego układu współrzędnych.

Testowanie programu na fizycznym robocie
Po pomyślnym zakończeniu testów w środowisku symulacyjnym program został uruchomiony na fizycznym robocie edukacyjnym Astorino. Przed rozpoczęciem testów nauczono robota wszystkich wymaganych punktów oraz zweryfikowano ich poprawność.
Program został początkowo uruchomiony w trybie TEACH, co umożliwiło bezpieczną kontrolę wykonywanych ruchów. Po potwierdzeniu poprawności działania przełączono robota w tryb REPEAT i wykonano pełny cykl pracy.
Przeprowadzone testy potwierdziły zgodność działania programu z przyjętymi założeniami. Robot poprawnie realizował proces paletyzacji, wykorzystując lokalny układ współrzędnych utworzony za pomocą funkcji FRAME, a wszystkie detale były odkładane w zaplanowanych pozycjach.
Mapowanie I/O:
| Operand symboliczny | Operand absolutny |
| gripper | -57, 58 |
| feeder | 1 |
| cube_detection | 1001 |
Poniższe zdjęcia prezentują wynik działania programu na fizycznym robocie.




Błędy i rozwiązania
Resetowanie błędów – roboty Astorino
W przypadku pojawienia się błędu należy go zresetować, klikając odpowiedni przycisk:

Błąd E099

Błąd E099 oznacza, że robot nie jest w stanie osiągnąć zadanej pozycji. W przypadku programu wykorzystującego funkcję FRAME najczęściej wynika to z nieprawidłowo zdefiniowanej orientacji punktu docelowego (kątów OAT) lub z ich całkowitego braku. Problem ten występuje głównie podczas pracy na współrzędnych kartezjańskich.
Rozwiązanie
Należy nadać punktowi docelowemu poprawną orientację. W przypadku punktów tworzonych za pomocą funkcji SHIFT po dodaniu transformacji FRAME należy skopiować orientację z punktu odniesienia (najczęściej punktu początkowego układu FRAME, np. A1/P1), wykorzystując instrukcję:
POINT/OAT PUT = A1
Dzięki temu punkt docelowy otrzyma odpowiednie kąty OAT, co umożliwi robotowi wyznaczenie poprawnej konfiguracji i wykonanie ruchu bez wystąpienia błędu E099.
Pozostałe błędy
W przypadku innych błędów, należy skontaktować się z pomocą techniczną ASTOR:
Telefonicznie: 12 424 00 88
Mailowo: support@astor.com.pl
Lub przez stronę internetową: https://www.astor.com.pl/wsparcie.html
Zobacz też:
Robot edukacyjny Astorino – kurs dla początkujących
Automatyzacja procesu sortowania z wykorzystaniem robota Astorino

Autor artykułu:
Maciej Pałka
Praktykant ASTOR
Student III roku kierunku Automatyka i robotyka na Akademii Górniczo-Hutniczej w Krakowie