{"id":26100,"date":"2023-12-20T05:00:00","date_gmt":"2023-12-20T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=26100"},"modified":"2023-12-15T12:56:19","modified_gmt":"2023-12-15T11:56:19","slug":"heksiipod-czy-latwo-zbudowac-robota","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/heksiipod-czy-latwo-zbudowac-robota\/","title":{"rendered":"HekSiipod \u2013 czy \u0142atwo zbudowa\u0107 robota?"},"content":{"rendered":"\n<p>Rozwijasz kompetencje techniczne w ramach w\u0142asnych projekt\u00f3w i chcesz mie\u0107 z tego rozrywk\u0119? Zrealizuj projekt z zakresu robotyki, a uzyskasz efekt \u201ewow\u201d ju\u017c na starcie. Cho\u0107 zag\u0142\u0119bienie si\u0119 w t\u0119 dziedzin\u0119 na pierwszy rzut oka mo\u017ce wydawa\u0107 si\u0119 kosmicznie trudne, na pewno jest ekscytuj\u0105ce i warte uwagi.<\/p>\n\n\n\n<p>Wiedza i umiej\u0119tno\u015bci z r\u00f3\u017cnych zakamark\u00f3w in\u017cynierii b\u0119d\u0105 Twoimi sprzymierze\u0144cami \u2013 musisz tylko odpowiednio je wykorzysta\u0107. Wa\u017cne jest tak\u017ce rozbicie problemu na mniejsze, \u0142atwiejsze do zarz\u0105dzania elementy. Dzi\u0119ki temu przestan\u0105 one by\u0107 przera\u017caj\u0105ce i powoli \u2013 od zadania do zadania \u2013 osi\u0105gniesz sukces.<\/p>\n\n\n\n<p>W tym artykule poka\u017cemy Ci, jak my realizujemy si\u0119 w ramach <strong>wewn\u0119trznego projektu robota paj\u0105ka<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Cztery nogi czy sze\u015b\u0107?<\/strong><\/h2>\n\n\n\n<p>Projekt HekSiipod realizowany jest w lubelskim oddziale Sii przez pracownik\u00f3w Embedded Competency Center. Sama idea, jaka nam przy\u015bwieca\u0142a, to sp\u0119dzenie wolnego czasu w ciekawy spos\u00f3b, ale te\u017c integracja cz\u0142onk\u00f3w zespo\u0142u. Pomys\u0142\u00f3w na wykonanie \u201eczego\u015b\u201d by\u0142o kilka, jednak finalnie zdecydowali\u015bmy si\u0119 w\u0142a\u015bnie na robotyczn\u0105 wersj\u0119 \u201epaj\u0105ka\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz1.jpg\"><img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz1.jpg\" alt=\"JeSiica \u2013 pierwszy prototyp robota w CC Embedded Lublin (zast\u0105piony p\u00f3\u017aniej przez StaSii\u0119)\" class=\"wp-image-26101\" width=\"574\" height=\"452\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz1.jpg 866w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz1-300x237.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz1-768x606.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz1-370x290.jpg 370w\" sizes=\"(max-width: 574px) 100vw, 574px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 JeSiica \u2013 pierwszy prototyp robota w CC Embedded Lublin (zast\u0105piony p\u00f3\u017aniej przez StaSii\u0119)<\/figcaption><\/figure>\n\n\n\n<p>W sieci mo\u017cemy natkn\u0105\u0107 si\u0119 na wszelakie konstrukcje, kt\u00f3rym towarzyszy\u0142o zr\u00f3\u017cnicowane podej\u015bcie zar\u00f3wno do kinematyki urz\u0105dzenia jak i oprogramowania. Najbardziej pospolitym rozwi\u0105zaniem jest zastosowanie czterech b\u0105d\u017a sze\u015bciu n\u00f3g symetrycznie roz\u0142o\u017conych dooko\u0142a cia\u0142a.<\/p>\n\n\n\n<p>Oba podej\u015bcia wi\u0105\u017c\u0105 si\u0119 oczywi\u015bcie z pewnymi konsekwencjami. O ile wersja sze\u015bciono\u017cna (hexapod) kinematycznie jest stabilniejsza, to na pewno generuje wi\u0119ksze koszty budowy. Z drugiej strony opcja czterech n\u00f3g (quadropod) kusi mniejsz\u0105 liczb\u0105 serw, ale wymaga wi\u0119kszego nak\u0142adu pracy na algorytmik\u0119. Ka\u017cde uniesienie ko\u0144czyny wi\u0105\u017ce si\u0119 z przesuni\u0119ciem \u015brodka ci\u0119\u017cko\u015bci robota pomi\u0119dzy pozosta\u0142e trzy punkty podparcia.<\/p>\n\n\n\n<p>My w swojej konstrukcji skupili\u015bmy si\u0119 na wersji drugiej i j\u0105 om\u00f3wimy w dalszej cz\u0119\u015bci tekstu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Projektowanie robota<\/strong><\/h2>\n\n\n\n<p>Czy to w wersji heksapod, czy quadropod, urz\u0105dzenie z poprawnym oprogramowaniem potrafi nacieszy\u0107 oko oraz wywo\u0142a\u0107 zadum\u0119 nad kunsztem obecnej technologii. Najprostsze wersje robota maj\u0105 po trzy serwomechanizmy na nog\u0119, co w szybkim przeliczeniu daje nam 12 b\u0105d\u017a 18 mechanizm\u00f3w do kontroli oraz synchronizacji (nie wspominaj\u0105c ju\u017c o dodatkowych czujnikach takich jak akcelerometr, \u017cyroskop czy chocia\u017cby kontrola sekcji zasilania).<\/p>\n\n\n\n<p>Pozornie wydawa\u0107 by si\u0119 mog\u0142o, \u017ce zaprojektowanie dzia\u0142aj\u0105cego paj\u0105ka jest zadaniem nie do wykonania. Ca\u0142a zabawa jednak zaczyna si\u0119, gdy zaczniemy analizowa\u0107 problem pod r\u00f3\u017cnymi k\u0105tami, m.in.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Jak sterowa\u0107 serwomechanizmem?<\/li>\n\n\n\n<li>Jak zsynchronizowa\u0107\/uzale\u017cni\u0107 3 serwa w jednej nodze?<\/li>\n\n\n\n<li>Jak zarz\u0105dza\u0107 nogami \u2013 w jakiej kolejno\u015bci je podnosi\u0107?<\/li>\n\n\n\n<li>Co z balansem ca\u0142ej konstrukcji?<\/li>\n<\/ul>\n\n\n\n<p>Celem dzielenia projektu na wspomniane etapy jest skupienie si\u0119 tylko na jednym problemie w danej chwili oraz zamkni\u0119cie rozwi\u0105zania konkretnego problemu w postaci <strong>jednej prostej funkcjonalno\u015bci<\/strong>. Taki modu\u0142 mo\u017cemy wykorzysta\u0107 w kolejnym kroku jako tzw. \u201eblack box\u201d, kt\u00f3ry niewa\u017cne jak dzia\u0142a \u2013 wa\u017cne, \u017ce dzia\u0142a. Kolejna warstwa aplikacji zbierze razem kilka ma\u0142ych \u201eskrzyneczek\u201d, tworz\u0105c nast\u0119pnie modu\u0142 wy\u017cszego poziomu, s\u0142u\u017c\u0105cy jako p\u00f3\u0142fabrykat systemu gdzie\u015b wy\u017cej. Pozwala nam to skupi\u0107 si\u0119 wy\u0142\u0105cznie na <strong>ma\u0142ym elemencie uk\u0142adanki, a nie na ca\u0142ym systemie naraz<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podzia\u0142 architektury na modu\u0142y na przyk\u0142adzie StaSii<\/strong><\/h2>\n\n\n\n<p>Tak naprawd\u0119 nie ma jednego s\u0142usznego podzia\u0142u architektury na modu\u0142y. W takiej sytuacji ka\u017cdy projektant na pewno mia\u0142by swoje podej\u015bcie i w\u0142asn\u0105 koncepcj\u0119. Oczywi\u015bcie \u2013 nie ma w tym nic z\u0142ego. Jedyne, o czym musimy pami\u0119ta\u0107 to fakt, \u017ceby ka\u017cdy taki ma\u0142y \u201eklocek\u201d posiada\u0142 funkcjonalno\u015b\u0107 unikaln\u0105 dla samego siebie oraz aby nie wchodzi\u0142 w kompetencje swoich \u201ekoleg\u00f3w&#8221;. Dla lepszego zobrazowania sytuacji zobaczmy, jak to wygl\u0105da w naszym przypadku.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pozycja serwomechanizmu<\/strong><\/h3>\n\n\n\n<p>Zacznijmy od najni\u017cszego poziomu. Podstawowym elementem wykonawczym u\u017cywanym do takich konstrukcji s\u0105 serwomechanizmy modelarskie. Te najprostsze do kontroli pozycji orczyka wykorzystuj\u0105 sygna\u0142 PWM.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz2.png\"><img decoding=\"async\" width=\"624\" height=\"336\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz2.png\" alt=\"Sygna\u0142 PWM wykorzystywany do kontroli serwomechanizm\u00f3w\" class=\"wp-image-26103\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz2.png 624w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/Obraz2-300x162.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Sygna\u0142 PWM wykorzystywany do kontroli serwomechanizm\u00f3w<\/figcaption><\/figure>\n\n\n\n<p>W prostym t\u0142umaczeniu szeroko\u015b\u0107 impulsu (wsp\u00f3\u0142czynnik wype\u0142nienia) jest wprost proporcjonalna do oczekiwanej pozycji osi serwa lub, innymi s\u0142owy, k\u0105ta obrotu. Wi\u0119kszo\u015b\u0107 popularnych obecnie mikrokontroler\u00f3w ma odpowiednie peryferia do generowania takiego sygna\u0142u i tak naprawd\u0119 sterowanie pozycj\u0105 serwomechanizmu sprowadza si\u0119 do zmiany warto\u015bci odpowiedniego rejestru. Warto\u015b\u0107 XX b\u0119dzie odpowiada\u0107 pozycji 0st, YY to 180st itp.<\/p>\n\n\n\n<p>Konkretne liczby b\u0119d\u0105 uzale\u017cnione od wielu czynnik\u00f3w takich jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>cz\u0119stotliwo\u015b\u0107 taktowania uk\u0142adu,<\/li>\n\n\n\n<li>zastosowany mikrokontroler,<\/li>\n\n\n\n<li>model serwa.<\/li>\n<\/ul>\n\n\n\n<p>Te warto\u015bci mo\u017cna wyznaczy\u0107 empirycznie, jednak niestety b\u0119d\u0105 one ma\u0142o czytelne i trudne do u\u017cycia w dalszej cz\u0119\u015bci kodu. Rozwi\u0105zaniem jest <strong>napisanie prostego sterownika<\/strong>, do kt\u00f3rego b\u0119dziemy podawali \u017c\u0105dan\u0105 warto\u015b\u0107 k\u0105ta, a on zrobi ju\u017c reszt\u0119. Je\u017celi wiemy, \u017ce warto\u015b\u0107 naszego rejestru to XX dla 0st, a YY dla 180st, to przy liniowej charakterystyce dla warto\u015b\u0107 np. 46st warto\u015b\u0107 naszego rejestru powinna wynosi\u0107 co\u015b pomi\u0119dzy XX a YY. Dok\u0142adn\u0105 warto\u015b\u0107 mo\u017cna \u0142atwo wyliczy\u0107 z r\u00f3wnania funkcji liniowej b\u0105d\u017a proporcji, jednak na potrzeby tego artyku\u0142u, pomi\u0144my te wzory.<\/p>\n\n\n\n<p>Gdy uda nam si\u0119 ju\u017c przeliczy\u0107 k\u0105t, to w razie potrzeby zmiany pozycji serwa b\u0119dziemy mogli u\u017cywa\u0107 warto\u015bci podanej w stopniach, czyli w jednostkach uk\u0142adu SI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Uczenie sterowania nog\u0105<\/strong><\/h3>\n\n\n\n<p>Kolejnym krokiem w realizacji projektu jest nauczenie si\u0119 sterowania jedn\u0105 nog\u0105. W naszym przypadku za\u0142o\u017cyli\u015bmy, \u017ce na tym etapie <strong>b\u0119dziemy kontrolowa\u0107 wirtualny punkt umiejscowiony na styku odn\u00f3\u017ca z pod\u0142o\u017cem<\/strong>. W tym miejscu chcemy zapomnie\u0107 o serwach i k\u0105tach, a podawa\u0107 od razu wsp\u00f3\u0142rz\u0119dne tego punktu w postaci koordynat (x,y,z). Uk\u0142ad wsp\u00f3\u0142rz\u0119dnych niech umieszczony b\u0119dzie w miejscu zamontowania nogi do ca\u0142ej konstrukcji. P\u0142aszczyzna XY b\u0119dzie r\u00f3wnoleg\u0142a do pod\u0142o\u017ca, o\u015b Z skierowana ku g\u00f3rze, a X wskazuje kierunek \u201edo przodu\u201d.<\/p>\n\n\n\n<p>Konstrukcyjnie taka noga sk\u0142ada si\u0119 z trzech po\u0142\u0105czonych ze sob\u0105 serw. O ile w pierwszym kroku zale\u017ca\u0142o nam na konwersji k\u0105ta obrotu na dane wype\u0142nienie sygna\u0142u PWM, tak na tym etapie podajemy ju\u017c punkt przestrzenny w przyj\u0119tym uk\u0142adzie odniesienia, oczekuj\u0105c trzech warto\u015bci k\u0105t\u00f3w dla naszych serwomechanizm\u00f3w.<\/p>\n\n\n\n<p>Tylko jak si\u0119 do tego zabra\u0107? Z pomoc\u0105 przychodzi nam <strong>kinematyka odwrotna<\/strong>. Rozpisanie tego etapu na czynniki pierwsze i poszczeg\u00f3lne wzory pozwolimy sobie zostawi\u0107 na oddzielny artyku\u0142, gdy\u017c dziedzina sama w sobie jest bardzo ciekawa. Na potrzeby obecnego teksu wystarczy streszczenie, \u017ce po zebraniu pewnych pomiar\u00f3w konstrukcji (d\u0142ugo\u015bci poszczeg\u00f3lnych cz\u0142on\u00f3w ko\u0144czyny), zastosowaniu twierdzenia cosinus\u00f3w i szczypty trygonometrii, <strong>wyliczenie k\u0105t\u00f3w dla naszych przegub\u00f3w nie jest problemem<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Operowanie punktami w przestrzeni<\/strong><\/h3>\n\n\n\n<p>Ostatnim etapem jest operowanie punktami w przestrzeni. Podniesienie jednej nogi do g\u00f3ry to nic innego, jak zmiana wsp\u00f3\u0142rz\u0119dnej \u201ez\u201d. A jak podnie\u015b\u0107 ca\u0142e cia\u0142o? Zmieniamy koordynaty \u201ez\u201d dla wszystkich n\u00f3g. Pozostaje nam sama zabawa z mechanik\u0105 ruch\u00f3w. Co zrobi\u0107 z robotem podczas kroku? Jak utrzyma\u0107 r\u00f3wnowag\u0119, balansuj\u0105c \u015brodkiem ci\u0119\u017cko\u015bci? Mo\u017cna powiedzie\u0107, \u017ce <strong>otworzyli\u015bmy sobie drzwi do jednego z najciekawszych obszar\u00f3w, zapominaj\u0105c jednocze\u015bnie o detalach konstrukcyjnych<\/strong>.<\/p>\n\n\n\n<p>Pozornie skomplikowane zagadnienie, jakim jest synchronizacja wszystkich mechanizm\u00f3w, staje o wiele prostsze, gdy odpowiednio opiszemy problem i roz\u0142o\u017cymy go na czynniki pierwsze. Jest to szczeg\u00f3lnie istotne przy modyfikacjach projektu.<\/p>\n\n\n\n<p>Wyobra\u017acie sobie sytuacj\u0119, gdy po wielu testach dochodzimy do wniosku, \u017ce ograniczeniem s\u0105 zastosowane serwomechanizmy. Po przeszukaniu rynku znajdujemy nasz \u201e\u015awi\u0119ty Gral\u201d, czyli serwomechanizmy robotyczne, kt\u00f3re do kontroli wykorzystuj\u0105 magistral\u0119 szeregow\u0105 (ang. Serial Bus Servo). Zmiana sposobu komunikacji z serwami pozornie mo\u017ce wydawa\u0107 si\u0119 mocno ingeruj\u0105ca w ca\u0142y projekt, wr\u0119cz podwa\u017caj\u0105ca sens ca\u0142ej zmiany.<\/p>\n\n\n\n<p>Jednak, gdy przyjrzymy si\u0119 naszej architekturze systemu, szybko zobaczymy, \u017ce tak naprawd\u0119 do podmiany mamy tylko nasz \u201eklocek\u201d odpowiadaj\u0105cy za konwersj\u0119 k\u0105ta na warto\u015b\u0107 wychylenia serwa. Je\u017celi wymienimy nasz driver, zachowuj\u0105c dok\u0142adnie takie samo API, czyli spos\u00f3b w jakim rozmawiamy z modu\u0142em (innymi s\u0142owy gar\u015b\u0107 funkcji), to reszta systemu nawet nie zauwa\u017cy r\u00f3\u017cnicy.<\/p>\n\n\n\n<p>Podobnie sytuacja b\u0119dzie wygl\u0105da\u0107 z urz\u0105dzeniami do sterowania naszym robotem. Czy to aplikacja na telefon wykorzystuj\u0105ca bluetooth, czy pad od PS2 komunikuj\u0105cy si\u0119 po magistrali SPI, nie ma to dla nas znaczenia tak d\u0142ugo, jak b\u0119dziemy w stanie napisa\u0107 modu\u0142 t\u0142umacz\u0105cy sygna\u0142 z zewn\u0105trz na co\u015b, co b\u0119dziemy rozumie\u0107. Daje nam to swobod\u0119 rozwijania takiego projektu, wykorzystuj\u0105c podzespo\u0142y, kt\u00f3re mo\u017ce nie s\u0105 najlepsze w danej aplikacji, ale po prostu \u201es\u0105\u201d (mo\u017ce zosta\u0142y w spadku po innych projektach), pozwalaj\u0105c nam kontynuowa\u0107 prac\u0119 i cieszy\u0107 si\u0119 z tego, co robimy, a w przysz\u0142o\u015bci ulepszy\u0107 o komponenty wy\u017cszej klasy.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"HekSiipod \u2013 czy \u0142atwo zbudowa\u0107 robota?\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/eLq8Cfpt5QY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>W artykule przedstawili\u015bmy spos\u00f3b podej\u015bcia do z\u0142o\u017conego zagadnienia, jakim jest proces zbudowania systemu kontroli robota krocz\u0105cego. Nie jest to gotowa instrukcja, jak wykona\u0107 takie urz\u0105dzenie, a jedynie przedstawienie sposobu my\u015blenia oraz prezentacja podej\u015bcia wybranego przez nasz zesp\u00f3\u0142.<\/p>\n\n\n\n<p>Warto zaznaczy\u0107, \u017ce <strong>jedn\u0105 z miar poprawnie zaprojektowanej architektury<\/strong> ka\u017cdego systemu jest tak naprawd\u0119 nak\u0142ad pracy, jaki musimy w\u0142o\u017cy\u0107, aby zmodyfikowa\u0107 j\u0105 pod nowe wymagania projektowe.<\/p>\n\n\n\n<p>Pami\u0119tajcie, \u017ce ka\u017cdy projekt to unikalna podr\u00f3\u017c, a kluczem do sukcesu s\u0105 nie tylko gotowe rozwi\u0105zania, ale r\u00f3wnie\u017c umiej\u0119tno\u015b\u0107 elastycznego my\u015blenia i znajdowania w\u0142asnych dr\u00f3g. Dzi\u0119ki odpowiedniemu podzieleniu projektu na etapy oraz skupieniu si\u0119 na poszczeg\u00f3lnych warstwach, nawet najbardziej z\u0142o\u017cone przedsi\u0119wzi\u0119cia staj\u0105 si\u0119 bardziej przyst\u0119pne. Finalnie, projekt staje si\u0119 \u0142atwiejszy do zarz\u0105dzania, a wyzwania s\u0105 rozwi\u0105zywane po kolei, <strong>eliminuj\u0105c przyt\u0142aczaj\u0105ce uczucie z\u0142o\u017cono\u015bci<\/strong>.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>A je\u015bli ciekawi\u0105 Ci\u0119 inne projekty zrealizowane przez naszych in\u017cynier\u00f3w &#8222;po godzinach&#8221;, zajrzyj koniecznie do artyku\u0142\u00f3w:  <a aria-label=\"Sii to the sky \u2013 how to launch your device at 24 km high! (opens in a new tab)\" href=\"https:\/\/sii.pl\/blog\/en\/sii-to-the-sky-how-to-launch-your-device-at-24-km-high\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Sii to the sky \u2013 how to launch your device at 24 km high!<\/a> oraz <a href=\"https:\/\/sii.pl\/blog\/smart-contract-i-iot-oswiadczyny-w-blockchainie\/\" target=\"_blank\" aria-label=\"Smart contract i IoT: o\u015bwiadczyny w blockchainie (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Smart contract i IoT: o\u015bwiadczyny w blockchainie<\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;26100&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;15&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 15)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;HekSiipod \u2013 czy \u0142atwo zbudowa\u0107 robota?&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 15)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Rozwijasz kompetencje techniczne w ramach w\u0142asnych projekt\u00f3w i chcesz mie\u0107 z tego rozrywk\u0119? Zrealizuj projekt z zakresu robotyki, a uzyskasz &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/heksiipod-czy-latwo-zbudowac-robota\/\">Continued<\/a><\/p>\n","protected":false},"author":599,"featured_media":26107,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[1847,1675,563,769],"class_list":["post-26100","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-robotyka","tag-moim-zdaniem","tag-embedded","tag-projektowanie"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/HekSiipod-\u2013-czy-latwo-zbudowac-robota.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/26100"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/599"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=26100"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/26100\/revisions"}],"predecessor-version":[{"id":26180,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/26100\/revisions\/26180"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/26107"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=26100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=26100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=26100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}