Wdrożenie początkowej wersji aplikacji pozwala na poprawne działanie robota, jednak rzadko wykorzystuje pełnię jego potencjału. Kluczowym etapem jest optymalizacja, która przekłada się na trzy główne korzyści:
- Wyższa wydajność: praca robota staje się płynniejsza i bardziej efektywna.
- Łatwiejsza modyfikacja: wprowadzanie kolejnych zmian w aplikacji jest znacznie prostsze.
- Lepsza czytelność: przejrzysta struktura programu ułatwia jego późniejsze utrzymanie i serwisowanie.
Stabilna podstawa robota to pierwszy krok do poprawnej pracy
Podstawą poprawnego działania cobota jest stabilna konstrukcja. Robot zamocowany na bujającym się stoliku lub podłożu wprowadzającym dodatkowe wibracje nie jest poprawnym rozwiązaniem. Według wymagań producenta, podstawa powinna spełniać dwa warunki:
- wytrzymywać co najmniej 5-krotność wagi robota,
- być zdolna przenieść 10-krotność maksymalnego momentu obrotowego największego przegubu.

Wymagane wartości momentu dla poszczególnych modeli:
| Model robota | Wymagany moment (Nm) |
|---|---|
| UR3e | 56 |
| UR7e | 150 |
| UR10e / UR12e/UR16e | 330 |
| UR15 / UR8Long / UR18 | 433 |
| UR20 / UR30 | 738 |
Prawidłowe ustawienie payload i środka ciężkości w Universal Robots
Jednym z najczęstszych błędów w aplikacjach Universal Robots jest nieprawidłowe ustawienie parametrów obciążenia (payload). Zbyt niska lub zbyt wysoka masa narzędzia oraz błędnie określony środek ciężkości sprawiają, że robot nie pracuje optymalnie.
PolyScope zawiera narzędzie, które automatycznie zmierzy obciążenie oraz środek ciężkości. Należy aktualizować te ustawienia zawsze wtedy, gdy zmienia się masa układu – np. przy pobieraniu, odkładaniu detalu lub zmianie narzędzia.
W przypadku niestandardowych obciążeń, takich jak szerokie chwytaki, przenoszone duże arkusze bądź blach, warto zastosować macierz inercji. Pozwoli ona uwzględnić, jak obciążenie rozłożone jest w przestrzeni, zapobiegając drganiom ramienia i zatrzymaniom ochronnym.
Optymalizacja programu robota i lepsza organizacja kodu
Program wykonujący te same rzeczy, może wyglądać zupełnie inaczej. Analizując przykład poniżej, zauważymy, że drugi program, jest zdecydowanie łatwiejszy do analizy i przyszłych poprawek. Wynika to z kilku rzeczy:
- Nazwane zmienne, punkty orientacyjne, jak i WE/WY
- Struktura programu oparta o foldery, które mogą być różnie nazywane i zawierać wewnątrz wiele poleceń, które można zwijać
- Polecenia ruchu dodawane po sobie, a nie wewnątrz siebie – drzewo programu nie rozwija się horyzontalnie, co sprzyja uporządkowaniu i przyszłej edycji.


Podpodprogramy pozwolą zorganizować dłuższe programy główne. Warto także korzystać z dedykowanych szablonów, które pozwolą zbudować aplikację dużo szybciej i być konsekwentnym w nazewnictwie.
Promienie mieszania (blending) w Universal Robots a płynniejszy ruch robota
Cobot nie musi się zatrzymywać w każdym punkcie orientacyjnym. Punkty pośrednie, pozycje dojazdowe – to dobre miejsca, żeby dodać promienie mieszania. Pozwoli na płynne przejście pomiędzy dwiema trajektoriami bez zatrzymywania się.
Zalety stosowania promieni mieszania:
- krótszy czas cyklu,
- mniejsze obciążenie silników (brak gwałtownych zmian prędkości),
- płynniejszy ruch,
- mniejsze zużycie mechaniczne.
Należy unikać:
- zbyt dużych lub nakładających się promieni mieszania – robot może pominąć punkty,
- komend zatrzymujących ruch po promieniach – robot nagle staje,
- zbyt małych promieni (<15 mm) – przy zachowaniu prędkości mogą wystąpić szarpnięcia przy przejściu do kolejnej trajektorii.
Zmiana prędkości i przyspieszeń robota a poprawa czasu cyklu
Aby zmniejszyć czas cyklu aplikacji, najlepiej zacząć od zmiany prędkości robota. Prędkość nie może przekraczać wartości ustawionych w ustawieniach bezpieczeństwa.
Jeżeli nadal brakuje kilku sekund do optymalnego czasu cyklu, można spróbować zmienić przyspieszenia. Universal Robots zaleca maksymalne wartości:
- RuchJ: 800 °/s²
- RuchL: 2500 mm/s²
Zbyt duże przyspieszenia mogą powodować:
- wibracje i szarpnięcia,
- nadmierne przeciążenia,
- zatrzymania ochronne.
Dostosowanie prędkości i przyspieszeń w ramach zaleceń pozwala skrócić czas cyklu bez ryzyka uszkodzeń lub sytuacji niebezpiecznych.
Można wybrać dwie opcje zmiany tych parametrów:
- Klasyczne – wartości liczbowe

- Optimove (ruch zoptymalizowany) – wartości procentowe

Dodatkowa optymalizacja ruchu w Universal Robots: Motion Version 2, limit siły i jerk
Aby uzyskać płynniejsze ruchy robota, nie jest konieczna ingerencja w program. W tym celu można skorzystać z zakładki Instalacja → Ruch.
Włączenie funkcji Ruch w wersji 2 pozwala na płynne przyspieszanie i hamowanie, co zmniejsza wibracje, redukuje przeciążenia i zapobiega nakładaniu się promieni mieszania.
W przypadku, gdy włączenie wersji 2 ruchu to za mało, możesz ograniczyć maksymalną siłę i moment przyspieszenia. Pozwoli to na redukcję przyspieszeń we wszystkich programach, zmniejszając wibracje podczas przyspieszeń i hamowań. Jest to szczególnie przydatne, gdy robot przenosi detale za pomocą chwytaka podciśnieniowego z przyssawkami. Dzięki tej opcji, robot dostosowuje przyspieszenia tak, że podczas ruchu z detalami nie będzie puszczał przedmiotów.
Ograniczenia siły narzędzia można w każdej chwili zmienić w programie, korzystając z funkcji tool_wrench_limit_set(), lub całkowicie wyłączyć za pomocą tool_wrench_limit_disable().
W przypadku potrzeby maksymalnie płynnego przyspieszania i hamowania, na przykład w celu stabilizacji przenoszonego ładunku, można dostosować parametr „jerk” za pomocą funkcji jerk_gain_scaling_set(). Parametr określa szybkość zmiany przyspieszenia robota i przyjmuje wartości od 0,01 do 1,0. Wartość domyślna 1,0 oznacza pełne wykorzystanie standardowego profilu jerk.
Jak sprawdzić, czy aplikacja robota działa optymalnie?
Jako certyfikowany dystrybutor Universal Robots możemy wygenerować szczegółowy raport dotyczący Twojej aplikacji. Pozwala on w obiektywny sposób ocenić, czy program oraz konfiguracja robota w pełni wykorzystują jego możliwości.
Dowiesz się:
- co warto zmienić,
- gdzie uprościć program,
- które parametry ruchu dostroić,
- które ustawienia mogą ograniczać wydajność aplikacji.
Dzięki temu optymalizacja przestaje być procesem prób i błędów, a staje się świadomym działaniem opartym na danych i rzeczywistych potrzebach aplikacji.




