Strona główna ASTOR
Automatyka w praktyce

Sterowanie robotem Astorino po kuli

Kontakt w sprawie artykułu: Kamila Jaworowska - 2025-07-22

Z tego artykułu dowiesz się:

  • jak zasymulować ruch robota Astorino po powierzchni kuli za pomocą oprogramowania astorinoIDE,
  • jak wykorzystać matematyczny opis kuli do generowania punktów na jej powierzchni,
  • jak stworzyć program w Pythonie, który automatycznie oblicza położenie i orientację robota na kuli,
  • jak zaimplementować sterowanie ruchem robota po powierzchni kuli w astorinoIDE.

Dzięki temu poradnikowi dowiesz się, jak zasymulować ruch robota Astorino po powierzchni kuli przy pomocy astorinoIDE, a następnie zaimplementować i przetestować program sterowania w rzeczywistych warunkach. Zaczniemy od matematycznego opisu trajektorii ruchu robota, a następnie stworzymy kod w Pythonie, który obliczy położenie i orientację na powierzchni kuli. W końcu przeniesiemy program do astorinoIDE i przetestujemy go na robocie edukacyjnym Astorino, sprawdzając poprawność wykonania ruchu.

Potrzebne urządzenia oraz oprogramowanie

  • Robot Astorino wraz z oprogramowaniem.
  • Oprogramowanie astorinoIDE.
  • ASTORINO-OPT-SIMBOX (do testowania symulacji).
  • Środowisko programistyczne Python (wraz z biblioteką NumPy).
  • Komputer PC z systemem operacyjnym Windows.

Wstęp

Poruszanie robotem w przestrzeni trójwymiarowej stanowi wyzwanie, szczególnie gdy wymagana jest precyzyjna nawigacja po powierzchni sferycznej. Roboty muszą radzić sobie z realizacją skomplikowanych trajektorii, które mogą obejmować zarówno ruchy po prostych, jak i bardziej złożonych powierzchniach, takich jak kula.

W artykule przedstawiono dwie metody sterowania robotem Astorino, umożliwiające realizację ruchu po powierzchni kuli. Pierwsza z nich opiera się na przesunięciu punktu TCP (Tool Center Point) do środka kuli, podczas gdy druga metoda wykorzystuje matematyczny opis kuli oraz odpowiednią transformację układu współrzędnych. W dalszej części artykułu przedstawiono szczegóły implementacji tych metod w oprogramowaniu astorinoIDE oraz sposób generowania trajektorii robota.

Sterowanie ruchem po kuli na podstawie punktu TCP

Pierwsza metoda sterowania po kuli polega na przesunięciu punktu TCP do środka kuli. Aby to osiągnąć, należy najpierw oddalić układ narzędzia (TOOL) od końcówki robota (narzędzia lub flanszy), a następnie dojechać robotem w taki sposób, aby punkt TCP pokrył się z centrum kuli. Po wykonaniu tego ruchu, rotacja robota względem osi X i Y układu TOOL zapewnia ruch robota po powierzchni kuli. Tego rodzaju sterowanie jest stosunkowo proste, ale może wymagać dużej precyzji w ustawieniach początkowych układu.

Sterowanie na podstawie opisu matematycznego kuli

Wielkości służące do opisu położenia na powierzchni kuli

Alternatywnym podejściem do poruszania robotem po kuli jest wykorzystanie jej matematycznego opisu w przestrzeni trójwymiarowej. Można to zrobić poprzez określenie odpowiednich parametrów kuli i obliczenie pozycji oraz orientacji punktów na jej powierzchni. Będziemy używali oznaczeń:

  • S(x0,y0,z0) – środek kuli,
  • P(x,y,z) – dowolny punkt na powierzchni kuli,
  • Rk – promień kuli
  • θ – kąt zenitalny
  • Φ – azymut

Kąt zenitalny to kąt między osią globalnego pionu (osią Z) a wektorem prowadzącym od środka kuli do punktu na jej powierzchni. Kąt ten jest dodatni, gdy mierzony jest od osi Z w kierunku promienia prowadzącego do danego punktu na kuli.

Azymut to kąt między osią X a rzutem wektora prowadzącego od środka kuli do punktu na jej powierzchni na płaszczyznę poziomą XY. Kąt ten jest dodatni, gdy mierzony jest od osi X w kierunku osi Y.

