Na początek przypomnijmy czym jest osobliwość kiści.
Konfiguracje osobliwe to takie wartości współrzędnych wewnętrznych manipulatora robotycznego, przy których układ zaczyna się zachowywać w inny sposób niż przewidziano.
Przykładowo efektor robota może znaleźć się w takim położeniu, w którym pozostanie pomimo ruchów silników, zatrzyma się z powodu osiągnięcia łącznika krańcowego lub zbyt dużego przeciążenia silników spowodowanego za szybkim i nieprzewidzianym ruchem.
W robotach 6 osiowych wyróżniamy 3 typy konfiguracji osobliwych
Osobliwość pułapowa
Osobliwość pozycji wyprostowanej
Osobliwość osi kiści
W dwóch pierwszych przypadkach osobliwości spowodowane są głównie nieprawidłowym ustawieniem robota względem bazy (ustawienie robota poza jego strefą zasięgu), przez co robot będzie ograniczony jego łącznikami krańcowymi.
W przypadku 3 typu osobliwości – osobliwości osi kiści ustawienie robota odgrywa tak naprawdę niewielką rolę i jest spowodowane konstrukcją osi 4 i 6 które są od siebie zależne.
Aby unikać osobliwości kiści możemy użyć jednego lub kilku z poniższych sposobów:
- Unikaj ruchów robota przy której pozycja 5 osi robota jest bliska 0°. Powoduje to, że oś 4 i 6 zaczynają się obracać razem przez co efektor może znaleźć się w takim położeniu, w którym pozostanie pomimo ruchów silników. Może to znacznie opóźnić przebieg programu lub zatrzyma się, gdy któraś oś będzie się poruszać za szybko względem drugiej.
- Dodaj niewielki ruch PTP który wyprostuje osie robota w taki sposób, aby było mu najwygodniej.
- Zmniejsz prędkość posuwu – gdy w naszej aplikacji nie mamy możliwości aby dodać ruch ptp (np. z powodu niewystarczającej przestrzeni roboczej) możemy zwolnić prędkość posuwu całego robota lub poszczególnej osi. Jeśli zależy nam na czasie wykonania aplikacji możemy ją zmniejszyć w poszczególnym zakresie (takim, w którym 5 oś zbliża się do 0) przez komendę INTERRUPT lub IF monitorując aktualna pozycje kartezjańska lub osiową. Aby uniknąć tych osobliwości również w przyszłych programach możemy to zrobić w programie SPS.sub
- $ORI_TYPE = #JOINT – Jest to preferowane rozwiązanie, jeśli orientacja nie jest ważna, ponieważ osie rąk a4-a6 wykonują ruch ptp. Dlatego osobliwość osi 5 już nie istnieje. Tak więc przez oszukiwanie orientacji unika się osobliwości. Zmienna $ORI_TYPE możemy zmienić bezpośrednio w kodzie programu (domyślnie ustawiona jest na #VAR).
- $SINGUL_STRATEGY = 1– powoduje unikanie osobliwości poprzez zmianę interpolacji (w inny sposób niż $ORI_TYPE). Jednak ta metoda nie jest zalecana przez KUKA, ponieważ zmiana orientacji zależy od prędkości i w trybie T1 błąd orientacji może być mały zaś w AUT/EXT znacznie większy.
- $SINGUL_POS [3] = 1 – zmienną tą znajdziemy w pliku $machine.dat. Cyfra 3 odpowiada trzeciemu typowi osobliwości który może wystąpić w robotach 6 osiowych (1 i 2 analogicznie dwóm poprzednim wspomnianym na początku artykułu). Domyślnie zmienna $SINGUL_POS [3] ustawiona jest na zero, zmiana wartości na 1 powoduje, że kąt osi 4 pozostanie taki sam od punktu początkowego do końcowego.
Powyższe zmienne możemy zmienić w kodzie programu w zależności od innej zmiennej mianowicie “$singul_dist [3] <1.0”. Powoduje to zadziałanie warunku gdy robot zbliży sie do konfiguracji osobliwej (5 oś zbliży się do 0).
Mam nadzieję, że powyższym artykułem pomogłem wszystkim, których dręczy problem konfiguracji osobliwych osi 🙂
Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Sierpień 2019
Nagrodę Kurs programowania sterownika easyE4 + kubek dostarcza ambasador konkursu, firma iAutomatyka.pl |