Skocz do zawartości

beargrylls

Użytkownicy
  • Zawartość

    8
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

beargrylls wygrał w ostatnim dniu 13 grudnia

beargrylls ma najbardziej lubianą zawartość!

Reputacja

7 Neutralna

O beargrylls

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Kraków

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. 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.
  2. aktualne postępy w budowie osi drugiej: 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. 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.
  3. 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. 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:
  4. Coś takiego: https://allegro.pl/oferta/silnik-20-03419-24-v-dc-z-przekladnia-8577966174 całość jest trochę duża, ale dość lekka
  5. 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.
  6. 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
  7. Dzięki za odpowiedź. Muszę poczytać koniecznie o algorytmie predykcyjnym. Rzeczywiście na początek rozsądniej będzie zostać przy PIDach. Zresztą można by je też później zmodyfikować. Z doborem parametrów PIDa też muszę jeszcze popracować. Zastanawiam się nad metodą ich doboru. Jeśli zrobię model matematyczny to powinno być prościej. Model i tak zamierzam zrobić. Czujniki zamierzam wykorzystać na razie tylko do startu i lądowania, żeby dokładnie określać wysokość, bo sam barometr jest za mało dokładny. Wiem że mają one zasięg do kilku metrów, ale w pomieszczeniu to powinno wystarczyć, a na zewnątrz tak jak piszesz, będę korzystał dodatkowo z GPSa. UPDATE 1. Problem zapisywania parametrów lotu mam zamiar rozwiązać wykorzystując ten projekt: https://github.com/renes/multiwiiDataLogger Podpinam TX multiwii do RX arduino i RX multiwii do TX arduino, podłączam czytnik kart do arduino, wgrywam program do arduino i powinno zapisywać dane z IMU i wartości sterowań na karcie. 2. Zastanawiam się, czy to arduino. które służyłoby do zapisu danych na karcie, nie mogłoby wykorzystywać tych danych, oraz czujników ultradźwiękowych, do obliczania sterowań dla Multiwii. Możnaby też zaimplementować w nim EKFa, tylko nie wiem czy procesor by wystarczył, czy nie lepiej użyć do tego arduino MEGA lub DUE?
  8. Witam, to mój pierwszy temat i zarazem post na tym forum. Jestem studentem 5 roku na kierunku automatyka i robotyka, tym nie mniej jednak jestem początkującym robotykiem biorąc pod uwagę moje doświadczenie. Już od paru lat chodzi mi po głowie podobny projekt: Zdaję sobie sprawę ze stopnia skomplikowania takiego projektu, dlatego podzieliłem go na wiele mniejszych etapów. Pierwszym z nich było zbudowanie quadrocoptera służącego jako platforma do testów i dalszych modyfikacji: mózgiem quadrocoptera jest kontroler lotu MultiWii w skład którego wchodzą: Mikrokontroler Atmega328P 3-osiowy żyroskop: ITG3205 3-osiowy akcelerometr: BMA180 Barometr: BMP085 Magnetometr: HMC5883L Na dzień dzisiejszy model jest sterowany zdalnie przez człowieka, sygnały z nadajnika odpowiadające kątom RPY i ciągowi silników wysyłane są do odbiornika RC na pokładzie, który przekształca je na sygnał PPM i wysyła do kontrolera, który natomiast na podstawie tych sygnałów, steruje silnikami. Obecnie chciałbym rozwiązać następujące problemy: 1. Zapis parametrów lotu na karcie SD, które posłużą do identyfikacji modelu. Tutaj mam kilka pomysłów. Po pierwsze można podpiąć czytnik karty SD w podobny sposób jak do arduino UNO, z tym że tam komunikacja szeregowa korzysta z pinów 11, 12 i 13, natomiast w kontrolerze który posiadam piny te są prawdopodobnie używane już do czego innego, więc nie wiem czy takie rozwiązanie jest możliwe. Następnie trzeba by zmodyfikować program kontrolera. Inną możliwością jest podłączenie arduino do MultiWii, tak żeby dane z czujników były wysyłane do arduino, które zapisywałoby je na karcie. Jednak w tym przypadku nie wiem jakiej komunikacji użyć i w ogóle jak zrobić żeby dwa mikrokontrolery się ze sobą komunikowały. Jeszcze inna możliwość, to umieszczenie w robocie arduino z oddzielnymi czujnikami. Dla mnie to rozwiązanie wydawało się najprostsze, jednak gdy próbowałem zapisać dane z czujnika MPU6050 (3 osiowy żyroskop + 3 osiowy akcelerometr) na karcie, to dane te nie były poprawne, np. w jednej kolumnie cały czas było 0, nie wiem czy to nie było spowodowane złą synchronizacją. Tzn. że dane z czujnika były odbierane z częstotliwością 50Hz, a zapis na kartę odbywał się co 200ms. 2. Zmiana algorytmu sterowania Oryginalnie w MultiWii są oddzielne PIDy dla każdej osi + PID do utrzymywania stałej wysokości, co jest moim zdaniem niewystarczające w bardziej wymagających zastosowaniach ze względu na sprzężenia skrośne. Jeśli chodzi o regulator to jedynie do głowy przychodzi mi LQR, który zresztą był użyty w tym projekcie z filmiku. Inną opcją jest regulator rozmyty, ale nie do końca sobie wyobrażam jak miałby działać. 3. Autonomiczny start, zawis i lądowanie Jeśli chodzi o autonomiczność, to moim pomysłem jest zastąpienie sygnałów z odbiornika RC, przez sygnały wysyłane z drugiego mikrokontrolera. Nie wiem na ile takie rozwiązanie jest dobre i czy nie lepiej jest zastosować jeden mocniejszy mikrokontroler, natomiast, jako że jestem w posiadaniu arduino, taki pomysł nasunął mi się niejako samoistnie. Tutaj dochodzi kwestia czujników, bowiem chciałbym, żeby drugi mikrokontroler mógł obliczać pozycję wykorzystując jednostkę inercyjną MultiWii lub oddzielną, oraz dokładną wysokość, wykorzystując czujniki ultradźwiękowe HC-SR04. W późniejszej fazie projektu chciałbym użyć takich czujników do wykrywania przeszkód i generowania prostej mapy otoczenia.
×
×
  • Utwórz nowe...