Powyższe definicje kątów zostały zobrazowane poniżej (rys. 1).

Rys. 1. Ilustracja przedstawiająca kąt zenitalny oraz kąt azymutu. Źródło: ASTOR

Na przykładzie kuli ziemskiej:

  • kąt zenitalny – określa szerokość geograficzną,
  • azymut – określa długość geograficzną.

Matematyczny opis położenia i orientacji na kuli

Wykorzystując powyższe oznaczenia można zapisać wzory na współrzędne położenia na powierzchni kuli:

Wyznaczenie orientacji narzędzia należy przeprowadzić w taki sposób, aby oś Z układu TOOL była skierowana prostopadle do powierzchni kuli, a jej przedłużenie przechodziło przez środek kuli.

 Na początek należy określić oś Z narzędzia jako:

Jest to znormalizowany wektor wskazujący w stronę środka kuli.

Następnie konieczne będzie wyznaczenie osi X. Zostanie ona określona jako styczna do powierzchni kuli, wyznaczona na podstawie pochodnej położenia względem kąta zenitalnego. Jeśli kąt zenitalny jest stały (co skutkuje zerową pochodną), oś X będzie wyznaczona jako pochodna położenia względem kąta azymutu. W celu obliczenia tej orientacji skorzystano ze wzorów:

Jeśli jednak pochodna jest bliska zeru, to przyjmujemy kierunek osi X jako:

Y musi dopełniać utworzony układ prawoskrętny:

W ostatnim kroku należy jeszcze raz wyznaczyć kierunek osi X, aby zapewnić ortonormalność układu współrzędnych narzędzia.

Mając wektory:

budujemy macierz rotacji:

Na jej podstawie możemy wyznaczyć kąty Eulera (w konwencji ZYZ), które jednoznacznie opisują orientację narzędzia w przestrzeni 3D.

Implementacja sterowania w programie astorinoIDE

Na początek włączamy program astorinoIDE. Wybieramy rodzaj połączenia z listy rozwijanej (w przykładzie wybrano połączenie USB) oraz klikamy przycisk Connect/Disconnect (rys.2).

Rys. 2. Widok górnego paska narzędzia astorinoIDE. Źródło: ASTOR

Wybieramy kierunek przesyłanych danych z komputera do robota oraz klikamy SYNC (rys. 3).

Rys. 3. Widok okna synchronizacji połączenia między komputerem a robotem. Źródło: ASTOR

W kolejnym kroku otwieramy lub tworzymy nowy projekt z górnego paska. W tym celu klikamy Project i wybieramy odpowiednią opcję z listy rozwijanej (rys. 4).

Rys. 4. Widok menu tworzenia lub otwierania projektów. Źródło: ASTOR

Następnie otwieramy lub tworzymy nowy program. Z lewego drzewa folderów możemy wybrać istniejący plik z zakładki Program Files lub utworzyć nowy program za pomocą opcji w górnym pasku i zakładce File. Po wybraniu nowego programu (rys. 5) wyświetli się okno, w którym wpisujemy nazwę pliku i zatwierdzamy przyciskiem OK (rys. 6).

Rys. 5. Widok menu edycji programu. Źródło: ASTOR
Rys. 6. Widok okna tworzenia nowego programu. Źródło: ASTOR

Po połączeniu z robotem i stworzeniu własnego programu można zacząć tworzyć scenę (układ robota z kulą w przestrzeni). W celu otwarcia symulacji należy kliknąć przycisk Visualization (rys. 7), oznaczony na pasku głównym programu symbolem sześcianu.

Rys. 7. Widok górnego paska narzędzia astorinoIDE. Źródło: ASTOR

Po kliknięciu powinno pojawić się okno z robotem (rys. 8).

Rys. 8. Widok okna symulacji robota. Źródło: ASTOR

W celu ułatwienia sterowania robotem możemy sprowadzić go do pozycji domowej. Jest to procedura, która umożliwia szybkie przywrócenie robota do wyjściowej pozycji, co ułatwia dalsze programowanie i wykonywanie poleceń. W tym celu w terminalu w dolnej części programu astorinoIDE (rys. 9) wpisujemy komendę do home i zatwierdzamy wciskając Enter na klawiaturze.

Rys. 9. Widok okna terminala z wpisaną już komendą do home (kliknij, aby powiększyć). Źródło: ASTOR

Po takim wywołaniu komendy terminal powinien odpowiedzieć tekstem „DO motion Completed” (rys.10), a robot powinien znaleźć się w pozycji domowej (rys. 11).

Rys. 10. Widok okna terminala po wykonaniu ruchu do pozycji domowej (kliknij, aby powiększyć). Źródło: ASTOR
Rys. 11. Widok okna symulacji robota po wykonaniu ruchu do pozycji domowej. Źródło: ASTOR

UWAGA! Należy pamiętać, że aby ruch został wykonany, robot musi znajdować się w trybie Repeat Mode. Zmienić go można w górnym pasku narzędzi: Mode -> Switch to Repeat (ikona robota) (rys. 12).

Rys. 12. Widok górnego paska narzędzia astorinoIDE przy zmianie trybu ruchu. Źródło: ASTOR

Gdy mamy już otwarty projekt z naszym programem oraz okno symulacji, możemy dodać przykładową kulę, po której później będzie poruszał się robot. W tym celu w oknie wizualizacji wybieramy opcję Open Shape Generator (rys. 13).

Rys. 13. Widok górnego paska okna symulacji robota. Źródło: ASTOR

Otworzy nam się po prawej stronie symulacji okno tworzenia wybranego kształtu w przestrzeni. W celu dodania kuli wybieramy zakładkę Sphere (rys. 14). Następnie możemy wprowadzić jej parametry: nazwę, promień, położenie w trzech osiach układu globalnego, kolor oraz rodzaj obiektu:

  • Obstacle – obiekty tego typu są statycznymi obiektami sceny,
  • Work – obiekty tego typu mogą być przenoszone przez robota,
  • Tool – obiekty tego typu zawsze poruszają się zgodnie z kiścią robota. 
Rys. 14. Widok okna generatora kształtów w programie astorinoIDE. Źródło: ASTOR

Gdy wszystkie parametry zostały już ustawione, należy kliknąć przycisk Add.

Ruch po kuli przez rotację wokół oddalonego punktu TCP

Pierwszym sposobem na ruch po kuli jest oddalenie punktu TCP na odległość równą jej promieniowi. W tym celu otwieramy okno Robot Manager (rys. 15).

Rys. 15. Widok górnego paska narzędzia astorinoIDE. Źródło: ASTOR

Po pojawieniu się okna należy wejść w zakładkę TOOL z prawej strony (rys. 16) i jako parametr TOOL Z, wpisać wartość wcześniej ustawionego promienia kuli.

Rys. 16. Widok zakładki TOOL okna Robot Manager. Źródło: ASTOR

Klikamy Upload Tool oraz zatwierdzamy zmianę narzędzia po wyświetleniu ostrzeżenia.

W kolejnym kroku dojeżdżamy do kuli, tak by punkt TCP pokrył się z środkiem kuli, a orientacja narzędzia była prostopadła do powierzchni kuli. Wykorzystać do tego możemy zakładkę JOG w oknie Robot Manager (rys. 17). Wybieramy układ, w którym chcemy poruszyć robotem z listy rozwijanej (Jogging -> Mode) i klikając odpowiednie przyciski dojeżdżamy nim do wcześniej wspomnianej pozycji (rys.18). Jest to możliwe dopiero po zmianie trybu pracy na Teach Mode.

Rys. 17. Widok zakładki JOG okna Robot Manager. Źródło: ASTOR
Rys. 18. Widok symulacji robota po dojeździe do powierzchni kuli. Źródło: ASTOR

Następnie możemy już poruszać po kuli. W tym celu wybierany w zakładce JOG ruch robotem w układzie TOOL i wykonujemy rotację wokół osi X oraz Y (rotacja wokół osi Z nie ma sensu, ponieważ wcześniej skierowaliśmy ją prostopadle do powierzchni kuli). Poniżej przedstawiono kilka przykładowych pozycji robota.

Rys. 19. Przykładowa pozycja robota nr 1. Źródło: ASTOR
Rys. 20. Przykładowa pozycja robota nr 2. Źródło: ASTOR
Rys. 21. Przykładowa pozycja robota nr 3. Źródło: ASTOR

Ruch po kuli przez wykorzystanie jej matematycznego opisu

Drugą metodą na poruszaniem robotem po kuli jest wygenerowanie punktów (położenie i orientacja), zgodnie z opisem zamieszczonym we wcześniejszej części artykułu. Napisano do tego celu program w języku Python, który generuje punkty na powierzchni kuli wraz z orientacją układu TOOL..

