=======================================
=== Akt II: o programowaniu robotów ===
=======================================
Kolor matematyki używany w programowaniu PLC to logika: mamy cewkę normalnie
otwartą, normalnie zamkniętą, T_ON oraz T_OFF. Te 4 elementy stanowią o 95% całego
programowania PLC. Programowanie PLC jest trudniejsze od programowania ROB z tego
względu, że interakcji tych 4 elementów jest znacznie więcej. Tym niemniej sama
idea jak działa każdy z tych elementów jest bardzo prosta.
Robotyka ma z kolei kolor geometrii. Programowanie ROB na wysokim poziomie jest
prostsze od progrmowania PLC, choć ma nieco wyższe wymagania "na start" na kilka
pierwszych kroków. Używamy więcej matematyki. Aby określić dla robota (tu od razu
mały disclaimer - inaczej jest to na KUKA/FANUC/ABB - tutaj opisuję to w takim
meta-codzie, żeby zrozumieć zjawisko) punkt w przestrzeni, musimy podać szereg
zmiennych:
[B];[X,Y,Z];[Orientacja];[T];[Konfiguracja]
[B] - to jest Baza, na robotach ABB znana jako WorkObject. Jest to początek naszego
układu odniesienia. Jak się definiuje bazy nie jest przedmiotem na dzisiaj - na
dziś potrzebujemy wiedzieć, że jak mam podać gdzie coś jest (albo zadać robotowi
jak ma tam pojechać) to potrzebuję mieć jakiś punkt startowy od którego będę
liczył.
[X,Y,Z] - to są współrzędne naszego punktu który robot ma osiągnąć.
[Orientacja] - no właśnie, czy aby na pewno punktu? Robot nie do końca osiąga punkt
- on osiągna punkt z jakimś kierunkiem. Czyli tak naprawdę interesuje nas
określenie jakiegoś położenia wersorów (czyli wektorów jednostowych) w przestrzeni.
Czemu robot tego wymaga? Test jest bardzo prosty - weź długopis i dotknij jego
czubka palcem wskazującym. Teraz ustaw inaczej palec w dłoni i dotknij ponownie.
Wartości [X,Y,Z] się przecież nie zmieniły - czubek długopisu jest dalej w tej
samej pozycji. To co zmieniło się natomiast, to ułożenie Twoich palców, ten kąt
ataku. I właśnie ten kąt ataku musimy jakoś przekazać dla robota.
Układy współrzędnych w robotyce są prawoskrętne. To oznacza, że jak weźmiecie prawą
rękę i ułożycie palec wskazujący na wprost (x) kciuk do góry (z) i środkowy w prawo
(y) to tak właśnie są zorientowane dodatnie kierunki osi.
W matematyce najprostszy sposób na przekazanie orientacji to przez tak zwaną
macierz rotacji [R]. Macierz ta jest macierzą 3 na 3.
Macierz Rotacji bez żadnego obrotu wygląda tak:
| 1 0 0 |
| 0 1 0 |
| 0 0 1 |
Dla czytelności, podpiszmy co znaczy który rząd:
___ x y z
x | 1 0 0 |
y | 0 1 0 |
z | 0 0 1 |
Jak się to czyta:
Każda kolumna mówi, której osi dotyczy sprawa. Czyli pierwsza to oś X, druga Y,
trzecia Z.
każdy wiersz mówi, jak wygląda rzut danej osi na zrotowany układ współrzędnych, jak
to się zrzutowało na X, Y, Z.
W przykładzie powyżej:
oś X po zrzutowaniu została cała na osi X.
oś Y po zrzutowaniu została cała na osi Y.
oś Z po zrzutowaniu została cała na osi Z.
Czyli taka marcierz rotacji mówi o braku obrotu.
Teraz weźmy przykład ciekawszy: obrót według osi RX:=+90 stopni.
Czyli obróćcie swoje 3 paluszki prawej ręki względem palca wskazującego (oś Y) w
kierunku zgodnym z ruchem wskazówek zegara (dodatni kierunek)
Macierz rotacji to:
___ x y z
x | 1 0 0 |
y | 0 0 -1 |
z | 0 1 0 |
Cały X po zrzutowaniu został na X - przecież względem niego kręciliśmy. Czyli 1 na
X, nic na Y, nic na Z.
Cały Y po obrocie jest tam, gdzie był +Z. Czyli nowe Y w stosunku do starego układu
do 0 na X, 0 na Y, 1 na Z.
Cały Z po obrocie jest tam, gdzie był -Y. Czyli nowe Z w stosunku do starego układu
do 0 na X, -1 na Y bo idziemy w kierunku minuoswym, 0 na Z.
Wróćmy do przekazywania informacji o [Orientacji] dla robota. Każdy robot przyjmuje
informację o rotacji w innej formie niż macierz rotacji. Dla przykładu robot KUKA
przyjmuje ją jako [A, B, C] gdzie A to Rz, B to Ry, a C to Rx. Robot ABB przyjmuje
informację o rotacji w postaci [Q1, Q2, Q3, Q4] które są minimalistyczną formą
macierzy rotacji.
[T] to Tool, inaczej zwane TCP, czyli położenie końcówki roboczej. Innymi słowy,
jak jest zadanie - dotknij palcem nosa - to powinna paść pedantyczna odpowiedź "ale
którym palcem". Nasz robot właśnie takiej informacji potrzebuje.
[Konfiguracja] to dodatkowa informacja, która mówi jak dany robot ma się wygiąć,
żeby osiągnąć dany punkt. Robot - taki typowy, 6cio osowy - ma tyle punktów
swobody, że jest w stanie wygiąć się w kilka różnych sposobów, aby finalnie i tak
dotknąć tego samego punktu (czyli te same xyz, orientacja, T i B) Na robotach KUKA
ta informacja zapisywana jest w postaci zmiennych S i T w pliku DAT. Na robotach
ABB jest zapisywana jako zestaw 4 liczb przyjmujących wartości od -4 do 3. Na
robotach FANUC używany jest zapis 3 liter, np. FUP określających położenie
nadgarstka.
Tak przygotowany zestaw informacji dopiero stanowi kompleksowe określenie definicji
punktu w przestrzeni dla robota. To wszystko co tu napisałem będzie stanowić wsad
to naszej komendy ruchu - ale o tym innym razem.