Skocz do zawartości

Cebulatron - prototyp "taniego" manipulatora


Pomocna odpowiedź

Cześć,
jakiś czas temu postanowiłem zaprojektować robota, którego mógłby zbudować każdy z dostępem do drukarki 3d i dość skromnym budżetem. Rozwiązania konstrukcyjne częściowo opierałem na BCN3D MOVEO i innych podobnych konstrukcjach, jednak chciałem żeby manipulator był bardziej precyzyjny w czym miało pomóc zastosowanie łożysk w każdej z osi.

Przekładnie w pierwszej i czwartej osi to wydrukowane koła zębate, przełożenia kolejno 1:7 i 1:6, w osiach 3 i 5 zastosowano przekładnie pasowe zębate, przełożenia kolejno 1:8,435 i 1:6.125.

Jak widać manipulator jest jeszcze nie skończony, brak mu osi drugiej. Początkowo oś 2 i 3 miały być takie same, jednak ze względu na większe obciążenia, musiałem przeprojektować drugą oś, zastosować większy pasek (T5x10 zamiast gt2x6mm) oraz dodatkową przekładnię planetarną. Oś druga jest jeszcze w fazie projektowej.

Koszt (bez kosztów przesyłki):

"mechanika":

  • silniki krokowe używane z allegro: około 40zł
  • łożyska: około 60 zł
  • śruby/nakrętki: około 50 zł
  • filament do drukarki ABS 2x 1kg: 120 zł
  • serwomechanizm do chwytaka (wziąłem jaki miałem pod ręka, ale można użyć tańszy): 50 zł

co daje około 320 zł

elektronika:

  • Płytka zgodna z Arduino Mega: 40 zł
  • RAMPS 1.4: 20 zł
  • StepSticki : 30 zł
  • Zasilacz 250W: 48 zł

= 138 + przewody czyli powiedzmy 160 zł

W sumie wyszło około 480 zł czyli trochę drożej niż planowałem jednak można przyoszczędzić np. nie kupując nowego zasilacza  itp.

Obecnie planuję:

  • skończyć projekt osi drugiej i zrobić prototyp oraz przetestować go razem z całym robotem
  • wydrukować i zamontować przekładnie planetarną do osi trzeciej
  • dokończyć komunikację robota z ROSem przez bibliotekę rosserial arduino

IMG_20191112_121033[1].jpgIMG_20191108_124137[1].jpgIMG_20191128_154756[1].jpgIMG_20191115_162032[1].jpg

IMG_20191106_153841[1].jpg

Przechwytywanie.PNG

  • Lubię! 2
Link do komentarza
Share on other sites

Fajny design!

Dnia 29.11.2019 o 11:09, beargrylls napisał:

serwomechanizm do chwytaka (wziąłem jaki miałem pod ręka, ale można użyć tańszy): 50 zł

Można też zastosować silnik bldc w roli serwa jak w tym wątku:

Oprogramowanie autorskie czy gotowiec? Ogólnie fajna konstrukcja, gratuluję.

Link do komentarza
Share on other sites

Dzięki! 

Jak na razie to mam w planie zrobić chwytak na silniku szczotkowym z przekładnią. Całość kosztowała koło 2,50 na allegro. Co do pozostałych napędów to fajnie by było użyć silników bezszczotkowych jednak są znacznie droższe.

Oprogramowanie bazuje na bibliotekach arduino AccelStepper i Multistepper których używam do sterowania silnikami krokowymi, wykorzystałem gotowy przykład dodając tylko liczbę silników i współczynniki do przeliczania obrotów na kroki oraz prostą komunikację przez port szeregowy.

Teraz planuję zrobić żeby robot powtarzał trajektorię wygenerowaną w symulacji.

Link do komentarza
Share on other sites

6 godzin temu, beargrylls napisał:

Jak na razie to mam w planie zrobić chwytak na silniku szczotkowym z przekładnią. Całość kosztowała koło 2,50 na allegro.

