Popularny post Eukaryota Napisano Wrzesień 11, 2014 Popularny post Udostępnij Napisano Wrzesień 11, 2014 Witam, jako że od obrony trochę minęło chciałem się z wami podzielić owocem mojej ponad rocznej pracy. Po projekcie Trihex chciałem zmienić trochę podejście i zrobić coś innego ale dalej będącego w polu moich zainteresowań. Przeglądając katalogi robotów przemysłowych natknąłem się na konstrukcję typu Delta i to też postanowiłem zrobić. Celem pracy było zaprojektowanie oraz stworzenie robota o równoległej strukturze kinematycznej typu Delta wraz z system sterowania. W ramach pracy wykonałem: - Projekt robota w programie Catia V5 - Projekt sterownika silnika prądy stałego (DC) opartego na algorytmie PID, - Projekt sterownika głównego robota opartego na mikrokontrolerze Atmel AVR Xmega256A3Bu, - Moduł optoizolowanego układu I/O, - Projekt kontrolera robota - Program na środowisko Windows umożliwiający w łatwy sposób wyznaczać parametry Kp, Ki oraz Kd algorytmu PID, Obliczenia: - Zadanie proste kinematyki, oraz zadanie odwrotne kinematyki dla pozycji, prędkości oraz przyspieszeń, - Wyznaczenie przestrzeni roboczej robota, Algorytmy: - Generator trajektorii liniowej z parabolicznymi przejściami pomiędzy punktami, - Algorytm sprawdzający czy robot znajduje się w przestrzeni roboczej, - Obsługa komendy "Hold" zatrzymującej robota w dowolnym momencie pracy, - Obsługa emergency stop wraz z bezpiecznym powrotem do pracy manipulatora, - Sterowanie wejściami/wyjściami, - Realizacja zadanej trajektorii w trybie automatycznym, - Ruch robota w trybie ręcznym, - Wgrywanie nowych punktów dojazdowych do pamięci µC, - Program komputerowy sterujący robotem, a także pozwalający programować robota prostym językiem blokowym. Napędy: W robocie zastosowałem szczotkowe silniki prądu stałego z zamontowaną przekładnią planetarną o przełożeniu 100:1 oraz enkoder o rozdzielczości 64 impulsów na obrót wału silnika. Są to zwykłe ogólnodostępne silniki firmy Pololu (wybrałem je ze względu na cenę - były stosunkowo tanie). Jedyna zmiana to zmiana standardowej przekładni zębatej na przekładnię planetarną zapewniającą znacznie mniejsze luzy. Czwarta oś także oparta jest o silnik prądu stałego, jednak przekładnia zastosowana już jest mniejsza, a także sam enkoder mniej dokładny. Konstrukcja mechaniczna ramienia: Robot posiada 4 DOF, czyli może się poruszać w przestrzeni XYZ oraz posiada jeden obrót zapewniony przez napęd na kiści. Ramiona robota zostały wykonane z laserowo ciętego pleksiglasu oraz rurek z włókna węglowego. Przeguby kulowe zostały zmodyfikowane w taki sposób aby możliwe ich było rozczepianie. Pozostałe elementy zostały wykonane ze stali oraz aluminium. Długości ramion dobrałem tak aby zoptymalizować przestrzeń roboczą manipulatora. Wyznaczyłem przestrzeń roboczą jaką posiadał będzie mój robot. Kalkulacje zostały przeprowadzone metodą numeryczną. Wyniki widać poniżej - ładna trójtarcza charakterystyczna dla tego typu konstrukcji. Elektronika: W celu komunikacji z użytkownikiem oraz w celach sterowania zrobiłem panel przedni znajdujący się na kontrolerze. Zawiera on: - Emergency Stop - Włącznik robota, - Diody led pokazujące obecny stan pracy - Złacze USB - Ekran informujący o pracy kontrolera, - Przycisk reset, - Przełącznik kluczykowy „HOLD” Konstrukcja kontrolera oparta została o obudowę komputerową Fractal Design Core 1000. Źródłem zasilania dla robota są dwa przemysłowe zasilacze impulsowe 12V oraz 5V. O mocach odpowiednio 180W oraz 15W. Kontroler posiada dwa główne układy sterujące pracą robota: - Sterowniki silników oparte zostały na mikrokontrolerze AtMega88-AU pracujący z częstotliwością 20 Mhz. - Sterowniki główny oparty został na mikrokontrolerze XMega256A3BU pracujący z częstotliwością 40 Mhz. Sterowniki silników komunikują się z układem głównym poprzez protokół RS232. Komunikacja jest obustronna, a kolejne ramki danych wysyłane są co 5ms. Jest to wystarczająca prędkość do tej konkretnie konstrukcji. Dodatkowo każdy z kontrolerów silników na bieżąco sprawdza prąd jaki pobiera silnik, którym steruje, następnie wysyła to do kontrolera głównego. Ze względu na brak czasu nie zdążyłem napisać algorytmu wykrywania kolizji ramienia z otoczeniem . Całość programów została napisana w języku C. Robot jest w stanie reagować na moduł wejść/wyjść. Zaprogramowałem możliwość sterowania dwa wejściami oraz wejściami cyfrowymi. Można dzięki nim podłączyć np. elektrozawór do chwytaka podciśnieniowego. Program komputerowy: Do sterowania robotem napisany został program komputerowy na środowisko Windows w języku programistycznym C#. Program pozwala na automatyczne znajdowanie podłączonego kontrolera do komputera. Dodatkową funkcjonalnością jest wykrywanie wyłączenia kontrolera lub odłączenie kabla USB. Program umożliwia: - Sterowanie robotem w trybie ręcznym – ruch realizowany jest w przestrzeni kartezjańskiej lub przegubowej z określoną prędkością liniową lub procentem maksymalnej prędkości w trybie uczenia, - Tworzenie prostych programów do pracy automatycznej, możliwość wyboru punktów dojazdowych, prędkości oraz dokładności dojazdu, sterowania wyjściami. - Wgrywanie napisanego programu (prosty język blokowy), - Włączenie trybu pracy automatycznej, - Zatrzymanie robota w dowolnym momencie pracy, - Resetowanie błędu opuszczenia przez robota przestrzeni roboczej. Algorytmy: System sterowania oparłem o model kinematyczny manipulatora. Z tego względu konieczne było wyznaczenie równań prostego jak i odwrotnego zadania kinematyki, a także ich pochodnych (Matlab FTW ) Aby zapewnić płynność pracy robota stworzyłem także generator trajektorii, który umożliwia wybór dokładności przejścia pomiędzy punktami. Na procentowo określoną odległość przed nauczonym punktem robot zaczyna "skracać" sobie trasę przez to niwelować zbędne siły bezwładności i redukować potrzebne momenty na silnikach. Końcowym elementem który chciałem opisać jest algorytm łagodnego startu. Aby robot nie wykonywał nagłego oraz nieprzewidywalnego ruchu po załączeniu trybu automatycznego wprowadzono algorytm łagodnego startu. Robot przed rozpoczęciem pracy odczytuje swoją aktualną pozycję, a następnie generuje liniową trajektorię do pierwszego punktu wgranego programu. Prędkość oraz dokładność dojazdu do punktu startowego jest taka sama jak w pierwszym kroku zaprogramowanego programu. Po prawej widać działanie opisanego algorytmu. Film pokazujący pracę robota oraz sterowanie wyjściami w czasie pracy: W ramach pracy wykonałem także bardzo dużo innej roboty ale to co opisałem powyżej myślę, że zgrubnie opisuje tę konstrukcję. Oczywiści jakby się jakieś pytania nasuwały chętnie odpowiem. Pozdrawiam,Eukaryota 5
MirekCz Wrzesień 12, 2014 Udostępnij Wrzesień 12, 2014 Robot jest do jakiegoś konkretnego zastosowania? Jak dobrze widzę masz silniki z pololu, albo podobne? Testowałeś udźwig i dokładność tego rozwiązania? (powtarzalność / dokładność uzyskiwania pozycji)
Marooned Wrzesień 12, 2014 Udostępnij Wrzesień 12, 2014 Na filmiku miałem wrażenie, że dokładność jest słaba - wydawało mi się, że końcówka bardzo "lata", jakby miała dużo luzów. Podoba mi się solidne podejście do tematu.
Eukaryota Wrzesień 13, 2014 Autor tematu Udostępnij Wrzesień 13, 2014 Robot jest do jakiegoś konkretnego zastosowania?[...] Robot nie ma konkretnego zastosowania, jest to model robota przemysłowego, w planach miałem rozwijać projekt. Ten opisany na forum to prototyp na którym testowałem część programistyczno-algorytmiczną. [...]Jak dobrze widzę masz silniki z pololu, albo podobne?Testowałeś udźwig i dokładność tego rozwiązania? (powtarzalność / dokładność uzyskiwania pozycji) Tak, to są silniki pololu, zmieniłem w nich tylko przekładnię. Jeżeli chodzi o udźwig to robot jest w stanie przenosić do 500g. Dokładność nie jest za dobra, ale powtarzalność sięga milimetra. Na filmiku miałem wrażenie, że dokładność jest słaba - wydawało mi się, że końcówka bardzo "lata", jakby miała dużo luzów. Podoba mi się solidne podejście do tematu. Tak jak pisałem powyżej dokładności dużo brakuje do doskonałości. Jest to wina zastosowanych napędów, luzów na przekładni, a także samej konstrukcji, gdyż dużo elementów ze względów kosztowych wykonałem ręcznie sam, a jak wiadomo na biurku nie można spodziewać się cudów. Należałoby tutaj zastosować innego typu napędy np krokowe lub serwa na prąd przemienny. Lecz jak szukałem w internecie takich napędów zabijała mnie cena, która sięgała tysięcy złotych za jeden napęd (silnik + przekładnia). Niestety sam musiałem finansować cały projekt. Starałem się niwelować wszelkie niedoróbki fizyczne częścią programową, lecz nie wszystko się da poprawić. Nie bez powodu w robotach przemysłowych jednymi z najdroższych części są przekładnie, bo to od nich bardzo dużo zależy.
greebqmaster Wrzesień 16, 2014 Udostępnij Wrzesień 16, 2014 Super konstrukcja, chylę czoła! Mam nadzieję, że moja konstrukcja będzie równie porządna, co Twoja W czym obliczałeś przestrzeń roboczą? W Matlabie? Z "po obronie pracy" wnioskuję, że była to praca dyplomowa. Magisterka, czy inżynierka?
Eukaryota Wrzesień 24, 2014 Autor tematu Udostępnij Wrzesień 24, 2014 Super konstrukcja, chylę czoła! Mam nadzieję, że moja konstrukcja będzie równie porządna, co Twoja W czym obliczałeś przestrzeń roboczą? W Matlabie? Z "po obronie pracy" wnioskuję, że była to praca dyplomowa. Magisterka, czy inżynierka? Przestrzeń robocza była obliczona metodą numeryczną w Matlabie. Żeby tego dokonać musimy znać model matematyczny naszego manipulatora, a w szczególności proste i odwrotne zadnie kinematyki dla pozycji. Była to praca magisterska, praca inżynierska także jest opisana na łamach forum. Jest to robot mobilny/kroczący Trihex
davidpi Wrzesień 24, 2014 Udostępnij Wrzesień 24, 2014 Bardzo fajna konstrukcja. Kawał dobrej roboty. Mam pytanie odnośnie kinematyki i sterowania. Czy równania wyprowadzałeś sam, czy stosowałeś jakiś robotic toolbox w matlabie?? Rozumiem, że podczas sterowania ta kinematyka jest w czasie rzeczywistym przeliczana. Czy robi to Twój sterownik, czy jest to robione z poziomu PC, matlaba?
Eukaryota Wrzesień 25, 2014 Autor tematu Udostępnij Wrzesień 25, 2014 Bardzo fajna konstrukcja. Kawał dobrej roboty. Mam pytanie odnośnie kinematyki i sterowania. Czy równania wyprowadzałeś sam, czy stosowałeś jakiś robotic toolbox w matlabie?? Rozumiem, że podczas sterowania ta kinematyka jest w czasie rzeczywistym przeliczana. Czy robi to Twój sterownik, czy jest to robione z poziomu PC, matlaba? Równania prostej i odwrotnej kinematyki wyliczyłem na kartce. Jedynie ich pochodne po czasie wyliczyłem w Matlabie. Kinematyka jest wyliczana na bieżąco przez Xmegę. Komputer PC to jedynie klient, wysyła ramkę danych z rozkazami i otrzymuje dane z kontrolera.
davidpi Wrzesień 25, 2014 Udostępnij Wrzesień 25, 2014 Pytam, ponieważ ciekawi mnie czy robiłeś te równania z zależności geometrycznych, czy stosując notację Denavitta-Hartenberga. A co za tym idzie czy w efekcie musisz rozwiązywać układy równań??
Eukaryota Wrzesień 25, 2014 Autor tematu Udostępnij Wrzesień 25, 2014 Pytam, ponieważ ciekawi mnie czy robiłeś te równania z zależności geometrycznych, czy stosując notację Denavitta-Hartenberga. A co za tym idzie czy w efekcie musisz rozwiązywać układy równań?? Z zależności geometrycznych. Notacja Denavitta-Hartenberga nie nadaje się do obliczania równań kinematyki dla struktury z zamkniętym łańcuchem kinematycznym. Znaczy da się poprzez uproszczenie, że Delta to 3 SCARY itd. ale uważam, że to robota na około.
davidpi Wrzesień 27, 2014 Udostępnij Wrzesień 27, 2014 No tak, ale jak wyprowadzić z zależności geometrycznych dla delty 6DOF?? Mnie się nie udało jej zrobić bez notacji DH.
Eukaryota Październik 1, 2014 Autor tematu Udostępnij Październik 1, 2014 No tak, ale jak wyprowadzić z zależności geometrycznych dla delty 6DOF??Mnie się nie udało jej zrobić bez notacji DH. Jedyna Delta 6DOF to Fanuc M-3ia jaką znam, ale przypuszczam, że nie o to Ci chodziło. Jeżeli mówisz o platformie Stewarta to za bardzo nie wiem jak chcesz obroty obliczać jeżeli traktujesz ją jako zlepek SCARA. Pozycja X,Y,Z ok, ale kąty obrotu już gorzej. Ogólnie moim zdaniem DH się nie nadaje do robotów równoległych.
davidpi Październik 1, 2014 Udostępnij Październik 1, 2014 Oczywiście mówię tutaj o manipulatorze równoległym 6DOF. Nie mam na myśli delty 3DOF z nabudowanymi stopniami na platformie. Da się rozbić taki manipulator na niezależne ramiona. Pozycja i orientacja platformy definiują jej ułożenie w przestrzeni, a więc mamy jasno określone gdzie kończą się ramiona. I wtedy każde ramię jak manipulator szeregowy z notacji DH. Popełniłem takie coś na moją magisterkę https://www.forbot.pl/forum/topics7/manipulator-platforma-stewarta-vt7761.htm Właśnie zrobiłem w ten sposób, bo nie miałem koncepcji jak zrobić cały manipulator z zależności geometrycznych. Nie wiem czy w ogóle się da.
merbb Listopad 26, 2016 Udostępnij Listopad 26, 2016 Pytam, ponieważ ciekawi mnie czy robiłeś te równania z zależności geometrycznych, czy stosując notację Denavitta-Hartenberga. A co za tym idzie czy w efekcie musisz rozwiązywać układy równań?? Z zależności geometrycznych. Notacja Denavitta-Hartenberga nie nadaje się do obliczania równań kinematyki dla struktury z zamkniętym łańcuchem kinematycznym. Znaczy da się poprzez uproszczenie, że Delta to 3 SCARY itd. ale uważam, że to robota na około. Czy mógłbyś się ze mną podzielić obliczeniami? Jestem w trakcie robienia swojej delty. Jednakże w książce np. p. Honczarenki są punkty A, B, C i nie wiem skąd mam wziąć ich współrzędne w swojej delcie.
robo1973 31 stycznia Udostępnij 31 stycznia Hej Konstrukcja super . Rozumiem że zostawałeś silniki DC z enkoderem i przekładnią planetarną. Jak ustawiasz pozycję zero na osiach po włączeniu robota? Czy jest czujnik położenia osi ? Pozdrawiam !
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »