{"id":23335,"date":"2025-07-25T18:49:01","date_gmt":"2025-07-25T16:49:01","guid":{"rendered":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?p=23335"},"modified":"2025-09-24T10:14:03","modified_gmt":"2025-09-24T08:14:03","slug":"sterowanie-robotem-astorino-po-kuli","status":"publish","type":"post","link":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/","title":{"rendered":"Sterowanie robotem Astorino po kuli"},"content":{"rendered":"\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"dowiesz-sie\">\n<h3>Z tego artyku\u0142u dowiesz si\u0119:<\/h3>\n<ul class=\"bulleted\">\n<li>jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 oprogramowania astorinoIDE,<\/li>\n<li>jak wykorzysta\u0107 matematyczny opis kuli do generowania punkt\u00f3w na jej powierzchni,<\/li>\n<li>jak stworzy\u0107 program w Pythonie, kt\u00f3ry automatycznie oblicza po\u0142o\u017cenie i orientacj\u0119 robota na kuli,<\/li>\n<li>jak zaimplementowa\u0107 sterowanie ruchem robota po powierzchni kuli w astorinoIDE.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Dzi\u0119ki temu poradnikowi dowiesz si\u0119, jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli przy pomocy astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 i przetestowa\u0107 program sterowania w rzeczywistych warunkach. Zaczniemy od matematycznego opisu trajektorii ruchu robota, a nast\u0119pnie stworzymy kod w Pythonie, kt\u00f3ry obliczy po\u0142o\u017cenie i orientacj\u0119 na powierzchni kuli. W ko\u0144cu przeniesiemy program do astorinoIDE i przetestujemy go na robocie edukacyjnym Astorino, sprawdzaj\u0105c poprawno\u015b\u0107 wykonania ruchu.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Potrzebne urz\u0105dzenia oraz oprogramowanie<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Robot Astorino wraz z oprogramowaniem.<\/li>\n\n\n\n<li>Oprogramowanie astorinoIDE.<\/li>\n\n\n\n<li>ASTORINO-OPT-SIMBOX (do testowania symulacji).<\/li>\n\n\n\n<li>\u015arodowisko programistyczne Python (wraz z bibliotek\u0105 NumPy).<\/li>\n\n\n\n<li>Komputer PC z systemem operacyjnym Windows.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wst\u0119p<\/h2>\n\n\n\n<p>Poruszanie robotem w przestrzeni tr\u00f3jwymiarowej stanowi wyzwanie, szczeg\u00f3lnie gdy wymagana jest precyzyjna nawigacja po powierzchni sferycznej. Roboty musz\u0105 radzi\u0107 sobie z realizacj\u0105 skomplikowanych trajektorii, kt\u00f3re mog\u0105 obejmowa\u0107 zar\u00f3wno ruchy po prostych, jak i bardziej z\u0142o\u017conych powierzchniach, takich jak kula.<\/p>\n\n\n\n<p>W artykule przedstawiono dwie metody sterowania robotem Astorino, umo\u017cliwiaj\u0105ce realizacj\u0119 ruchu po powierzchni kuli. Pierwsza z nich opiera si\u0119 na przesuni\u0119ciu punktu TCP (Tool Center Point) do \u015brodka kuli, podczas gdy druga metoda wykorzystuje matematyczny opis kuli oraz odpowiedni\u0105 transformacj\u0119 uk\u0142adu wsp\u00f3\u0142rz\u0119dnych. W dalszej cz\u0119\u015bci artyku\u0142u przedstawiono szczeg\u00f3\u0142y implementacji tych metod w oprogramowaniu astorinoIDE oraz spos\u00f3b generowania trajektorii robota.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Sterowanie ruchem po kuli na podstawie punktu TCP<\/h2>\n\n\n\n<p>Pierwsza metoda sterowania po kuli polega na przesuni\u0119ciu punktu TCP do \u015brodka kuli. Aby to osi\u0105gn\u0105\u0107, nale\u017cy najpierw oddali\u0107 uk\u0142ad narz\u0119dzia (TOOL) od ko\u0144c\u00f3wki robota (narz\u0119dzia lub flanszy), a nast\u0119pnie dojecha\u0107 robotem w taki spos\u00f3b, aby punkt TCP pokry\u0142 si\u0119 z centrum kuli. Po wykonaniu tego ruchu, rotacja robota wzgl\u0119dem osi X i Y uk\u0142adu TOOL zapewnia ruch robota po powierzchni kuli. Tego rodzaju sterowanie jest stosunkowo proste, ale mo\u017ce wymaga\u0107 du\u017cej precyzji w ustawieniach pocz\u0105tkowych uk\u0142adu.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Sterowanie na podstawie opisu matematycznego kuli<\/h2>\n\n\n\n<p><strong>Wielko\u015bci s\u0142u\u017c\u0105ce do opisu po\u0142o\u017cenia na powierzchni kuli<\/strong><\/p>\n\n\n\n<p>Alternatywnym podej\u015bciem do poruszania robotem po kuli jest wykorzystanie jej matematycznego opisu w przestrzeni tr\u00f3jwymiarowej. Mo\u017cna to zrobi\u0107 poprzez okre\u015blenie odpowiednich parametr\u00f3w kuli i obliczenie pozycji oraz orientacji punkt\u00f3w na jej powierzchni. B\u0119dziemy u\u017cywali oznacze\u0144:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>S(x<sub>0<\/sub>,y<sub>0<\/sub>,z<sub>0<\/sub>) \u2013 \u015brodek kuli,<\/li>\n\n\n\n<li>P(x,y,z) \u2013 dowolny punkt na powierzchni kuli,<\/li>\n\n\n\n<li>R<sub>k<\/sub> \u2013 promie\u0144 kuli<\/li>\n\n\n\n<li>\u03b8 \u2013 k\u0105t zenitalny<\/li>\n\n\n\n<li>\u03a6 \u2013 azymut<\/li>\n<\/ul>\n\n\n\n<p>K\u0105t zenitalny to k\u0105t mi\u0119dzy osi\u0105 globalnego pionu (osi\u0105 <em>Z<\/em>) a wektorem prowadz\u0105cym od \u015brodka kuli do punktu na jej powierzchni. K\u0105t ten jest dodatni, gdy mierzony jest od osi<em> Z<\/em> w kierunku promienia prowadz\u0105cego do danego punktu na kuli.<\/p>\n\n\n\n<p>Azymut to k\u0105t mi\u0119dzy osi\u0105 <em>X<\/em> a rzutem wektora prowadz\u0105cego od \u015brodka kuli do punktu na jej powierzchni na p\u0142aszczyzn\u0119 poziom\u0105 <em>XY<\/em>. K\u0105t ten jest dodatni, gdy mierzony jest od osi<em> X<\/em> w kierunku osi <em>Y<\/em>.<\/p>\n\n\n\n<p>Powy\u017csze definicje k\u0105t\u00f3w zosta\u0142y zobrazowane poni\u017cej (rys. 1).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"618\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image01.jpg\" alt=\"\" class=\"wp-image-23367\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 1. Ilustracja przedstawiaj\u0105ca k\u0105t zenitalny oraz k\u0105t azymutu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Na przyk\u0142adzie kuli ziemskiej:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>k\u0105t zenitalny \u2013 okre\u015bla szeroko\u015b\u0107 geograficzn\u0105,<\/li>\n\n\n\n<li>azymut \u2013 okre\u015bla d\u0142ugo\u015b\u0107 geograficzn\u0105.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Matematyczny opis po\u0142o\u017cenia i orientacji na kuli<\/strong><\/p>\n\n\n\n<p>Wykorzystuj\u0105c powy\u017csze oznaczenia mo\u017cna zapisa\u0107 wzory na wsp\u00f3\u0142rz\u0119dne po\u0142o\u017cenia na powierzchni kuli:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"319\" height=\"156\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor01.png\" alt=\"\" class=\"wp-image-23359\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wyznaczenie orientacji narz\u0119dzia nale\u017cy przeprowadzi\u0107 w taki spos\u00f3b, aby o\u015b <em>Z<\/em> uk\u0142adu TOOL by\u0142a skierowana prostopadle do powierzchni kuli, a jej przed\u0142u\u017cenie przechodzi\u0142o przez \u015brodek kuli.<\/p>\n\n\n\n<p>&nbsp;Na pocz\u0105tek nale\u017cy okre\u015bli\u0107 o\u015b <em>Z<\/em> narz\u0119dzia jako:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"207\" height=\"112\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor02.png\" alt=\"\" class=\"wp-image-23360\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Jest to znormalizowany wektor wskazuj\u0105cy w stron\u0119 \u015brodka kuli.<\/p>\n\n\n\n<p>Nast\u0119pnie konieczne b\u0119dzie wyznaczenie osi<em> X<\/em>. Zostanie ona okre\u015blona jako styczna do powierzchni kuli, wyznaczona na podstawie pochodnej po\u0142o\u017cenia wzgl\u0119dem k\u0105ta zenitalnego. Je\u015bli k\u0105t zenitalny jest sta\u0142y (co skutkuje zerow\u0105 pochodn\u0105), o\u015b <em>X<\/em> b\u0119dzie wyznaczona jako pochodna po\u0142o\u017cenia wzgl\u0119dem k\u0105ta azymutu. W celu obliczenia tej orientacji skorzystano ze wzor\u00f3w:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"318\" height=\"294\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor03.png\" alt=\"\" class=\"wp-image-23361\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Je\u015bli jednak pochodna jest bliska zeru, to przyjmujemy kierunek osi <em>X<\/em> jako:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"171\" height=\"101\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor04.png\" alt=\"\" class=\"wp-image-23362\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>O\u015b <em>Y <\/em>musi dope\u0142nia\u0107 utworzony uk\u0142ad prawoskr\u0119tny:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"270\" height=\"114\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor05.png\" alt=\"\" class=\"wp-image-23363\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W ostatnim kroku nale\u017cy jeszcze raz wyznaczy\u0107 kierunek osi X, aby zapewni\u0107 ortonormalno\u015b\u0107 uk\u0142adu wsp\u00f3\u0142rz\u0119dnych narz\u0119dzia.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"261\" height=\"81\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor06.png\" alt=\"\" class=\"wp-image-23364\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Maj\u0105c wektory:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"225\" height=\"66\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor07.png\" alt=\"\" class=\"wp-image-23365\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>budujemy macierz rotacji:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"334\" height=\"75\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor08.png\" alt=\"\" class=\"wp-image-23366\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Na jej podstawie mo\u017cemy wyznaczy\u0107 k\u0105ty Eulera (w konwencji <em>ZYZ<\/em>), kt\u00f3re jednoznacznie opisuj\u0105 orientacj\u0119 narz\u0119dzia w przestrzeni 3D.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Implementacja sterowania w programie astorinoIDE<\/h2>\n\n\n\n<p>Na pocz\u0105tek w\u0142\u0105czamy program astorinoIDE. Wybieramy rodzaj po\u0142\u0105czenia z listy rozwijanej (w przyk\u0142adzie wybrano po\u0142\u0105czenie USB) oraz klikamy przycisk <strong>Connect\/Disconnect <\/strong>(rys.2).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"762\" height=\"107\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image02.png\" alt=\"\" class=\"wp-image-23370\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 2. Widok g\u00f3rnego paska narz\u0119dzia astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wybieramy kierunek przesy\u0142anych danych z komputera do robota oraz klikamy <strong>SYNC<\/strong> (rys. 3).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"240\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image03.png\" alt=\"\" class=\"wp-image-23371\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 3. Widok okna synchronizacji po\u0142\u0105czenia mi\u0119dzy komputerem a robotem. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W kolejnym kroku otwieramy lub tworzymy nowy projekt z g\u00f3rnego paska. W tym celu klikamy <strong>Project <\/strong>i wybieramy odpowiedni\u0105 opcj\u0119 z listy rozwijanej (rys. 4).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"793\" height=\"242\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image04.png\" alt=\"\" class=\"wp-image-23372\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image04.png 793w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image04-768x234.png 768w\" sizes=\"auto, (max-width: 793px) 100vw, 793px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 4. Widok menu tworzenia lub otwierania projekt\u00f3w. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nast\u0119pnie otwieramy lub tworzymy nowy program. Z lewego drzewa folder\u00f3w mo\u017cemy wybra\u0107 istniej\u0105cy plik z zak\u0142adki <strong>Program Files<\/strong> lub utworzy\u0107 nowy program za pomoc\u0105 opcji w g\u00f3rnym pasku i zak\u0142adce <strong>File<\/strong>. Po wybraniu nowego programu (rys. 5) wy\u015bwietli si\u0119 okno, w kt\u00f3rym wpisujemy nazw\u0119 pliku i zatwierdzamy przyciskiem <strong>OK<\/strong> (rys. 6).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"241\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image05.png\" alt=\"\" class=\"wp-image-23373\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image05.png 796w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image05-768x233.png 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 5. Widok menu edycji programu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"291\" height=\"249\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image06.png\" alt=\"\" class=\"wp-image-23374\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 6. Widok okna tworzenia nowego programu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po po\u0142\u0105czeniu z robotem i stworzeniu w\u0142asnego programu mo\u017cna zacz\u0105\u0107 tworzy\u0107 scen\u0119 (uk\u0142ad robota z kul\u0105 w przestrzeni). W celu otwarcia symulacji nale\u017cy klikn\u0105\u0107 przycisk <strong>Visualization <\/strong>(rys. 7), oznaczony na pasku g\u0142\u00f3wnym programu symbolem sze\u015bcianu.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"98\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image07-840x98.png\" alt=\"\" class=\"wp-image-23376\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image07-840x98.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image07-768x90.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image07.png 951w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 7. Widok g\u00f3rnego paska narz\u0119dzia astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po klikni\u0119ciu powinno pojawi\u0107 si\u0119 okno z robotem (rys. 8).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1131\" height=\"731\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image08.png\" alt=\"\" class=\"wp-image-23377\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image08.png 1131w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image08-840x543.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image08-768x496.png 768w\" sizes=\"auto, (max-width: 1131px) 100vw, 1131px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 8. Widok okna symulacji robota. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W celu u\u0142atwienia sterowania robotem mo\u017cemy sprowadzi\u0107 go do pozycji domowej. Jest to procedura, kt\u00f3ra umo\u017cliwia szybkie przywr\u00f3cenie robota do wyj\u015bciowej pozycji, co u\u0142atwia dalsze programowanie i wykonywanie polece\u0144. W tym celu w terminalu w dolnej cz\u0119\u015bci programu astorinoIDE (rys. 9) wpisujemy komend\u0119 <strong>do home<\/strong> i zatwierdzamy wciskaj\u0105c <strong>Enter<\/strong> na klawiaturze.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1756\" height=\"178\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image09.png\" alt=\"\" class=\"wp-image-23379\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image09.png 1756w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image09-840x85.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image09-768x78.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image09-1536x156.png 1536w\" sizes=\"auto, (max-width: 1756px) 100vw, 1756px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 9. Widok okna terminala z wpisan\u0105 ju\u017c komend\u0105 <strong>do home<\/strong> (kliknij, aby powi\u0119kszy\u0107). \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po takim wywo\u0142aniu komendy terminal powinien odpowiedzie\u0107 tekstem <em>&#8222;DO motion Completed&#8221; <\/em>(rys.10)<em>, <\/em>a robot powinien znale\u017a\u0107 si\u0119 w pozycji domowej (rys. 11).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1757\" height=\"157\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image10-1.png\" alt=\"\" class=\"wp-image-23382\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image10-1.png 1757w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image10-1-840x75.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image10-1-768x69.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image10-1-1536x137.png 1536w\" sizes=\"auto, (max-width: 1757px) 100vw, 1757px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 10. Widok okna terminala po wykonaniu ruchu do pozycji domowej <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1133\" height=\"733\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image11-1.png\" alt=\"\" class=\"wp-image-23383\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image11-1.png 1133w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image11-1-840x543.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image11-1-768x497.png 768w\" sizes=\"auto, (max-width: 1133px) 100vw, 1133px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 11. Widok okna symulacji robota po wykonaniu ruchu do pozycji domowej. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>UWAGA! Nale\u017cy pami\u0119ta\u0107, \u017ce aby ruch zosta\u0142 wykonany, robot musi znajdowa\u0107 si\u0119 w trybie <strong>Repeat Mode<\/strong>. Zmieni\u0107 go mo\u017cna w g\u00f3rnym pasku narz\u0119dzi: <strong>Mode -&gt; Switch to Repeat<\/strong> (ikona robota) (rys. 12).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"146\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image12-1.png\" alt=\"\" class=\"wp-image-23384\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image12-1.png 796w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image12-1-768x141.png 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 12. Widok g\u00f3rnego paska narz\u0119dzia astorinoIDE przy zmianie trybu ruchu. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Gdy mamy ju\u017c otwarty projekt z naszym programem oraz okno symulacji, mo\u017cemy doda\u0107 przyk\u0142adow\u0105 kul\u0119, po kt\u00f3rej p\u00f3\u017aniej b\u0119dzie porusza\u0142 si\u0119 robot. W tym celu w oknie wizualizacji wybieramy opcj\u0119 <strong>Open Shape Generator <\/strong>(rys. 13).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1116\" height=\"85\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image13-1.png\" alt=\"\" class=\"wp-image-23385\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image13-1.png 1116w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image13-1-840x64.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image13-1-768x58.png 768w\" sizes=\"auto, (max-width: 1116px) 100vw, 1116px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 13. Widok g\u00f3rnego paska okna symulacji robota. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Otworzy nam si\u0119 po prawej stronie symulacji okno tworzenia wybranego kszta\u0142tu w przestrzeni. W celu dodania kuli wybieramy zak\u0142adk\u0119 <strong>Sphere <\/strong>(rys. 14). Nast\u0119pnie mo\u017cemy wprowadzi\u0107 jej parametry: nazw\u0119, promie\u0144, po\u0142o\u017cenie w trzech osiach uk\u0142adu globalnego, kolor oraz rodzaj obiektu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Obstacle<\/strong> \u2013 obiekty tego typu s\u0105 statycznymi obiektami sceny,<\/li>\n\n\n\n<li><strong>Work<\/strong> \u2013 obiekty tego typu mog\u0105 by\u0107 przenoszone przez robota,<\/li>\n\n\n\n<li><strong>Tool<\/strong> \u2013 obiekty tego typu zawsze poruszaj\u0105 si\u0119 zgodnie z ki\u015bci\u0105 robota.&nbsp;<\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"281\" height=\"331\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image14-1.png\" alt=\"\" class=\"wp-image-23386\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 14. Widok okna generatora kszta\u0142t\u00f3w w programie astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Gdy wszystkie parametry zosta\u0142y ju\u017c ustawione, nale\u017cy klikn\u0105\u0107 przycisk <strong>Add.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ruch po kuli przez rotacj\u0119 wok\u00f3\u0142 oddalonego punktu TCP<\/h2>\n\n\n\n<p>Pierwszym sposobem na ruch po kuli jest oddalenie punktu TCP na odleg\u0142o\u015b\u0107 r\u00f3wn\u0105 jej promieniowi. W tym celu otwieramy okno <strong>Robot Manager<\/strong> (rys. 15).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"795\" height=\"102\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image15-2.png\" alt=\"\" class=\"wp-image-23390\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image15-2.png 795w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image15-2-768x99.png 768w\" sizes=\"auto, (max-width: 795px) 100vw, 795px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 15. Widok g\u00f3rnego paska narz\u0119dzia astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po pojawieniu si\u0119 okna nale\u017cy wej\u015b\u0107 w zak\u0142adk\u0119 <strong>TOOL<\/strong> z prawej strony (rys. 16) i jako parametr <strong><em>TOOL Z<\/em><\/strong><em>, <\/em>wpisa\u0107 warto\u015b\u0107 wcze\u015bniej ustawionego promienia kuli.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"619\" height=\"516\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image16.png\" alt=\"\" class=\"wp-image-23391\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 16. Widok zak\u0142adki TOOL okna Robot Manager. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Klikamy <strong>Upload Tool <\/strong>oraz zatwierdzamy zmian\u0119 narz\u0119dzia po wy\u015bwietleniu ostrze\u017cenia.<\/p>\n\n\n\n<p>W kolejnym kroku doje\u017cd\u017camy do kuli, tak by punkt TCP pokry\u0142 si\u0119 z \u015brodkiem kuli, a orientacja narz\u0119dzia by\u0142a prostopad\u0142a do powierzchni kuli. Wykorzysta\u0107 do tego mo\u017cemy zak\u0142adk\u0119 <strong>JOG<\/strong> w oknie <strong>Robot Manager<\/strong> (rys. 17)<em>. <\/em>Wybieramy uk\u0142ad, w kt\u00f3rym chcemy poruszy\u0107 robotem z listy rozwijanej (<strong>Jogging -&gt; Mode<\/strong>) i klikaj\u0105c odpowiednie przyciski doje\u017cd\u017camy nim do wcze\u015bniej wspomnianej pozycji (rys.18). Jest to mo\u017cliwe dopiero po zmianie trybu pracy na <strong>Teach Mode<\/strong><em>.<\/em><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"621\" height=\"515\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image17.png\" alt=\"\" class=\"wp-image-23392\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 17. Widok zak\u0142adki JOG okna Robot Manager. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"632\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image18.png\" alt=\"\" class=\"wp-image-23394\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image18.png 770w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image18-768x630.png 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 18. Widok symulacji robota po doje\u017adzie do powierzchni kuli. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nast\u0119pnie mo\u017cemy ju\u017c porusza\u0107 po kuli. W tym celu wybierany w zak\u0142adce <strong>JOG<\/strong> ruch robotem w uk\u0142adzie <strong>TOOL<\/strong> i wykonujemy rotacj\u0119 wok\u00f3\u0142 osi X oraz Y (rotacja wok\u00f3\u0142 osi Z nie ma sensu, poniewa\u017c wcze\u015bniej skierowali\u015bmy j\u0105 prostopadle do powierzchni kuli). Poni\u017cej przedstawiono kilka przyk\u0142adowych pozycji robota.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"806\" height=\"637\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image19.png\" alt=\"\" class=\"wp-image-23395\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image19.png 806w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image19-768x607.png 768w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 19. Przyk\u0142adowa pozycja robota nr 1. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"610\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image20-840x610.png\" alt=\"\" class=\"wp-image-23396\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image20-840x610.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image20-768x558.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image20.png 870w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 20. Przyk\u0142adowa pozycja robota nr 2. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"811\" height=\"628\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image21.png\" alt=\"\" class=\"wp-image-23397\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image21.png 811w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image21-768x595.png 768w\" sizes=\"auto, (max-width: 811px) 100vw, 811px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 21. Przyk\u0142adowa pozycja robota nr 3. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ruch po kuli przez wykorzystanie jej matematycznego opisu<\/h2>\n\n\n\n<p>Drug\u0105 metod\u0105 na poruszaniem robotem po kuli jest wygenerowanie punkt\u00f3w (po\u0142o\u017cenie i orientacja), zgodnie z opisem zamieszczonym we wcze\u015bniejszej cz\u0119\u015bci artyku\u0142u. Napisano do tego celu program w j\u0119zyku Python, kt\u00f3ry generuje punkty na powierzchni kuli wraz z orientacj\u0105 uk\u0142adu <strong>TOOL<\/strong><em>.<\/em>.<\/p>\n\n\n\n<p>Uwaga! Je\u015bli po\u0142o\u017cenie lub orientacja uk\u0142adu <strong>TOOL<\/strong> zosta\u0142y zmienione, tak jak chocia\u017cby w poprzednim paragrafie, nale\u017cy przywr\u00f3ci\u0107 uk\u0142ad do ustawie\u0144 podstawowych (zeruj\u0105c ka\u017cd\u0105 ze sk\u0142adowych po\u0142o\u017cenia i orientacji \u2013 rys. 22).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"618\" height=\"511\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image22.png\" alt=\"\" class=\"wp-image-23399\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 22. Widok zak\u0142adki Tool okna Robot Manager. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Uniwersalno\u015b\u0107 opracowanego kodu pozwala na wyznaczanie po\u0142o\u017cenia oraz orientacji uk\u0142adu narz\u0119dzia w przestrzeni kulistej, niezale\u017cnie od po\u0142o\u017cenia kuli oraz jej promienia. Dzi\u0119ki temu mo\u017cliwe jest obliczenie wsp\u00f3\u0142rz\u0119dnych punkt\u00f3w na powierzchni kuli w r\u00f3\u017cnych konfiguracjach.<\/p>\n\n\n\n<p>Warto jednak zauwa\u017cy\u0107, \u017ce program nie uwzgl\u0119dnia rzeczywistych ogranicze\u0144 robota, takich jak fizyczne mo\u017cliwo\u015bci jego ruchu, zasi\u0119g czy przechy\u0142y. W praktyce oznacza to, \u017ce wskazane przez program punkty mog\u0105 nie zawsze by\u0107 osi\u0105galne przez robota w rzeczywistych warunkach. Program dostarcza jedynie wynik\u00f3w matematycznych, kt\u00f3re odnosz\u0105 si\u0119 do idealnego modelu matematycznego kuli, nie bior\u0105c pod uwag\u0119 fizycznych ogranicze\u0144 robota, takich jak kinematyka, zasi\u0119g, czy ograniczenia mechaniczne.<\/p>\n\n\n\n<p>Istnieje zatem potrzeba dalszej weryfikacji wynik\u00f3w w kontek\u015bcie realnych trajektorii robota dla konkretnego zastosowania. W artykule skupiono si\u0119 jednak na implementacji samego ruchu, a nie na konkretnych zastosowaniach.<\/p>\n\n\n\n<p>Aby u\u0142atwi\u0107 implementacj\u0119 kodu oraz unikn\u0105\u0107 nadmiaru z\u0142o\u017conych nazw, w kodzie zastosowane zosta\u0142y nast\u0119puj\u0105ce oznaczenia:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>k\u0105t zenitalny: \u03b8 = u <\/li>\n\n\n\n<li>azymut: \u03a6 = v<\/li>\n<\/ul>\n\n\n\n<p>Poni\u017cej przedstawiony zosta\u0142 kod w j\u0119zyku Python, kt\u00f3ry pozwala na generowanie wybranej liczby punkt\u00f3w na powierzchni kuli o dowolnych &#8211; wybranych wcze\u015bniej &#8211; parametrach.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>import numpy as np\nfrom scipy.spatial.transform import Rotation as R\n\n# Parametry kuli\nx0, y0, z0 = 0.0, 500.0, 250.0  # \u015brodek kuli\nR_kuli = 50.0  # promie\u0144\nN = 20  # liczba punkt\u00f3w\n\nfor i in range(N):\n    u = i * np.pi \/ (N - 1)  # k\u0105t zenitalny\n    v = np.pi  # azymut\n\n    # Pozycja na powierzchni kuli\n    x = x0 + R_kuli * np.sin(u) * np.cos(v)\n    y = y0 + R_kuli * np.sin(u) * np.sin(v)\n    z = z0 + R_kuli * np.cos(u)\n    position = np.array(&#091;x, y, z])\n    center = np.array(&#091;x0, y0, z0])\n\n    # O\u015b Z narz\u0119dzia (do \u015brodka kuli)\n    Z_tool = center - position\n    Z_tool \/= np.linalg.norm(Z_tool)\n\n    # Dwa wektory styczne do powierzchni (pochodne po u i v)\n    dP_du = np.array(&#091;\n        R_kuli * np.cos(u) * np.cos(v),\n        R_kuli * np.cos(u) * np.sin(v),\n        -R_kuli * np.sin(u)\n    ])\n    dP_dv = np.array(&#091;\n        -R_kuli * np.sin(u) * np.sin(v),\n        R_kuli * np.sin(u) * np.cos(v),\n        0.0\n    ])\n\n    # Wybierz jeden z wektor\u00f3w stycznych (np. dP_dv)\n    tangent = dP_dv\n    if np.linalg.norm(tangent) &lt; 1e-6:  # zabezpieczenie przed zerowym wektorem\n        tangent = dP_du\n    tangent \/= np.linalg.norm(tangent)\n\n    # Budowa uk\u0142adu wsp\u00f3\u0142rz\u0119dnych\n    X_tool = tangent\n    Y_tool = np.cross(Z_tool, X_tool)\n    Y_tool \/= np.linalg.norm(Y_tool)\n    X_tool = np.cross(Y_tool, Z_tool)\n    X_tool \/= np.linalg.norm(X_tool)\n\n    # Macierz rotacji i konwersja do k\u0105t\u00f3w Eulera\n    R_matrix = np.column_stack((X_tool, Y_tool, Z_tool))\n    rot = R.from_matrix(R_matrix)\n    euler_deg = rot.as_euler('zyz', degrees=True)\n\n    # Format wyj\u015bcia: x,y,z,roll,pitch,yaw\n    print(f\"{x:.3f},{y:.3f},{z:.3f},{euler_deg&#091;2]:.3f},{euler_deg&#091;1]:.3f},{euler_deg&#091;0]:.3f}\")\n<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Program s\u0142u\u017cy do wyznaczenia pozycji i orientacji zestawu punkt\u00f3w znajduj\u0105cych si\u0119 na powierzchni kuli. Na pocz\u0105tku definiowane s\u0105 podstawowe parametry kuli: jej \u015brodek w przestrzeni tr\u00f3jwymiarowej, promie\u0144 oraz liczba punkt\u00f3w, kt\u00f3re maj\u0105 zosta\u0107 rozmieszczone na powierzchni.<\/p>\n\n\n\n<p>Nast\u0119pnie, w p\u0119tli, dla ka\u017cdego z tych punkt\u00f3w wyliczana jest jego dok\u0142adna pozycja na kuli, przy czym zmieniany jest tylko k\u0105t zenitalny, a azymut pozostaje sta\u0142y. Dzi\u0119ki temu punkty s\u0105 rozmieszczone wzd\u0142u\u017c jednego po\u0142udnika. Dla ka\u017cdego punktu na powierzchni kuli wyznaczany jest wektor skierowany od tego punktu do \u015brodka kuli. Ten wektor okre\u015bla kierunek, w kt\u00f3rym \u201epatrzy\u201d narz\u0119dzie lub uk\u0142ad wsp\u00f3\u0142rz\u0119dnych przypisany do punktu &#8211; jest to o\u015b Z lokalnego uk\u0142adu.<\/p>\n\n\n\n<p>Aby okre\u015bli\u0107 pe\u0142n\u0105 orientacj\u0119 w przestrzeni, potrzebne s\u0105 jeszcze osie X i Y. Do tego wykorzystywane s\u0105 dwa wektory styczne do powierzchni kuli, obliczane jako pochodne pozycji punktu wzgl\u0119dem k\u0105t\u00f3w sferycznych. Jeden z tych wektor\u00f3w jest wybierany jako podstawa do okre\u015blenia osi X, a je\u015bli jego d\u0142ugo\u015b\u0107 by\u0142aby zbyt ma\u0142a, wybierany jest drugi. Wektor ten jest nast\u0119pnie normalizowany, czyli przeliczany tak, aby mia\u0142 d\u0142ugo\u015b\u0107 r\u00f3wn\u0105 1.<\/p>\n\n\n\n<p>Dalej budowany jest ortogonalny uk\u0142ad wsp\u00f3\u0142rz\u0119dnych. O\u015b Y wyznaczana jest jako wektor prostopad\u0142y do osi Z i wybranego wektora stycznego, a nast\u0119pnie ponownie wyznaczana jest o\u015b X, by zagwarantowa\u0107, \u017ce wszystkie trzy osie tworz\u0105 sp\u00f3jny, prawid\u0142owy uk\u0142ad. Z tych trzech wektor\u00f3w tworzona jest macierz rotacji, kt\u00f3ra opisuje, jak lokalny uk\u0142ad wsp\u00f3\u0142rz\u0119dnych punktu jest ustawiony wzgl\u0119dem uk\u0142adu globalnego. Na koniec z tej macierzy wyci\u0105gane s\u0105 k\u0105ty Eulera, kt\u00f3re opisuj\u0105 orientacj\u0119 punktu jako sekwencj\u0119 obrot\u00f3w wok\u00f3\u0142 osi. Wypisywana jest pozycja punktu oraz te trzy k\u0105ty, co razem stanowi pe\u0142n\u0105 informacj\u0119 o po\u0142o\u017ceniu i ustawieniu w przestrzeni.<\/p>\n\n\n\n<p>Aby zweryfikowa\u0107 poprawno\u015b\u0107 generowanych punkt\u00f3w, opracowano prosty program w astorinoIDE, kt\u00f3ry wykorzystuje trzy z wcze\u015bniej obliczonych punkt\u00f3w na powierzchni kuli. Program ten wykonuje ruch robota po \u0142uku, w kt\u00f3rym pierwszy punkt pe\u0142ni rol\u0119 punktu pocz\u0105tkowego, drugi &#8211; punktu pomocniczego, a trzeci &#8211; punktu ko\u0144cowego. Dzi\u0119ki tej metodzie mo\u017cna wizualnie sprawdzi\u0107, czy robot prawid\u0142owo pod\u0105\u017ca wyznaczon\u0105 trajektori\u0105. Poni\u017cej przedstawiono kod programu realizuj\u0105cego ten ruch:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>.PROGRAM KULA\n  HOME\n  lappro P1, 100\n  lmove P1\n  c1move P2\n  c2move P3\n  ldepart 100\n.END<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Do przeniesienia obliczonych punkt\u00f3w do programu w astorinoIDE wystarczy skopiowa\u0107 wybrane punkty, kt\u00f3re zosta\u0142y zwr\u00f3cone w wyniku kompilacji programu w Pythonie. Po wygenerowaniu punkt\u00f3w, nale\u017cy je r\u0119cznie wprowadzi\u0107 do \u015brodowiska robota, co umo\u017cliwia ich dalsze wykorzystanie w kolejnych etapach aplikacji. Poni\u017cej przedstawiono przyk\u0142adowe wyniki uzyskane po kompilacji kodu (rys. 23).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1434\" height=\"454\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image23.png\" alt=\"\" class=\"wp-image-23405\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image23.png 1434w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image23-840x266.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image23-768x243.png 768w\" sizes=\"auto, (max-width: 1434px) 100vw, 1434px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 23. Przyk\u0142adowy wynik kompilacji programu w j\u0119zyku Python dla parametr\u00f3w z przyk\u0142adowego kodu <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Warto tu zwr\u00f3ci\u0107 uwag\u0119 na ostrze\u017cenie, kt\u00f3re informuje, \u017ce wykryto tzw. &#8222;gimbal lock&#8221; przy konwersji rotacji na k\u0105ty Eulera w uk\u0142adzie 'zyz&#8217;, co oznacza, \u017ce jedna z osi obrotu pokrywa si\u0119 z inn\u0105, przez co jeden z k\u0105t\u00f3w (trzeci) nie mo\u017ce by\u0107 jednoznacznie okre\u015blony i zostaje ustawiony na zero.<\/p>\n\n\n\n<p>Je\u015bli chcemy przenie\u015b\u0107 pierwszy punkt do astorinoIDE, wystarczy wykorzysta\u0107 w terminalu (rys. 24) polecenie <strong>POINT<\/strong> oraz <strong>TRANS<\/strong>.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1762\" height=\"173\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image24.png\" alt=\"\" class=\"wp-image-23406\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image24.png 1762w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image24-840x82.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image24-768x75.png 768w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image24-1536x151.png 1536w\" sizes=\"auto, (max-width: 1762px) 100vw, 1762px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 24. Widok okna terminala z instrukcj\u0105 do tworzenia nowego punktu <em>(kliknij, aby powi\u0119kszy\u0107)<\/em>. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po zatwierdzeniu klawiszem <strong>Enter<\/strong> punkt zostanie zapisany. Je\u015bli chcieliby\u015bmy sprawdzi\u0107, czy rzeczywi\u015bcie tak si\u0119 sta\u0142o, nale\u017cy wej\u015b\u0107 w zak\u0142adk\u0119 <strong>Points -&gt; Transformation<\/strong>. Wy\u015bwietli si\u0119 w\u00f3wczas okno z zapisanymi punktami (rys. 25), w\u015br\u00f3d kt\u00f3rych powinni\u015bmy dostrzec nasz zapisany punkt, tak jak poni\u017cej:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"993\" height=\"217\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image25.png\" alt=\"\" class=\"wp-image-23407\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image25.png 993w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image25-840x184.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image25-768x168.png 768w\" sizes=\"auto, (max-width: 993px) 100vw, 993px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 25. Widok okna punkt\u00f3w kartezja\u0144skich w programie astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Proces ten nale\u017cy powt\u00f3rzy\u0107 dla dw\u00f3ch pozosta\u0142ych punkt\u00f3w. Wa\u017cne jest, aby ka\u017cdy z tych punkt\u00f3w zosta\u0142 zadeklarowany pod innym numerem porz\u0105dkowym, np. p2, p3, itd., aby zachowa\u0107 sp\u00f3jno\u015b\u0107 w dalszej cz\u0119\u015bci programu i umo\u017cliwi\u0107 prawid\u0142owe przypisanie do odpowiednich pozycji w przestrzeni robota.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"997\" height=\"217\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image26.png\" alt=\"\" class=\"wp-image-23408\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image26.png 997w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image26-840x183.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image26-768x167.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><figcaption class=\"wp-element-caption\"><em>Rys.26. Widok okna punkt\u00f3w kartezja\u0144skich w programie astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W celu przetestowania programu nale\u017cy rozpocz\u0105\u0107 cykl, klikaj\u0105c przycisk <strong>Cycle Start.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"796\" height=\"110\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image27.png\" alt=\"\" class=\"wp-image-23409\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image27.png 796w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image27-768x106.png 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 27. Widok g\u00f3rnego paska narz\u0119dzia astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Je\u015bli chcemy uruchomi\u0107 program od pocz\u0105tku lub od jakiego\u015b konkretnego kroku (kt\u00f3ry nie jest pierwszym), nale\u017cy wcisn\u0105\u0107 kolejno <strong>Pause<\/strong> oraz <strong>Cycle Stop<\/strong>. Nast\u0119pnie z listy rozwijanej <strong>Step<\/strong> nale\u017cy wybra\u0107 linijk\u0119 kodu, od kt\u00f3rej chcemy zacz\u0105\u0107 wykonywanie ruchu. Rozpocz\u0119cie ruchu zaczynamy klikni\u0119ciem przycisku <strong>Pause<\/strong>, a nast\u0119pnie przyciskiem <strong>Cycle Start.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"140\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image28.png\" alt=\"\" class=\"wp-image-23410\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image28.png 799w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image28-768x135.png 768w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 28. Widok g\u00f3rnego paska narz\u0119dzia astorinoIDE. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Wynik programu przedstawiono na rysunku poni\u017cej:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"629\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image29.png\" alt=\"\" class=\"wp-image-23411\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image29.png 970w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image29-840x545.png 840w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image29-768x498.png 768w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 29. Widok wywo\u0142ania przyk\u0142adowego programu realizuj\u0105cego ruch po kuli wraz z zaznaczon\u0105 trajektori\u0105 nr 1. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Z analizy wynika, \u017ce warto\u015b\u0107 azymutu pozostaje sta\u0142a (rys. 29), podczas gdy k\u0105t zenitalny zmienia si\u0119 w zakresie od 0<img loading=\"lazy\" decoding=\"async\" width=\"10\" height=\"22\" src=\"blob:https:\/\/www.astor.com.pl\/4c2aa7f3-df47-4606-aac0-38b8ca648506\">do oko\u0142o 90<img loading=\"lazy\" decoding=\"async\" width=\"6\" height=\"22\" src=\"blob:https:\/\/www.astor.com.pl\/5aeed18b-2b1e-4782-9b08-8092080b4396\">, przy czym ostatni punkt charakteryzuje si\u0119 w\u0142a\u015bnie takim k\u0105tem. Ruch odbywa si\u0119 wy\u0142\u0105cznie w p\u0142aszczy\u017anie <em>XZ <\/em>(dla y = const. = y<sub>0<\/sub>).<\/p>\n\n\n\n<p>Program przetestowano r\u00f3wnie\u017c dla innych warto\u015bci k\u0105ta zenitalnego i azymutu. Tym razem przyj\u0119to nast\u0119puj\u0105ce warto\u015bci konta zenitalnego \u03b8 i azymutu \u03a6:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"212\" height=\"167\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor09.png\" alt=\"\" class=\"wp-image-23417\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Warto\u015b\u0107 azymutu b\u0119dzie zmienia\u0142a si\u0119 w p\u0119tli zgodnie z nast\u0119puj\u0105cym wzorem:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"248\" height=\"77\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/wzor10.png\" alt=\"\" class=\"wp-image-23418\"\/><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Odpowiadaj\u0105ca temu linijka kodu w Pythonie to:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>v = -np.pi \/ 2 + i * (np.pi \/ 2) \/ (N - 1))<\/code><\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"740\" height=\"623\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image30.png\" alt=\"\" class=\"wp-image-23413\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 30. Widok wywo\u0142ania przyk\u0142adowego programu realizuj\u0105cego ruch po kuli wraz z zaznaczon\u0105 trajektori\u0105 nr 2. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W tym przypadku (rys. 30) k\u0105t zenitalny pozostaje sta\u0142y, co powoduje, \u017ce ruch odbywa si\u0119 w p\u0142aszczy\u017anie XY (dla z = const. = z<sub>0<\/sub>).<\/p>\n\n\n\n<p>Poni\u017cej przedstawiono dwie inne wygenerowane trajektorie:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"624\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image31.png\" alt=\"\" class=\"wp-image-23415\" srcset=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image31.png 815w, https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image31-768x588.png 768w\" sizes=\"auto, (max-width: 815px) 100vw, 815px\" \/><figcaption class=\"wp-element-caption\"><em>Rys. 31. Widok wywo\u0142ania przyk\u0142adowego programu realizuj\u0105cego ruch po kuli wraz z zaznaczon\u0105 trajektori\u0105 nr 3. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"731\" height=\"626\" src=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/image32.png\" alt=\"\" class=\"wp-image-23416\"\/><figcaption class=\"wp-element-caption\"><em>Rys. 32. Widok wywo\u0142ania przyk\u0142adowego programu realizuj\u0105cego ruch po kuli wraz z zaznaczon\u0105 trajektori\u0105 nr 4. \u0179r\u00f3d\u0142o: ASTOR<\/em><\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W tym artykule zaprezentowano dwie metody sterowania robotem Astorino po powierzchni kuli, z kt\u00f3rych ka\u017cda ma swoje zalety i ograniczenia. Pierwsza metoda jest prostsza i bardziej intuicyjna, opiera si\u0119 na prostych obliczeniach geometrycznych. Druga metoda, cho\u0107 bardziej skomplikowana, pozwala na wi\u0119ksz\u0105 elastyczno\u015b\u0107 i precyzj\u0119, poniewa\u017c umo\u017cliwia generowanie punkt\u00f3w i orientacji narz\u0119dzia na podstawie matematycznego opisu kuli.<\/p>\n\n\n\n<p>Praktyczna realizacja sterowania w oprogramowaniu astorinoIDE pozwala na symulacj\u0119 ruch\u00f3w robota, co jest niezb\u0119dne do testowania poprawno\u015bci trajektorii przed ich rzeczywistym wykonaniem. Zar\u00f3wno metody sterowania, jak i implementacja w astorinoIDE stanowi\u0105 solidn\u0105 podstaw\u0119 do dalszego rozwoju technologii sterowania robotem Astorino po powierzchniach sferycznych. W przysz\u0142o\u015bci mo\u017cna je dostosowa\u0107 do bardziej zaawansowanych aplikacji, wymagaj\u0105cych precyzyjnego ruchu po bardziej z\u0142o\u017conych trajektoriach, czy nawet w przestrzeniach o bardziej z\u0142o\u017conych kszta\u0142tach.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"dowiesz-sie\">\n<p>Autor artyku\u0142u:<\/p><\/br>\n<h2 class=\"wp-block-heading\"><strong>Daniel Michalak<\/strong><\/h2>\n<p>Praktykant ASTOR<\/p>\n<p>Student III roku kierunku Automatyka i robotyka na Politechnice Pozna\u0144skiej<\/p>\n<\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n            <div id=\"mailerlite-form_9\" data-temp-id=\"69d11fd123396\">\n                <div class=\"mailerlite-form\">\n                    <form action=\"\" method=\"post\" novalidate>\n                                                    <div class=\"mailerlite-form-title\"><h3>Newsletter Poradnika Automatyka<\/h3><\/div>\n                                                <div class=\"mailerlite-form-description\"><p>Czytaj trendy i inspiracje, podstawy automatyki, automatyk\u0119 w praktyce<\/p>\n<\/div>\n                        <div class=\"mailerlite-form-inputs\">\n                                                                                            <div class=\"mailerlite-form-field\">\n                                    <label for=\"mailerlite-9-field-email\">Email<\/label>\n                                    <input id=\"mailerlite-9-field-email\"\n                                           type=\"email\" required=\"required\"                                            name=\"form_fields[email]\"\n                                           placeholder=\"Email\"\/>\n                                <\/div>\n                                                        <div class=\"mailerlite-form-loader\">Please wait...<\/div>\n                            <div class=\"mailerlite-subscribe-button-container\">\n                                <button class=\"mailerlite-subscribe-submit\" type=\"submit\">\n                                    Zapisz si\u0119                                <\/button>\n                            <\/div>\n                            <input type=\"hidden\" name=\"form_id\" value=\"9\"\/>\n                            <input type=\"hidden\" name=\"action\" value=\"mailerlite_subscribe_form\"\/>\n                            <input type=\"hidden\" name=\"ml_nonce\" value=\"e6abbb9af0\"\/>\n                        <\/div>\n                        <div class=\"mailerlite-form-response\">\n                                                            <h4><p>Dzi\u0119kujemy za zapis do newslettera!<\/p>\n<\/h4>\n                                                    <\/div>\n                    <\/form>\n                <\/div>\n            <\/div>\n        <script type=\"text\/javascript\" src='https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/plugins\/official-mailerlite-sign-up-forms\/assets\/js\/localization\/validation-messages.js'><\/script>\n         <script type=\"text\/javascript\"> var selectedLanguage = \"pl\"; var validationMessages = messages[\"en\"]; if(selectedLanguage) { validationMessages = messages[selectedLanguage]; } window.addEventListener(\"load\", function () { var form_container = document.querySelector(`#mailerlite-form_9[data-temp-id=\"69d11fd123396\"] form`); let submitButton = form_container.querySelector('.mailerlite-subscribe-submit'); submitButton.disabled = true; fetch('https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-admin\/admin-ajax.php', { method: 'POST', headers:{ 'Content-Type': 'application\/x-www-form-urlencoded', }, body: new URLSearchParams({ \"action\" : \"ml_create_nonce\", \"ml_nonce\" : form_container.querySelector(\"input[name='ml_nonce']\").value }) }) .then((response) => response.json()) .then((json) => { if(json.success) { form_container.querySelector(\"input[name='ml_nonce']\").value = json.data.ml_nonce; submitButton.disabled = false; } }) .catch((error) => { console.error('Error:', error); }); form_container.addEventListener('submit', (e) => { e.preventDefault(); let data = new URLSearchParams(new FormData(form_container)).toString(); let validationError = false; document.querySelectorAll('.mailerlite-form-error').forEach(el => el.remove()); Array.from(form_container.elements).forEach((input) => { if(input.type !== 'hidden') { if(input.required) { if(input.value == '') { validationError = true; let error = document.createElement(\"span\"); error.className = 'mailerlite-form-error'; error.textContent = validationMessages.required; input.after(error); return false; } } if((input.type == \"email\") && (!validateEmail(input.value))) { validationError = true; let error = document.createElement(\"span\"); error.className = 'mailerlite-form-error'; error.textContent = validationMessages.email; input.after(error); return false; } } }); if(validationError) { return false; } fade.out(form_container.querySelector('.mailerlite-subscribe-button-container'), () => { fade.in(form_container.querySelector('.mailerlite-form-loader')); }); fetch('https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-admin\/admin-ajax.php', { method: 'POST', headers:{ 'Content-Type': 'application\/x-www-form-urlencoded', }, body: data }) .then((response) => { fade.out(form_container.querySelector('.mailerlite-form-inputs'), () => { fade.in(form_container.querySelector('.mailerlite-form-response')); }); }) .catch((error) => { console.error('Error:', error); }); }); }, false); var fade = { out: function(el, fn = false) { var fadeOutEffect = setInterval(function () { if (!el.style.opacity) { el.style.opacity = 1; } if (el.style.opacity > 0) { el.style.opacity -= 0.1; } else { el.style.display = 'none'; clearInterval(fadeOutEffect); } }, 50); if( typeof (fn) == 'function') { fn(); } }, in: function(el) { var fadeInEffect = setInterval(function () { if (!el.style.opacity) { el.style.opacity = 0; } if (el.style.opacity < 1) { el.style.opacity = Number(el.style.opacity) + 0.1; } else { el.style.display = 'block'; clearInterval(fadeInEffect); } }, 50); } }; function validateEmail(email){ if(email.match( \/^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/ )) { return true; } return false; } <\/script> \n","protected":false},"excerpt":{"rendered":"<p>Z tego artyku\u0142u dowiesz si\u0119: jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 oprogramowania astorinoIDE, jak wykorzysta\u0107 matematyczny opis kuli do generowania punkt\u00f3w na jej powierzchni, jak stworzy\u0107 program w Pythonie, kt\u00f3ry automatycznie oblicza po\u0142o\u017cenie i orientacj\u0119 robota na kuli, jak zaimplementowa\u0107 sterowanie ruchem robota po powierzchni kuli w astorinoIDE. Dzi\u0119ki temu poradnikowi [&hellip;]<\/p>\n","protected":false},"author":83,"featured_media":23422,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[234],"tags":[237,293],"class_list":["post-23335","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automatyka-w-praktyce","tag-astorino","tag-kawasaki-robotics"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Sterowanie robotem Astorino po kuli | Poradnik Automatyka<\/title>\r\n<meta name=\"description\" content=\"Jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 program w rzeczywistych warunkach?\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\" \/>\r\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Sterowanie robotem Astorino po kuli | Poradnik Automatyka\" \/>\r\n<meta property=\"og:description\" content=\"Jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 program w rzeczywistych warunkach?\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Poradnik Automatyka\" \/>\r\n<meta property=\"article:published_time\" content=\"2025-07-25T16:49:01+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2025-09-24T08:14:03+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"970\" \/>\r\n\t<meta property=\"og:image:height\" content=\"438\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Kamila Piechocka\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kamila Piechocka\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"26 minut\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\"},\"author\":{\"name\":\"Kamila Piechocka\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/bb85922f1cba91e4049649720381de0c\"},\"headline\":\"Sterowanie robotem Astorino po kuli\",\"datePublished\":\"2025-07-25T16:49:01+00:00\",\"dateModified\":\"2025-09-24T08:14:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\"},\"wordCount\":3228,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg\",\"keywords\":[\"Astorino\",\"kawasaki robotics\"],\"articleSection\":[\"Automatyka w praktyce\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\",\"name\":\"Sterowanie robotem Astorino po kuli | Poradnik Automatyka\",\"isPartOf\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg\",\"datePublished\":\"2025-07-25T16:49:01+00:00\",\"dateModified\":\"2025-09-24T08:14:03+00:00\",\"description\":\"Jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 program w rzeczywistych warunkach?\",\"breadcrumb\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg\",\"width\":970,\"height\":438},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Automatyka w praktyce\",\"item\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sterowanie robotem Astorino po kuli\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/\",\"name\":\"Poradnik Automatyka\",\"description\":\"Poradnik Automatyka to przydatne kursy, u\u017cyteczne artyku\u0142y i merytoryczne webinary dla ka\u017cdego automatyka i elektryka.\",\"publisher\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization\",\"name\":\"ASTOR\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png\",\"width\":3322,\"height\":1078,\"caption\":\"ASTOR\"},\"image\":{\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/bb85922f1cba91e4049649720381de0c\",\"name\":\"Kamila Piechocka\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/kamila-jaworowska-n-301x301.png\",\"contentUrl\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/kamila-jaworowska-n-301x301.png\",\"caption\":\"Kamila Piechocka\"},\"description\":\"In\u017cynier ds. system\u00f3w zrobotyzowanych w firmie ASTOR.\",\"url\":\"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/kamilaj\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sterowanie robotem Astorino po kuli | Poradnik Automatyka","description":"Jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 program w rzeczywistych warunkach?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/","og_locale":"pl_PL","og_type":"article","og_title":"Sterowanie robotem Astorino po kuli | Poradnik Automatyka","og_description":"Jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 program w rzeczywistych warunkach?","og_url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/","og_site_name":"Poradnik Automatyka","article_published_time":"2025-07-25T16:49:01+00:00","article_modified_time":"2025-09-24T08:14:03+00:00","og_image":[{"width":970,"height":438,"url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg","type":"image\/jpeg"}],"author":"Kamila Piechocka","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Kamila Piechocka","Szacowany czas czytania":"26 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#article","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/"},"author":{"name":"Kamila Piechocka","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/bb85922f1cba91e4049649720381de0c"},"headline":"Sterowanie robotem Astorino po kuli","datePublished":"2025-07-25T16:49:01+00:00","dateModified":"2025-09-24T08:14:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/"},"wordCount":3228,"commentCount":0,"publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg","keywords":["Astorino","kawasaki robotics"],"articleSection":["Automatyka w praktyce"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/","name":"Sterowanie robotem Astorino po kuli | Poradnik Automatyka","isPartOf":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage"},"thumbnailUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg","datePublished":"2025-07-25T16:49:01+00:00","dateModified":"2025-09-24T08:14:03+00:00","description":"Jak zasymulowa\u0107 ruch robota Astorino po powierzchni kuli za pomoc\u0105 astorinoIDE, a nast\u0119pnie zaimplementowa\u0107 program w rzeczywistych warunkach?","breadcrumb":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#primaryimage","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/astorino-kula-head.jpg","width":970,"height":438},{"@type":"BreadcrumbList","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/sterowanie-robotem-astorino-po-kuli\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Automatyka w praktyce","item":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/category\/automatyka-w-praktyce\/"},{"@type":"ListItem","position":2,"name":"Sterowanie robotem Astorino po kuli"}]},{"@type":"WebSite","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#website","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/","name":"Poradnik Automatyka","description":"Poradnik Automatyka to przydatne kursy, u\u017cyteczne artyku\u0142y i merytoryczne webinary dla ka\u017cdego automatyka i elektryka.","publisher":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#organization","name":"ASTOR","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2018\/08\/ASTOR_zwykly_sam_logotyp.png","width":3322,"height":1078,"caption":"ASTOR"},"image":{"@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/bb85922f1cba91e4049649720381de0c","name":"Kamila Piechocka","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/#\/schema\/person\/image\/","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/kamila-jaworowska-n-301x301.png","contentUrl":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-content\/uploads\/2025\/07\/kamila-jaworowska-n-301x301.png","caption":"Kamila Piechocka"},"description":"In\u017cynier ds. system\u00f3w zrobotyzowanych w firmie ASTOR.","url":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/autor\/kamilaj\/"}]}},"_links":{"self":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/23335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/users\/83"}],"replies":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/comments?post=23335"}],"version-history":[{"count":3,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/23335\/revisions"}],"predecessor-version":[{"id":23815,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/posts\/23335\/revisions\/23815"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media\/23422"}],"wp:attachment":[{"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/media?parent=23335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/categories?post=23335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.astor.com.pl\/poradnikautomatyka\/wp-json\/wp\/v2\/tags?post=23335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}