Skocz do zawartości
beargrylls

Cebulatron - prototyp "taniego" manipulatora

Pomocna odpowiedź

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ę.

  • Lubię! 1

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

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ą.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Fajny silniczek, ale chyba za duże przełożenie... Podrzuciłem link kumplowi, bo ostatnio płakał że 5 RPM to trochę za dużo i musi zejść z 24 na 6 V - może mu się przyda 🙂

 

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

@beargrylls świetnie to wygląda! Na kiedy planujesz zakończenie prac przy tej osi?

  • Lubię! 1

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@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

Udostępnij ten post


Link to post
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!

Gość
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...