Podejrzewam, że biorąc pod uwagę koszt drivera serwo wyjdzie taniej... pokaż ten silnik za 2.50 bo aż sie wierzyć nie chce 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Mam cały karton (naście szt.) takich silników z drukarek różnej mocy, czasami ktoś sprzedaje za parę zł. jeśli działa, mogę oddać darmo jak się komu przydadzą.

Link do komentarza
Share on other sites

Po wielu podejściach udało mi się wreszcie sterować robotem wykorzystując do uproszczony model 3d robota.

Najpierw próbowałem wykorzystać RPi 3B+ z zainstalowanym ubuntu, jednak okazało się za słabe i po odpaleniu okna symulacji system działał bardzo powoli a potem się zawieszał.

Do stworzenia modelu robota w ROSie (Robot Operating System) potrzebny jest plik w formacie URDF (Universal Robot Description Format), jest to właściwie plik w języku znaczników XML opisujący każdy człon oraz przegub robota a także ich wzajemne położenie. Można napisać taki plik samemu, tutaj przykładowy fragment opisujący "robota" z jednym członem w formie walca:

   1 <?xml version="1.0"?>
   2 <robot name="myfirst">
   3   <link name="base_link">
   4     <visual>
   5       <geometry>
   6         <cylinder length="0.6" radius="0.2"/>
   7       </geometry>
   8     </visual>
   9   </link>
  10 </robot>

Dla bardziej złożonych geometrii można podać ścieżkę do pliku .dae lub .stl tak jak tu:

 <link name="right_tip">
 210     <visual>
 211       <origin rpy="-3.1415 0 0" xyz="0.09137 0.00495 0"/>
 212       <geometry>
 213         <mesh filename="package://urdf_tutorial/meshes/l_finger_tip.dae"/>
 214       </geometry>
 215     </visual>
 216   </link>

Jeśli ktoś byłby ciekawy jak stworzyć taki plik to odsyłam do pełnego tutoriala: http://wiki.ros.org/urdf/Tutorials/Building a Visual Robot Model with URDF from Scratch

Jako że jestem leniwy, do wygenerowania pliku URDF użyłem programu Autodesk Fusion 360 i skryptu fusion2urdf. Gdyby ktoś potrzebował to tu jest link: https://github.com/syuntoku14/fusion2urdf Jest tam wszystko opisane jak przygotować model 3d, jak stworzyć plik URDF a następnie otworzyć w ROSie.

Tutak podaję link do tutoriala, opisującego jak zacząć zabawę z ROSem i MoveIt! czyli oprogramowaniem służącym do planowania trajektorii robota.

http://docs.ros.org/melodic/api/moveit_tutorials/html/doc/getting_started/getting_started.html

Kolejnym krokiem jest utworzenie konfiguracji robota w MoveIt! W tym celu wystarczy odpalić kreatora konfiguracji MoveIt! Setup Assistant wpisując w terminal:

roslaunch moveit_setup_assistant setup_assistant.launch

Jak korzystać z kreatora konfiguracji jest opisane w tutorialu: http://docs.ros.org/melodic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html

Jest to stosunkowo proste, najpierw należy podać ścieżkę do naszego pliku URDF jeśli chcemy stworzyć nową konfigurację lub do konfiguracji którą chcemy zmodyfikować.

W następnych krokach stworzona jest między innymi macierz zwana "Self-Collision Matrix" czyli na tym etapie sprawdzane jest które człony nie mogą fizycznie się ze sobą zderzyć, co później wykorzystane jest do skrócenia czasu planowania trajektorii. Na końcu tworzone są pliki konfiguracyjne niezbędne do rozpoczęcia zabawy z MoveIt!

Potem, żeby uruchomić wizualizację robota należy użyć polecenia gdzie jako pierwszy argument, wpisujemy nazwę którą podaliśmy przy tworzeniu plików konfiguracyjnych:

roslaunch panda_moveit_config demo.launch

Wizualizacja otworzy się w środowisku RViz czyli głównym narzędziu ROSa służącym właśnie do wizualizacji robotów.

IMG_20191202_161205.thumb.jpg.57618294f719804c06fa832e1f8da7a3.jpg