Uwaga! Jeśli położenie lub orientacja układu TOOL zostały zmienione, tak jak chociażby w poprzednim paragrafie, należy przywrócić układ do ustawień podstawowych (zerując każdą ze składowych położenia i orientacji – rys. 22).

Rys. 22. Widok zakładki Tool okna Robot Manager. Źródło: ASTOR

Uniwersalność opracowanego kodu pozwala na wyznaczanie położenia oraz orientacji układu narzędzia w przestrzeni kulistej, niezależnie od położenia kuli oraz jej promienia. Dzięki temu możliwe jest obliczenie współrzędnych punktów na powierzchni kuli w różnych konfiguracjach.

Warto jednak zauważyć, że program nie uwzględnia rzeczywistych ograniczeń robota, takich jak fizyczne możliwości jego ruchu, zasięg czy przechyły. W praktyce oznacza to, że wskazane przez program punkty mogą nie zawsze być osiągalne przez robota w rzeczywistych warunkach. Program dostarcza jedynie wyników matematycznych, które odnoszą się do idealnego modelu matematycznego kuli, nie biorąc pod uwagę fizycznych ograniczeń robota, takich jak kinematyka, zasięg, czy ograniczenia mechaniczne.

Istnieje zatem potrzeba dalszej weryfikacji wyników w kontekście realnych trajektorii robota dla konkretnego zastosowania. W artykule skupiono się jednak na implementacji samego ruchu, a nie na konkretnych zastosowaniach.

Aby ułatwić implementację kodu oraz uniknąć nadmiaru złożonych nazw, w kodzie zastosowane zostały następujące oznaczenia:

  • kąt zenitalny: θ = u
  • azymut: Φ = v

Poniżej przedstawiony został kod w języku Python, który pozwala na generowanie wybranej liczby punktów na powierzchni kuli o dowolnych – wybranych wcześniej – parametrach.

import numpy as np
from scipy.spatial.transform import Rotation as R

# Parametry kuli
x0, y0, z0 = 0.0, 500.0, 250.0  # środek kuli
R_kuli = 50.0  # promień
N = 20  # liczba punktów

for i in range(N):
    u = i * np.pi / (N - 1)  # kąt zenitalny
    v = np.pi  # azymut

    # Pozycja na powierzchni kuli
    x = x0 + R_kuli * np.sin(u) * np.cos(v)
    y = y0 + R_kuli * np.sin(u) * np.sin(v)
    z = z0 + R_kuli * np.cos(u)
    position = np.array([x, y, z])
    center = np.array([x0, y0, z0])

    # Oś Z narzędzia (do środka kuli)
    Z_tool = center - position
    Z_tool /= np.linalg.norm(Z_tool)

    # Dwa wektory styczne do powierzchni (pochodne po u i v)
    dP_du = np.array([
        R_kuli * np.cos(u) * np.cos(v),
        R_kuli * np.cos(u) * np.sin(v),
        -R_kuli * np.sin(u)
    ])
    dP_dv = np.array([
        -R_kuli * np.sin(u) * np.sin(v),
        R_kuli * np.sin(u) * np.cos(v),
        0.0
    ])

    # Wybierz jeden z wektorów stycznych (np. dP_dv)
    tangent = dP_dv
    if np.linalg.norm(tangent) < 1e-6:  # zabezpieczenie przed zerowym wektorem
        tangent = dP_du
    tangent /= np.linalg.norm(tangent)

    # Budowa układu współrzędnych
    X_tool = tangent
    Y_tool = np.cross(Z_tool, X_tool)
    Y_tool /= np.linalg.norm(Y_tool)
    X_tool = np.cross(Y_tool, Z_tool)
    X_tool /= np.linalg.norm(X_tool)

    # Macierz rotacji i konwersja do kątów Eulera
    R_matrix = np.column_stack((X_tool, Y_tool, Z_tool))
    rot = R.from_matrix(R_matrix)
    euler_deg = rot.as_euler('zyz', degrees=True)

    # Format wyjścia: x,y,z,roll,pitch,yaw
    print(f"{x:.3f},{y:.3f},{z:.3f},{euler_deg[2]:.3f},{euler_deg[1]:.3f},{euler_deg[0]:.3f}")