Następnie korzystając z biblioteki rosserial arduino przerobiłem kod programu na arduino tak, żeby odbierał z ROSa informacje o współrzędnych przegubowych (joint_states), przeliczał na liczbę kroków i sterował silnikami krokowymi. Bazowałem między innymi na tym tutorialu:

http://wiki.ros.org/rosserial_arduino/Tutorials/Servo Controller

A oto efekt:

 

  • Lubię! 1
Link do komentarza
Share on other sites

aktualne postępy w budowie osi drugiej:

gearbox1.thumb.jpg.70527988ce4809035c8db652a17c7925.jpg

Przekładnia planetarna 1:5 z uzębieniem daszkowym, liczby zębów: koło pierścieniowe: 48, koło słoneczne: 12, satelity(4): 18, łożyska  w satelitach: 605. 

Przechwytywanie.thumb.PNG.03a860ee1f61635e837b5de890456390.PNGPrzechwytywanie1.thumb.PNG.fe0406342f08a5f4b62dfa6962446a4c.PNGPrzechwytywanie2.thumb.PNG.a6f70bd61da58b3f0fc908f58828e0c2.PNG

Druga oś robota będzie najbardziej obciążona, dlatego też zdecydowałem się użyć większy pasek zębaty niż w pozostałych osiach (gdzie użyty został pasek gt2 szeroki na 6mm, spotykany często w drukarkach 3d i przez to tani), czyli pasek T5 o szerokości 10mm. Wymagało to przeprojektowania osi (początkowo zakładałem że cały robot będzie składał się z podobnych modułów i oś druga i trzecia będą takie same). Duże koło pasowe będzie miało około  60 zębów, małe -10. Czyli otrzymujemy przełożenie 1:6 na przekładni pasowej co w połączeniu z przekładnią planetarną da całkowite przełożenie 1:30 co powinno być wystarczające. Przy obrotach silnika 180 obr/min będziemy mieli prędkość wyjsciową osi rzędu 36 stopni/sekundę co nie powala ale jeszcze jest przeze mnie akceptowalne.

  • Lubię! 2
Link do komentarza
Share on other sites

Dzięki @Treker! Ciężko powiedzieć, robię to tylko dla siebie wiec nie mam żadnych terminów, sam też nie planuję za bardzo w przód ale z czystej ciekawości chciałbym to jak najszybciej skończyć. Mam nadzieje, że do końca roku się uda.

  • Lubię! 1
Link do komentarza
Share on other sites

@beargrylls Świetna konstrukcja, gratuluję solidnego, prawie komercyjnego podejścia do tematu. Mam kilka pytań:

1. Łożyskujesz jednostronnie tę małą zębatkę GT2? To wystarczy? Same przekładnie planetarne rysowałeś w Fusionie przy pomocy jakiejś wtyczki?

2. Super wizualizacja w ROSie, zawsze zastanawiałem się jak zrobić taką 3D, bo dotychczas bawiłem się Processingiem i 2D. Dane PC-Arduino wymieniasz portem szeregowym (korzystając z wspomnianej biblioteki)?

3. Jak zerujesz osie? Ręcznie? Czujniki krańcowe/enkodery absolutne...?

4. Ja też wykorzystywałem AccelStepper, bardzo łatwo zrobić tam rampę de- i akceleracji, mam pytanie - jak chcesz zrobić ruch po zadanej trajektorii. Jeżeli nie robiłem interpolacji, to ruch mojego (znacznie prostszego ramienia) był płynny, ale po jakiejś losowej krzywej. Jeżeli zrobiłem interpolację w linii prostej np. co 5mm, to ruch był "szarpany". Czy można jakoś łatwo (to znaczy za pomocą podstawowej matematyki) na Arduino zrobić ruch zarówno interpolowany jak i płynny, tj. z przyspieszeniem?

PS Co to za książka "Poradnik Mechanika" w pierwszym filmiku 🙂? Polecasz?

PS2 Dziękuję za sam opis, bo wyszedł z niego całkiem obszerny poradnik-tutorial n/t ROSa

Pozdrawiam i jeszcze raz gratuluję 🙂

Edytowano przez wn2001
  • Lubię! 2
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.