Program służy do wyznaczenia pozycji i orientacji zestawu punktów znajdujących się na powierzchni kuli. Na początku definiowane są podstawowe parametry kuli: jej środek w przestrzeni trójwymiarowej, promień oraz liczba punktów, które mają zostać rozmieszczone na powierzchni.

Następnie, w pętli, dla każdego z tych punktów wyliczana jest jego dokładna pozycja na kuli, przy czym zmieniany jest tylko kąt zenitalny, a azymut pozostaje stały. Dzięki temu punkty są rozmieszczone wzdłuż jednego południka. Dla każdego punktu na powierzchni kuli wyznaczany jest wektor skierowany od tego punktu do środka kuli. Ten wektor określa kierunek, w którym „patrzy” narzędzie lub układ współrzędnych przypisany do punktu – jest to oś Z lokalnego układu.

Aby określić pełną orientację w przestrzeni, potrzebne są jeszcze osie X i Y. Do tego wykorzystywane są dwa wektory styczne do powierzchni kuli, obliczane jako pochodne pozycji punktu względem kątów sferycznych. Jeden z tych wektorów jest wybierany jako podstawa do określenia osi X, a jeśli jego długość byłaby zbyt mała, wybierany jest drugi. Wektor ten jest następnie normalizowany, czyli przeliczany tak, aby miał długość równą 1.

Dalej budowany jest ortogonalny układ współrzędnych. Oś Y wyznaczana jest jako wektor prostopadły do osi Z i wybranego wektora stycznego, a następnie ponownie wyznaczana jest oś X, by zagwarantować, że wszystkie trzy osie tworzą spójny, prawidłowy układ. Z tych trzech wektorów tworzona jest macierz rotacji, która opisuje, jak lokalny układ współrzędnych punktu jest ustawiony względem układu globalnego. Na koniec z tej macierzy wyciągane są kąty Eulera, które opisują orientację punktu jako sekwencję obrotów wokół osi. Wypisywana jest pozycja punktu oraz te trzy kąty, co razem stanowi pełną informację o położeniu i ustawieniu w przestrzeni.

Aby zweryfikować poprawność generowanych punktów, opracowano prosty program w astorinoIDE, który wykorzystuje trzy z wcześniej obliczonych punktów na powierzchni kuli. Program ten wykonuje ruch robota po łuku, w którym pierwszy punkt pełni rolę punktu początkowego, drugi – punktu pomocniczego, a trzeci – punktu końcowego. Dzięki tej metodzie można wizualnie sprawdzić, czy robot prawidłowo podąża wyznaczoną trajektorią. Poniżej przedstawiono kod programu realizującego ten ruch:

.PROGRAM KULA
  HOME
  lappro P1, 100
  lmove P1
  c1move P2
  c2move P3
  ldepart 100
.END

Do przeniesienia obliczonych punktów do programu w astorinoIDE wystarczy skopiować wybrane punkty, które zostały zwrócone w wyniku kompilacji programu w Pythonie. Po wygenerowaniu punktów, należy je ręcznie wprowadzić do środowiska robota, co umożliwia ich dalsze wykorzystanie w kolejnych etapach aplikacji. Poniżej przedstawiono przykładowe wyniki uzyskane po kompilacji kodu (rys. 23).

Rys. 23. Przykładowy wynik kompilacji programu w języku Python dla parametrów z przykładowego kodu (kliknij, aby powiększyć). Źródło: ASTOR

Warto tu zwrócić uwagę na ostrzeżenie, które informuje, że wykryto tzw. „gimbal lock” przy konwersji rotacji na kąty Eulera w układzie 'zyz’, co oznacza, że jedna z osi obrotu pokrywa się z inną, przez co jeden z kątów (trzeci) nie może być jednoznacznie określony i zostaje ustawiony na zero.

Jeśli chcemy przenieść pierwszy punkt do astorinoIDE, wystarczy wykorzystać w terminalu (rys. 24) polecenie POINT oraz TRANS.

Rys. 24. Widok okna terminala z instrukcją do tworzenia nowego punktu (kliknij, aby powiększyć). Źródło: ASTOR

Po zatwierdzeniu klawiszem Enter punkt zostanie zapisany. Jeśli chcielibyśmy sprawdzić, czy rzeczywiście tak się stało, należy wejść w zakładkę Points -> Transformation. Wyświetli się wówczas okno z zapisanymi punktami (rys. 25), wśród których powinniśmy dostrzec nasz zapisany punkt, tak jak poniżej:

Rys. 25. Widok okna punktów kartezjańskich w programie astorinoIDE. Źródło: ASTOR

Proces ten należy powtórzyć dla dwóch pozostałych punktów. Ważne jest, aby każdy z tych punktów został zadeklarowany pod innym numerem porządkowym, np. p2, p3, itd., aby zachować spójność w dalszej części programu i umożliwić prawidłowe przypisanie do odpowiednich pozycji w przestrzeni robota.

Rys.26. Widok okna punktów kartezjańskich w programie astorinoIDE. Źródło: ASTOR

W celu przetestowania programu należy rozpocząć cykl, klikając przycisk Cycle Start.

Rys. 27. Widok górnego paska narzędzia astorinoIDE. Źródło: ASTOR

Jeśli chcemy uruchomić program od początku lub od jakiegoś konkretnego kroku (który nie jest pierwszym), należy wcisnąć kolejno Pause oraz Cycle Stop. Następnie z listy rozwijanej Step należy wybrać linijkę kodu, od której chcemy zacząć wykonywanie ruchu. Rozpoczęcie ruchu zaczynamy kliknięciem przycisku Pause, a następnie przyciskiem Cycle Start.

Rys. 28. Widok górnego paska narzędzia astorinoIDE. Źródło: ASTOR

Wynik programu przedstawiono na rysunku poniżej:

Rys. 29. Widok wywołania przykładowego programu realizującego ruch po kuli wraz z zaznaczoną trajektorią nr 1. Źródło: ASTOR

Z analizy wynika, że wartość azymutu pozostaje stała (rys. 29), podczas gdy kąt zenitalny zmienia się w zakresie od 0do około 90, przy czym ostatni punkt charakteryzuje się właśnie takim kątem. Ruch odbywa się wyłącznie w płaszczyźnie XZ (dla y = const. = y0).

Program przetestowano również dla innych wartości kąta zenitalnego i azymutu. Tym razem przyjęto następujące wartości konta zenitalnego θ i azymutu Φ:

Wartość azymutu będzie zmieniała się w pętli zgodnie z następującym wzorem:

Odpowiadająca temu linijka kodu w Pythonie to:

v = -np.pi / 2 + i * (np.pi / 2) / (N - 1))
Rys. 30. Widok wywołania przykładowego programu realizującego ruch po kuli wraz z zaznaczoną trajektorią nr 2. Źródło: ASTOR

W tym przypadku (rys. 30) kąt zenitalny pozostaje stały, co powoduje, że ruch odbywa się w płaszczyźnie XY (dla z = const. = z0).

Poniżej przedstawiono dwie inne wygenerowane trajektorie:

Rys. 31. Widok wywołania przykładowego programu realizującego ruch po kuli wraz z zaznaczoną trajektorią nr 3. Źródło: ASTOR
Rys. 32. Widok wywołania przykładowego programu realizującego ruch po kuli wraz z zaznaczoną trajektorią nr 4. Źródło: ASTOR

W tym artykule zaprezentowano dwie metody sterowania robotem Astorino po powierzchni kuli, z których każda ma swoje zalety i ograniczenia. Pierwsza metoda jest prostsza i bardziej intuicyjna, opiera się na prostych obliczeniach geometrycznych. Druga metoda, choć bardziej skomplikowana, pozwala na większą elastyczność i precyzję, ponieważ umożliwia generowanie punktów i orientacji narzędzia na podstawie matematycznego opisu kuli.

Praktyczna realizacja sterowania w oprogramowaniu astorinoIDE pozwala na symulację ruchów robota, co jest niezbędne do testowania poprawności trajektorii przed ich rzeczywistym wykonaniem. Zarówno metody sterowania, jak i implementacja w astorinoIDE stanowią solidną podstawę do dalszego rozwoju technologii sterowania robotem Astorino po powierzchniach sferycznych. W przyszłości można je dostosować do bardziej zaawansowanych aplikacji, wymagających precyzyjnego ruchu po bardziej złożonych trajektoriach, czy nawet w przestrzeniach o bardziej złożonych kształtach.

Autor artykułu:


Daniel Michalak

Newsletter Poradnika Automatyka

Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

Please wait...

Dziękujemy za zapis do newslettera!

Czy ten artykuł był dla Ciebie przydatny?

Średnia ocena artykułu: 0 / 5. Ilość ocen: 0

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *