Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'Kroczący'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino, ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 39 wyników

  1. Cześć wszystkim! Po dość długiej nieobecności na forum powracam z nowym projektem. Jest to robot kroczący, którego planowałem zrobić już od dwóch lat, ale nie miałem do tej pory czasu przez łączenie studiów z pracą. Do tego nie umiałem za bardzo zaprojektować mechaniki i dopiero niedawno mnie olśniło, że można kupić gotową Mechanika Robot ma cztery nogi, każda ma 3 stopnie swobody. Rozważam późniejsze dołożenie czwartego, bo jeszcze mi zostało serw, ale na razie zostawię go w tej konfiguracji. Do sklecenia konstrukcji użyłem platikowej obudowy jako korpusu i gotowych uchwytów na serwa przykręconych do siebie. Troszkę pójście na łatwiznę, ale ja wolę zajmować się częścią programistyczną Muszę jeszcze pomyśleć nad jakimiś końcówkami do nóg, bo na razie nie będą stabilne w każdej orientacji. Serwa to PDI-6221MG kupione na Banggood, ze względu na atrakcyjną cenę i jak na razie nie wydają się być złe. Staty: 0.16s/60°, 20kg*cm. Elektronika Układ zasilam przerobionym zasilaczem komputerowym. Na jego wyjściu mam 12V, żebym potem mógł to bezproblemowo zastąpić baterią LiPo. Napięcie jest potem obniżane na 5V do zasilania RPi i sterownika serw, oraz na 6V do zasilania serw. Układ jest zrobiony przez mojego brata i szczerze mówiąc nie wiem, co tam jest Rzekomo ma wydajność do 3A, przez co będę go w niedługim czasie zmieniał, mam już na oku przetwornicę na 15A, choć może jakąś mniejszą dam. W dodatku dzisiaj się przekonałem, że słabe kable potrafią naprawdę przeszkadzać: do zasilania RPi używałem zwykłych kabli do płytki stykowej, dopóki nie zauważyłem problemów z wyświetlaczem. Zmierzyłem napięcie na układzie zasilającym: 4.9V, zmierzyłem na RPi: 4.2V, zmierzyłem na kablach: 0.4V. Ich rezystancja była na tyle duża, że odkładały się tam niemałe napięcia, do tej pory myślałem, że to tylko teoretyczny problem, a tu proszę. Z tego powodu zasilam RPi w tym momencie z ładowarki do telefonu. Sterownik na 24 serwa też kupiłem na Banggood czy Aliexpress, tu jest opis. Komunikuje się po UART. Jeszcze nie robiłem mu testów wydajnościowych, ale nie wydaje się zły. Kupiłem specjalnie na większą liczbę serw, jakbym jeszcze chciał dołożyć nogom dodatkowe stopnie swobody albo dać jakiś manipulator na wierzchu. Mózgiem jest Raspberry Pi 3b, system to Ubuntu Core 64bit z Xubuntu. Do tego jest wyświetlacz dotykowy LCD 5" z obudową. Oprogramowanie Cały system planuję uruchomić na ROS2. Od razu ponarzekam, że ten system jest jeszcze w fazie dużego rozwoju i nie wszystkie funkcjonalności pierwszego ROSa są jeszcze zaimplementowane, m.in. odpalenie w pliku launch programów na kilku maszynach, z czego akurat chciałem skorzystać Mimo wszystko zdecydowałem się na ROS2, ponieważ ROS wspiera tylko Pythona 2, który traci wsparcie 1 stycznia 2020 (pythonclock.org/). Opiszę później w komentarzach kilka problemów w ROS2 i jak je rozwiązałem, bo dokumentacja praktycznie nie istnieje i może oszczędzi to komuś parę(naście) godzin w przyszłości. Ponadto, mimo iż na stronie jest napisane, że na RPi trzeba budować ROS2, bo paczki z repozytorium nie działają, mi się udało je zainstalować bez żadnego problemu. Jest tak może dlatego, że Ubuntu zainstalowałem w wersji ARM64 i to jakoś działa na ARMv7? Szkielet systemu mam mniej więcej zrobiony, bo w poprzednim semestrze na studiach miałem programowanie manipulatora w ROSie, będę musiał to jeszcze przeportować na ROS2 i trochę doszlifować. Udało mi się też już skomunikować z sterownikiem serw, choć nie jest to jeszcze idealne. Miałem też przy tym kilka problemów, wrzucę w komentarzu co i jak. Większość programów planuję uruchamiać na swoim laptopie i tylko sterowanie hardwarem na malince, żeby jej zbytnio nie obciążać. Może w przyszłości będę chciał bardziej usamodzielnić bota, wtedy mu dam może lepszy komputer i lżejszy system. Na wyświetlaczu planuję wyświetlać jakieś wizualizacje, aczkolwiek jeszcze nie wiem, czego Po napisaniu jakiegoś chodu chcę go sterować padem do gier. Plany na najbliższy czas Zmienić układ stabilizujący napięcie i kable Ustalić kąt 0 dla wszystkich serw Zrobić model robota w ROS Uruchomić kinematykę odwrotną (obliczaną geometrycznie) Zaimplementować prosty chód Końcówki do nóg Zacząć używać gita w tym projekcie i wrzucić kod na githuba Dalsze plany Kto to wie Ale chciałbym dać mu więcej samodzielności, mam sporo czujników w domu i wykrywanie przeszkód, czy gruntu pod nogami byłoby fajne. Chciałbym też zrobić własne zdalne sterowanie, na początku będę używał pada, ale mam też nakupione sporo joysticków i przełączników, jakbym chciał dołożyć różne bajery. Nawet mam lasery, więc włączanie ich też chcę zrobić Chciałbym też na nim pobawić się jakimiś sieciami neuronowymi i reinforcement learningiem, może jakaś nauka chodzenia, ale to już bardzo na przyszłość. Jak na razie to tyle, postaram się w miarę aktualizować tutaj postępy w pracach. Fajnie jest znowu robić robotykę Pozdro!
  2. Jakiś czas temu zacząłem się zastanawiać, czy da się zrobić kroczącego robota na dwóch serwach. Pooglądałem sobie parę filmików, i wyszło na to że owszem można - ale skręcanie będzie niemożliwe. Ponieważ zawsze uważałem, że niemożliwe to jest włożenie hełmu na lewą stronę (chociaż podobno jeden żołnierz udowodnił że jest to możliwe kiedy wrócił nażłopany z lewizny) - postanowiłem przeanalizować, co w istniejących konstrukcjach mi się nie podoba. No i nie spodobało mi się to, że robot mimo że przestawia sobie wszystkie nogi i tak się ślizga (nawet na trzech serwach nie da się chyba zrobic prawdziwego, precyzyjnego chodu). Postanowiłem więc, że ten "prawdziwy" chód będzie taki trochę z przymrużeniem oka, a ważniejsze jest wrażenie chodu (ech, lata pracy w teatrze lalek) i umiejętność manewrowania. Pierwszy robot powstał w ciągu praktycznie jednej nocy - niestety, trwałość konstrukcji ze spienionego PCW poklejonego czym się dało była znikoma. Co prawda Ciapek stoi mi na biurku i powoli wymieniam wszystkie elementy tak, aby doprowadzić go do stanu pełnej używalności, ale zawsze mam coś ważniejszego do zrobienia... Ostatnio ponieważ kupiłem kilka drobiazgów postanowiłem "pożyczyć" je do mniejszej wersji robota. Serwa były przeznaczone do kolejnej lalki, Arduino Pro Mini zawsze jakieś mi się w szufladzie pałęta, akumulatorek ma zasilać RPi Zero W, odżałowałem tylko parę drobnych elementów elektronicznych, parę śrubek i kilka metrów filamentu. Tak że mam przyjemność przedstawić Pseudopoda - czyli robota który co prawda tak naprawdę nie chodzi, ale skrzętnie ten fakt ukrywa Napęd robota stanowią dwa serwa Feetecha FS0307 - w stosunku do rozmiarów (najmniejsze jakie mi się udało znaleźć) mają całkiem niezły moment i prędkość. Jak widać, ruchoma jest tylko jedna (środkowa) para nóg, przednie i tylne służą jako podpory. Teoretycznie można stworzyć konstrukcję, w której będzie się ślizgać wyłącznie tylna noga podporowa, ale nie bardzo mi się chciało bawić w jakieś skomplikowane mechanizmy - szczególnie, że robot i tak pójdzie do demontażu. Mózg to Arduino Pro Mini, zasilanie - akumulatorek LiPo 980mAh plus przetwornica MT3608. Zmysłem robota jest pojedynczy czujnik TCRT5000L, który całkiem nieźle reaguje z całkiem sporej odległości (rzędu kilku-kilkunastu cm). Algorytm działania jest bardzo prosty: robot ma się szwendać po pokoju, co jakiś czas zmieniając sobie kierunek owego szwendania się a w przypadku napotkania na przeszkodę ma od niej odejść. Kod jest na tyle prosty, że zamieszczam go tu w całości. #include <Servo.h> #define VERT_PIN 10 #define HORIZ_PIN 11 #define INFRA_PIN 6 #define PHOTO_PIN A3 #define VS_ZERO 100 #define VS_MINI 85 #define VS_MAXI 125 #define HS_ZERO 80 #define HS_MINI 40 #define HS_MAXI 120 #define INFRA_STEP 40 Servo vservo, hservo; void setup(void) { pinMode(13, OUTPUT); pinMode(INFRA_PIN, OUTPUT); vservo.attach(VERT_PIN); hservo.attach(HORIZ_PIN); vservo.write(VS_ZERO); hservo.write(HS_ZERO); } enum { STEP_NO=0, STEP_FWD, STEP_BAK, STEP_LEFT, STEP_RIGHT}; uint8_t steptable[2][10]={ {VS_ZERO, VS_ZERO, VS_MINI, VS_MAXI, VS_MAXI, VS_MINI, VS_MAXI, VS_MINI, VS_MINI, VS_MAXI}, {VS_ZERO, VS_ZERO, VS_MAXI, VS_MINI, VS_MINI, VS_MAXI, VS_MAXI, VS_MINI, VS_MINI, VS_MAXI}}; void _step(int8_t lr, int8_t fwbr) { int i; hservo.write(HS_ZERO); delay(100); vservo.write(steptable[lr][2*fwbr]); delay(100); hservo.write(lr?HS_MAXI:HS_MINI); delay(100); #define SPP 7 for (i=1; i<=SPP; i++) { vservo.write(steptable[lr][2*fwbr]+ ((steptable[lr][2*fwbr+1] - steptable[lr][2*fwbr]) * i) / SPP); delay(40); } hservo.write(HS_ZERO); } void step(int8_t fwbr) { static int8_t s=0; _step(s,fwbr); s = !s; } int getPhoto(void) { int a; digitalWrite(INFRA_PIN,1); delay(5); a=analogRead(PHOTO_PIN); digitalWrite(INFRA_PIN,0); delay(5); a -= analogRead(PHOTO_PIN); a = a > INFRA_STEP; digitalWrite(13, a); return a; } bool rdz=0; void loop() { int i,n,m; n=random(8,12); for (i=0;i<n;i++) { if (getPhoto()) { if (!rdz) randomSeed(micros()); rdz=1; break; } step(STEP_FWD); } n=random(4,6); for (i=0;i<n;i++) { getPhoto(); step(STEP_BAK); } n=random(4,8); m=random(2) ? STEP_LEFT:STEP_RIGHT; for (i=0;i<n;i++) { getPhoto(); step(m); } } Tak swoją drogą ciekawe, czy da się zrobić pseudopoda z jednym serwem...
  3. Witajcie. Mam do zaprezentowania mój nowy projekt. Zdalnie sterowany robot kroczący z odbiornikiem podczerwieni. Jednostką centralną jest mikrokontroler ATmega8A-PU. Robot porusza się dzięki trzem serwomechanizmom TowerPro SG90. Inspiracją do sposobu chodzenia był robot kroczący Pololu. Robot posiada 6 niebieskich diod. Ich katody są połączone z odpowiednimi pinami mikrokontrolera, dzięki czemu steruję nimi w zależności od wykonywanego ruchu robota. Anody są połączone przez rezystor z nogami robota, te natomiast są połączone z potencjałem dodatnim zasilania. Jako pilota używam telefonu z androidem wraz z aplikacją RCoid. Korzystam ze standardu RC5. Kierunkami poruszania się robota są przód, tył, obracanie w lewo i prawo. Do zatrzymania robota służy dowolna inna komenda. Sterowanie serwomechanizmów odbywa się dzięki programowo stworzonemu PWM na 8 bitowym timerze mikrokontrolera. Tak wygląda kod przerwania od przepełnienia timera: ISR(TIMER0_OVF_vect) { static uint16_t cnt; if(cnt>=r) PORTC &= ~(1<<PC3); else PORTC |= (1<<PC3); if(cnt>=m) PORTC &= ~(1<<PC4); else PORTC |= (1<<PC4); if(cnt>=l) PORTC &= ~(1<<PC5); else PORTC |= (1<<PC5); cnt++; if(cnt>625) cnt = 0; } Zmienne r m i l odpowiadają za położenie poszczególnych nóg zmieniane w pętli głównej programu. Ich zakres mieści się od 17-76 (0.5ms-2.5ms) (0°-180°). Oczywiście zakres pracy jest mniejszy. Dla przykładu dobranymi wartościami dla nogi środkowej są 42 przy oparciu na lewej części, 44 pozycja środkowa, 46 oparcie na prawej części nogi. Zmienna licznika cnt jest porównywana z wartością 625, dzięki czemu uzyskuję częstotliwość 50Hz (8000000Hz/1/256/625=50Hz [20ms] [prescaler=1]). Jeżeli chodzi o kwestie zasilania to zdecydowałem się na użycie czterech zwykłych baterii AAA dających na wyjściu ~6V co zmusiło mnie do użycia przetwornicy Pololu S7V7F5 do zasilania mikrokontrolera. Diody i serwomechanizmy są zasilane bezpośrednio z baterii. Nogi zostały wygięte ze stalowego drutu o średnicy 1.5mm. Do orczyków zostały przymocowane za pomocą stalowego drutu o średnicy 0.3mm. Koniec każdej nogi zalałem gorącym klejem tak, aby zapobiec ślizganiu się robota na gładkiej powierzchni. Lista elementów: mikrokontroler ATmega8A-PU 3x serwomechanizmy TowerPro SG90 przetwornica Pololu S7V7F5 odbiornik podczerwieni TSOP31236 6x diody niebieskie rezonator kwarcowy 8MHz trytki i rurki termokurczliwe druty stalowe o średnicy 1.5mm, oraz 0.3mm płytka stykowa 170 otworów 4x baterie AAA z koszykiem parę rezystorów, kondensatorów i przewodów Zapraszam do śmiałego pisania swoich pytań, opinii i uwag Pozdrawiam, Karol
  4. Do budowy (już z kilka ładnych lat temu) czworonożnego robota w układzie ssaka zainspirowały mnie projekty Kolegi @deshipu, któremu w tym miejscu chciałbym podziękować za pomoc między innymi przy opracowaniu ramki chodu. Robot nazywa się "Garfield", powstał przy okazji "eksperymentów" z robotami kroczącymi. Muszę przyznać, że świetnie spełnia swoją podstawową funkcję, jaką jest przyciąganie uwagi mniej wtajemniczonej publiczności przy okazji różnych pokazów, szkolnych eventów itd. BTW - Aktualnie pracuję nad znacznie większym projektem, i zauważyłem, że zainteresowanie danym projektem osób niewgłębiających się w tajniki techniczne nie zawsze jest proporcjonalne do stopnia jego skomplikowania Przechodząc jednak do konkretów, na początek kilka zdjęć: Mechanika Mechanika robota jest wręcz banalna - jest to 8 serw SG-90, po 2 na każdą nogę. Cztery serwa, będące pierwszymi stopniami swobody u nóg, są przymocowane do płytki uniwersalnej za pomocą ciepłego kleju. Następnie do orczyków przykręcone są kształtki drukowane 3D, a na do drugiego końca przekręcone są serwa pełniące funkcję "kolan". Następnie do tych serw przyklejone są (znowu hot glue ) końcówki-stopy. Aby zwiększyć przyczepność, warto założyć tam jakieś odcinki gumowej rurki, ja akurat miałem modelarską, dostarczającą paliwo do silnika, bardzo dobrze sprawdziła się w tej roli. Korpus, jak wspomniałem wcześniej, tworzy płytka uniwersalna z całością elektroniki (o której za chwilę) 7x9cm; akumulator LiPol 2S 800mAh zamocowany jest pod spodem za pomocą 2 gumek-recepturek. Rozwiązanie to w tym konkretnym robocie sprawdziło się bardzo dobrze dzięki prostocie, pewności zamocowania i możliwości szybkiej wymiany źródła zasilania Elektronika Elektronika tego typu robota również nie należy do najtrudniejszych, bo jej głównym zadaniem jest kontrola 8 serw. Na początek zasilanie - dostarczeniem 5V potrzebnego do zasilania Arduino Nano i serwomechanizmów zajmuje się stabilizator LM7805 z radiatorem TO220 i dwoma kondensatorami. Wiem, że nie jest to idealne rozwiązanie, gdyż pobierając około 1A (w trakcie normalnej pracy) tracone jest (8V (gdy akumulator jest prawie naładowany) - 5V) * 1A = 3W mocy, a stabilizator ten przestaje działać przy napięciu wejściowym około 7V. Pierwsza wada powoduje, że stabilizator potrafi być gorący, a druga jest w pewien sposób plusem - nie jest możliwe rozładowanie ogniw poniżej słynnych 3V/celę Niemniej, przetwornica impulsowa byłaby pozbawiona tych wad, ale mój układ też działa. Dobrze, następnie napięcie wyjściowe trafia do Nano i serw, które są bezpośrednio z niego wysterowane. Ponadto, na płytce znajduje się też TSOP4838 wraz z elementami pomocniczymi, które pozwalają sterować robotem za pomocą podczerwieni - wykorzystałem do tego celu pilot od aparatu SONY, który zawiera kilkanaście przycisków, a ponadto jest mały i podręczny. Ponieważ na płytce zostało nieco wolnego miejsca, przylutowałem dwie diody 10mm, czerwoną i żółtą, coś w stylu oczu. Ostatnia sprawa - do połączenia akumulatora z płytką wykorzystałem złącze T-DEAN. Zdecydowałem się na takie rozwiązanie, ponieważ tego typu złącze mimo, że nieco przestarzałe, jest pewne i niezawodne - w każdym bądź razie, gdyby ktokolwiek chciałby kiedyś wymienić złącze w swoim akumulatorze LiPo, musi pamiętać o najwyższych środkach ostrożności. Oprogramowanie Program został napisany rzecz jasna w Arduino IDE, do sterowania serwomechanizmami wykorzystałem bibliotekę Servo, a do czujnika TSOP - IRremote. Linia danych z tegoż czujnika podłączona jest do pinu 2 w Nano, który potrafi obsłużyć przerwanie. Wówczas, za pomocą polecenia attachInterrupt() Arduino, gdy odbierze sygnał, modyfikuje wartość zmiennej przechowującej informację, jaki przycisk właśnie naciśnięto. Następnie na początku pętli loop() sprawdzane jest, jaką funkcję wybrał użytkownik, może być to ruch - w programie zapisane zostały ramki chodu naprzód, do tyłu, w lewo i prawo, a jeżeli jest to jakaś pozycja (typu złożony/rozłożony, korpus wysoko/nisko itd.), to prostu są to punkty, do których ustawić się mają końcówki nóg. Rzecz jasna nie podaję kątów, a punkty w układzie XY (kinematyka odwrotna) - brzmi to skomplikowanie i groźnie, a wcale tak nie jest - dla dwuwymiarowej płaszczyzny wystarczy znać tw. Pitagorasa i tw. cosinusów - nie różni to się zbytnio od znalezienia kątów w trójkącie o znanych długościach boku, a znacząco ułatwia programowanie ruchów w tego typu konstrukcjach. Obowiązkowy film To opis w dużym skrócie, gdyby ktoś miał jakiekolwiek pytania - proszę śmiało pisać Pozdrawiam, wn2001
  5. Pomysł budowy prostego robota dwunożnego wzorowanego na znanym i lubianym przez użytkowników Thingiverse projekcie Bob/Otto zrodził się kilka lat temu, również za sprawą projektu uBob Kolegi @deshipu, widzę też, że kilka dni temu swojego robota tego typu opisał Kolega @Leoneq . Swoją wersję nazwałem "Soto", ponieważ starałem się dodać coś od siebie, nie jest w moim stylu z automatu wydrukować pliki STL, złożyć, połączyć i gotowe Ale do rzeczy - na początek kilka zdjęć: Mechanika Wzorowałem się na tym projekcie - elementy nóg wydrukowałem oryginalne, natomiast główny korpus zaprojektowałem sam - jest powiększony (aby wszystkie elementy mogły się w nim zmieścić) oraz znacznie cieńszy (ścianka 2mm zamiast oryginalnych 5mm), a co za tym idzie - lżejszy. Oryginalny korpus był do tego stopnia za ciężki, że przy przechylaniu towarzyszącego chodzeniu przeważał całość, w wyniku czego robot dość mało efektownie przewracał się Serwa to oczywiście SG-90, każda noga ma dwa stopnie swobody, co razem daje 4 takie. Robot ślizgał się po pewnych powierzchniach, konieczne było podklejenie stóp drobnoziarnistym papierem ściernym. Za materiał do druku posłużył biały filament PLA, a za mocowanie serw i orczyków odpowiadają ciepły klej i/lub śrubki/wkręty M2. Ponadto w obudowie znalazło się miejsce na czujnik HC-SR-04, ale imituje on jedynie oczy. Co ważne jeszcze z mechaniki, całość elementów wewnątrz starałem ułożyć możliwie jak najniżej, gdyż gwarancją stabilności chodu w tego typu bipedach jest położony nisko i symetrycznie środek ciężkości. Elektronika Za zasilanie robota odpowiada LiPol 1S 3,7V - serwa, Arduino Pro Mini i moduł BlueTooth HC-05 zasilane są bezpośrednio tym napięciem, oczywiście serwa są wówczas nieco słabsze, ale w niczym to nie przeszkadza. Za ładowanie akumulatora odpowiada gotowy moduł służący do ładowania tego typu ogniw. Jak wspomniałem, sercem robota jest Pro Mini, steruje czterema serwomechanizmami oraz komunikuje się z modułem BlueTooth. Nie ma nic skompilowanego w schemacie połączeń, dodam może tylko, że z tyłu robota znajduje się przełącznik, a ładowanie odbywa się za pomocą gniazda USB umieszczonego u dołu, w związku z czym nie ma konieczności zdejmowania obudowy, aby dostać się do akumulatora Oprogramowanie Główny fragment kodu oparty jest na funkcji sinus - podczas chodu nogi niejako "wiosłują". Program to klasycznie odbieranie danych z softwarowe'go portu szeregowego i wykonywanie komend robot może podskakiwać, piszczeć brzęczykiem piezo, przyjmować różne pozycje nóg, a także napisałem choreografię do pewnego utworu muzycznego, który jest równolegle odtwarzany z tabletu. Właśnie, aplikację na Android wykonałem przy pomocy App Inventor'a i jednego z wielu tutoriali na ten temat dostępnych na YouTube. Film - z góry przepraszam za pionową pozycję telefonu (dla ścisłości - początkowa muzyka to podkład, późniejsza (0:38) natomiast odtwarzana jest przez tablet) To na tyle jeśli chodzi o zwięzły opis - jeżeli ktoś chciałby wiedzieć coś więcej, proszę pisać Pozdrawiam, wn2001
  6. Po zbudowaniu robota czworonożnego w układzie ssaka (robot "Garfield") chciałem spróbować zbudować coś w układzie gada. Zdecydowałem wykorzystać jako bazę wyjściową robota MiniKame, którego pliki STL i instrukcja złożenia dostępne są na Thingiverse. Jak łatwo zauważyć wyżej wymienione układy cechuje różnica w płaszczyźnie obrotu drugiego stopnia swobody względem pierwszego - dla ssaka jest to jedna, dwuwymiarowa płaszczyzna XY, dla gada ułożenie tych płaszczyzn jest prostopadłe - aby lepiej je zilustrować, zacznę od zdjęć: Mechanika Jak wspomniałem, wyszedłem z gotowego projektu, ale nie chciałem bezmyślnie wydrukować części, zmontować, wgrać wsadu i cieszyć się gotowym robotem. Zacząłem od zmodyfikowania głównego korpusu, ponieważ oryginał jako zasilania używa dwóch akumulatorów litowo-jonowych 18650 oraz gotowej płytki - kontrolera serwomechanizmów, a całość zamykana jest w dwuczęściowej obudowie. Zachowałem pierwotne wymiary (rozstaw otworów), dodałem szczelinę, do której wsuwany jest akumulator LiPol 2S 800mAh i otwory mocujące tradycyjnie już płytkę uniwersalną 5x7cm. Elementów nóg nie zmieniałem, dodam tylko, że są nieco trudne w drukowaniu, potrzebne są liczne podpory. Drukowane 3D są również pomarańczowe dystanse mocujące płytkę rozpoznającą głos, ale o niej za chwilę. Jeśli chodzi o napędy, ku zaskoczeniu wszystkich są to serwomechanizmy SG-90 Elektronika Jeśli ktoś czytał mój poprzedni wpis, również nie będzie zaskoczony - wykonałem własny sterownik serw, klasycznie Arduino Nano + stabilizator LM7805 - wiem, że nie jest to idealne i najlepsze rozwiązanie, ale działa Akumulator z płytką łączy JST-BEC - z przodu płytki wyprowadziłem złącze UART do płytki-modułu rozpoznającego dźwięk (jeżeli ktoś jest zainteresowany szczegółami, wiele informacji znajdzie pod hasłem "Arduino voice recognition", a sam moduł funkcjonalnością podobny jest do produktu SparkFun'a - identycznego należy szukać na chińskich portalach aukcyjnych ). Podstawową zaletą płytki jest jej prostota obsługi i działanie off-line, wadą zaś konieczność powtórzenia polecenia niekiedy kilkukrotnie. Moduł działa na zasadzie "nagrania" wzorców (maksymalnie 7, wystarczy zrobić to raz) w trybie nauki, a następnie, w trybie czuwania, po wykryciu dźwięku (moduł porównuje to, co otrzymuje mikrofon, z tym, co zapisał w pamięci, zatem rozpoznaje jedynie głos właściciela) przesyła przez UART informację typu "wykryto komunikat 1". Robot obsługuje komendy: naprzód, do tyłu, w lewo, w prawo, skacz, tańcz, pompki. Aha, jeszcze jedna sprawa - skuteczność rozpoznawania spada drastycznie przy nawet minimalnym szumie, stąd konieczność uciszenia widowni i wyłączenia wentylatora czy klimatyzacji. Niemniej moduł, który był głównym elementem mojej modyfikacji, okazał się bardzo udanym i efektownym pomysłem jak na swoją cenę (około 200PLN). Zastosowałem jeszcze jedną sztuczkę - kiedy robot chodzi, niemożliwe jest rozpoznanie komunikatu typu "stop", dlatego z przodu zamontowałem czujnik Sharp'a 4-30cm - kiedy przyłożę rękę, robot zatrzymuje się i mogę wydać kolejne polecenie Oprogramowanie W kwestii oprogramowania ponownie nie ma nic odkrywczego, moja praca polegała głównie na skomunikowaniu Arduino-moduł Voice Recognition przez UART (software'owy), autorzy udostępnili gotowe schematy i bibliotekę, która zawiera gotowe sekwencje chodu i innych ruchów (wspomniane skoki, pompki i taniec) - poniżej film Pozdrawiam, wn2001
  7. To mój pierwszy post na tym forum ale od razu chciałbym przedstawić zbudowanego przeze mnie robota. Mimo że to pierwszy post to odwiedzałem to i inne fora wielokrotnie w poszukiwaniu przydatnych informacji i wykorzystując jedynie „magiczny” guzik szukaj udało mi się rozwiązać większość problemów z budową. To dla tych którzy nie chcą i nie lubią szukać… Wracając jednak do robota to został on nazwany X-walker i jest czteronożnym robotem kroczącym o symetrycznej konstrukcji. Został zaprojektowany jako robot którego zadaniem będzie przejście po nieznanym terenie przy jednoczesnym zachowaniu równowagi i odpowiednim położeniu korpusu. Prace nad robotem aktualnie się zakończyły, aczkolwiek temat jest obszerny i wiele można jeszcze ulepszyć albo dodać, więc w przyszłości robot zostanie poddany kolejnym modyfikacją. 1.Budowa mechaniczna Konstrukcja mechaniczna robota została zaprojektowana przy użyciu programu Autodesk Inventor 2010. Program ten umożliwił stworzenie wirtualnego modelu robota oraz przetestowanie zależności mechanicznych występujących pomiędzy jego elementami. Dzięki temu wybrano optymalne wymiary poszczególnych części. Poniżej na rysunku 1 zaprezentowano projekt robota z programu Inventor (bez elektroniki oraz okablowania): Na materiał konstrukcyjny wybrano aluminium jako, iż posiada odpowiednią wytrzymałość, jest przy tym lekkie i nadaje się do obróbki za pomocą prostych narzędzi. Zaprojektowane elementy wycięto przy pomocy lasera z 1.5mm i 2mm arkuszy aluminium. Poniżej przedstawiono wycięte elementy: Dalszy etap prac polegał na odpowiednim ukształtowaniu niektórych części. Proces ten odbywał się ręcznie przy udziale odpowiednich kopyt wykonanych z drewna bukowego i stali. Następnie dokonano montażu elementów przy pomocy różnego rodzaju łączników śrubowych o średnicach od 2 do 4mm. Dodano także inne elementy, takie jak tulejki dystansowe czy części składowe stóp ze zintegrowanymi czujnikami stykowymi. Na kolejnym rysunku przedstawiono złożonego robota: Poniżej przedstawiono szczegóły budowy stopy: Napęd robota stanowi 12 serwomechanizmów Power HD 1201 o parametrach przedstawionych poniżej (dane producenta): - moment 12.2/13.2 kg/cm - prędkość 0.16/0.14 sec/60° - napięcia 4.8/6.0 V - waga 60 g - wymiary 40.7 x 20.5 x 39.5 mm Niestety niektóre dane obiegają od wartości rzeczywistych, szczególnie wartość momentu, ale co ciekawe nawet wymiary nie są zgodne z rzeczywistymi. Podsumowując, konstrukcja mechaniczna robota posiada kilka charakterystycznych cech: - zwarta i solidna konstrukcja - podwójne łożyskowanie wszystkich stawów - zintegrowane czujniki stykowe w stopach - całkowita rozbieralność konstrukcji – tylko połączenia śrubowe - możliwie najmniejsze wymiary przy zastosowaniu danych elementów wyposażenia robota - liczne otwory odciążające konstrukcję 2. Elektronika Część elektroniczna robota posiada budowę modułową. Każdy moduł zawiera mikrokontroler AVR i pełni odpowiednie dla siebie funkcje. Każdy posiada także odpowiednio multipleksowane wyprowadzenie ISP, co pozwala programować moduły podczas ich działania. Moduły stanowią odrębne jednostki elektroniczne i można ich używać oddzielnie nie koniecznie w robocie X-walker. Do komunikacji między sobą wykorzystują SPI. Takie rozwiązanie nie ogranicza w dalszej rozbudowie robota i pozwala stale dodawać nowe elementy i funkcje. Poniżej scharakteryzowano poszczególne moduły. 2.1. Moduł sterujący „BRAIN” Jest głównym modułem w robocie, zawiaduje działaniem pozostałych. Został oparty na mikrokontrolerze ATmega 16A z kwarcem 16MHz. Posiada wyprowadzone piny z magistralą I2C i SPI, wyświetlacz LCD oraz 2 dodatkowe przyciski na potrzeby przyszłych funkcji. Poniżej krótka charakterystyka: - arbiter magistrali SPI - komunikacja z akcelerometrem i żyroskopem poprzez I2C - Realizacja filtru Kalmana w celu wyznaczenia aktualnego pochylenia robota - obsługa wyświetlacza LCD - nadzorowanie pracy innych modułów - formowanie odpowiednich ramek danych do komunikacji z PC 2.2. Moduły sterowników serw Robot posiada dwa takie same moduły sterowników serw, każdy obsługuje 6 serwomechanizmów, czyli 2 nogi robota. Moduły także oparte są o mikrokontroler ATmega 16A na kwarcu 16MHz. Najważniejszymi funkcjami tych modułów jest oczywiście generowanie odpowiedniego sygnału PWM dla serwomechanizmów, ale także obsługa czujników stykowych i pomiar napięć na potencjometrach serw (dodatkowy przewód wychodzący z każdego serwa). Ta ostatnia cecha służy sprawdzeniu czy serwomechanizm jest rzeczywiście wychylony od taką wartość jaką wyznacza sterowanie, co jest przydatne w pracy przy dużym obciążeniu. Należy dodać, że sygnały analogowe z potencjometrów przed dotarciem do tych modułów przechodzą przez filtr analogowy. 2.3 Moduł nadawczo odbiorczy „BT_RX_TX” Moduł ten jest odpowiedzialny za obsługę dwóch modułów bluetooth, jednego wysyłającego a drugiego obierającego dane z komputera. Dane przychodzące są odpowiednio filtrowane. W module zastosowano mikrokontroler ATmega 8A oraz kwarc 14.745MHz odpowiedni do transmisji szeregowej. Standardowo w module instaluje się dwa moduły bluetooth BTM-222. Poniżej zdjęcie przedstawiające moduł zamontowany w robocie: 2.4. Moduł zasilający "POWER" Robot jest zasilany dwoma zestawami akumulatorów. Pierwszy większy zestaw (2x LiPo 1850 mAh 7.4V) zasila serwomechanizmy, drugi mniejszy (LiPo 850 mAh 7.4V) zasila układy elektroniczne. Moduł zasilający monitoruje wartości napięć poszczególnych akumulatorów a także mierzy prąd jaki zużywają napędy robota. Zajmuje się także stabilizacją napięć – 5V dla elektroniki i poprzez stabilizator impulsowy (niewidoczny na zdjęciach) 5.3V lub 6V dla serwomechanizmów. Moduł zasilający posiada budowany układ dźwiękowy sygnalizujący niski stan napięcia w akumulatorach. Zajmuje się także monitorowaniem temperatury w istotnych miejscach robota za pomocą magistrali 1-wire oraz czujników DS18b20. Te miejsca to: stabilizator impulsowy dla serw, stabilizator liniowy dla elektroniki, temperatura w serwomechanizmie „udowym”, temperatura otoczenia. Zdjęcie użytego zasilacza impulsowego oraz zdjęcie robota po zamontowaniu modułu "POWER". Widoczny radiator stabilizatora liniowego elektroniki: 2.5 Pozostałe moduły Moduł żyroskopu Zawiera żyroskop cyfrowy L3G4200D oraz kilka elementów elektronicznych niezbędnych do jego działania . Na zdjęciu widać poprawiony błąd na PCB. Praktyczniej było to zrobić w ten sposób niż zmieniać całą płytkę bo wiązałoby się to z ponownym lutowaniem obudowy LGA żyroskopu. Moduł akcelerometru Zawiera akcelerometr (i magnetometr) cyfrowy LSM303DLH oraz tak jak moduł żyroskopu kilka elementów elektronicznych niezbędnych do jego działania. IMU - interial measurmet unit Moduł IMU czyli tzw. interial measurmet unit złożony i zamontowany w całości wraz z konwerterami napięć dla sygnałów magistrali I2C Moduł filtrów analogowych RC (2 sztuki) Filtruje napięcia na potencjometrach serw aby można było je prawidłowo zmierzyć poprzez wbudowane w mikrokontrolerach przetworniki ADC 3. Sterowanie X-walker jest sterowany za pomocą komputera PC i odpowiedniej aplikacji. Zastosowanie dwóch modułów Bluetooth pozwoliło na szybkie przekazywanie danych w obu kierunkach i uzyskanie kroku sterowania na poziomie 40ms. Czas ten nie jest niestety gwarantowany z racji zastosowania protokołu Bluetooth, aczkolwiek robot porusza się płynnie i reaguje błyskawicznie na zmiany sterowania. W jednym cyklu sterowania od robota odbierane są odpowiednie dane, wyliczane jest sterowanie i dane ponownie wysyłane są do robota. Na ekranie komputera możemy obserwować dane generowane przez wszystkie moduły robota jak również aktualne położenie środka ciężkości robota względem jego stóp z naniesionym wielokątem podparcia (obraz poniżej) Po wybraniu odpowiednich ustawień chodu robota oraz prędkości poruszania się następuję połączenie z robotem. O tej pory możemy nim sterować: chód przód, tył, na boki oraz obroty w lewo prawo. Wszystkie inne „akcje” związane z chodzeniem po trudnym terenie robot podejmuje sam. Na filmach poniżej można więc zaobserwować jak przekłada nogę w celu znalezienia odpowiedniego miejsca do położenia jej bądź też ratuje się przed wywrotką po obsunięciu się którejś z nóg. Innych elementów prawdopodobnie nie widać na filmach a mianowicie robot dba cały czas o odpowiednie usytuowanie środka ciężkości tym samym zapewniając sobie stabilność. Każdorazowo dobiera odpowiednie przemieszczenia nóg wzdłuż wszystkich osi oraz przemieszczenie korpusu. Korpus robota jest pozycjonowany automatycznie za sprawa sterowników PID które wyliczają sterowanie na podstawie danych z żyroskopu i akcelerometru przetworzonych przez filtr Kalmana. Wysokość korpusu nad ziemią także jest ustalana przez odpowiedni algorytm. Dodatkowo robot pilnuje aby każda noga która w danej fazie chodu ma spoczywać, w przypadku utraty podłoża „znalazła” nowe poprzez systematyczne obniżanie jej. Opis powyżej przedstawia pokrótce sposób w jaki sterowany jest robot, aczkolwiek nie zawiera wszystkich szczegółów. Zostały wymienione tylko główne funkcje algorytmów sterujących. Zdaje sobie sprawę że opis ten może być ciężki do zrozumienia, ale nigdy nie miałem talentu do opisywania tego co robie, więc śmiało można pytać i będę się starał rozwiewać wątpliwości oraz uzupełnić opis w miarę możliwości. Na koniec jeszcze kilka zdjęć i filmy: Kinematyka odwrotna: Kontrola przechyłu korpusu: Chodzenie po nierównym terenie: Chodzenie po ruchomej równoważni: I jeszcze coś w HD, łażenie po kamyczkach:
  8. Witam serdecznie, Chciałbym zaprezentować mój projekt którym jest czworonożny robot kroczący sterowany za pomocą kolna arduino - nano V3. Głównym celem powstania tej konstrukcji było zabicie wolnego czasu oraz wykorzystanie nowo zamówionych części. Cały proces tworzenia od koncepcji do gotowego czworonoga trwał poniżej tygodnia. Funkcjonalność robota skupiała się na chodzeniu do przodu oraz pokonywaniu małych przeszkód. Elektronika Do stworzenia projektu potrzebny był kontroler - wspomniane już wcześniej arduino nano lub jego klon. W mojej opinii jest to najbardziej użyteczne arduino do projektów DIY, ze względu na jego małą wielkość i masę oraz identyczne możliwości obliczeniowe jak jego więksi bracia. Arduino zostało zamontowane na płytce rozszerzającej z wieloma wyprowadzeniami dla serw i nie tylko. Ten element jest bardzo uniwersalny i ułatwia podłączenie wielu komponentów bez potrzeby tworzenia odpowiedniej płytki PCB lub używania płytki stykowej. Motoryka została oparta o małe serwomechanizmy - po dwa na nogę, łącznie 8 sztuk. Dodatkowo na końcach nóg zostały zamontowane czujniki krańcowe w celu wykrywania kolizji z podłożem i optymalizacji ruchu. Siła serwomechanizmów okazała się być wystarczająca, jednakże, problemem okazało się być zasilanie. Duża ilość serwomechanizmów działających jednocześnie mocno obciąża arduino, dlatego też, serwomechanizmy powinny mieć własne źródło zasilania. W tym przypadku ograniczenie prędkości ruchów ograniczyło ten problem, ale wskazuje to na popełniony przy projektowaniu błąd. Konstrukcja Konstrukcja składa się z korpusu głównego do którego przymocowano arduino oraz 4 nóg. Jedna noga składa się z dwóch segmentów, a jeden segment z dwóch elementów łączonych śrubą. Lepiej wyjaśni to poniższe zdjęcie. Robot jest tu przedstawiony leżący na swoich plecach. Poniżej znajdują się jeszcze dwa zdjęcia pokazujące jego posturę. W pozycji leżącej, ze wszystkimi nogami skierowanymi względem siebie pod kątem prostym, robot ma przekątną około 30 cm. Powyższe elementy zostały wydrukowane przy pomocy drukarki 3D. Trwało to około 10 godzin. Kod Ze względu na krótki czas rozwoju projektu, jego funkcjonalność nie jest duża. Postało kilka wersji programu, dopasowanych do konkretnego podłoża. Nie różnią się one znacząco, więc przedstawię główny program służący do pokonywania płaskiego terenu w najszybszy i najstabilniejszy sposób. Na początek trochę definicji. Zmienne nazwane są od numeru nogi oraz jej stopnia. Przykładowo tl1 - top-left-1, oraz br2 - bottom-right-2. #include <Servo.h> Servo tr1; Servo tr2; Servo tl1; Servo tl2; Servo br1; Servo br2; Servo bl1; Servo bl2; #define br A1 #define tr A2 #define tl A3 #define bl A4 int i=0; int o=50; int p=20; int h=70; int t=10; int k=0; int l=0; int n=0; int m=0; int timer=0; int d=0; int x=50; int y=50; void setup() { Serial.begin(9600); pinMode(A1, INPUT_PULLUP); pinMode(A2, INPUT_PULLUP); pinMode(A3, INPUT_PULLUP); pinMode(A4, INPUT_PULLUP); tl1.attach(8); tl2.attach(4); bl1.attach(9); bl2.attach(5); tr1.attach(10); tr2.attach(6); br1.attach(11); br2.attach(7); tr1.write(90); tr2.write(75); tl1.write(90); tl2.write(90); br1.write(90); br2.write(90); bl1.write(90); bl2.write(90); } Kolejnym elementem kodu są definicje funkcji. void ltl(int a, int b){ tl1.write(map(a+3, 0, 100, 10, 150)); tl2.write(map(b, 100, 0, 5, 180)); } void ltr(int a, int b){ tr1.write(map(a, 100, 0, 30, 170)); tr2.write(map(b-9, 0, 100, 0, 177)); } void lbl(int a, int b){ bl1.write(map(a, 0, 100, 30, 150)); bl2.write(map(b+1, 0, 100, 0, 178)); } void lbr(int a, int b){ br1.write(map(a, 100, 0, 30, 150)); br2.write(map(b+4, 100, 0, 8, 180)); } void move(){ lbr(100-i,100-k-d); i++; if(i==100){ i=0; k=y; } if(k>0){ if(digitalRead(br)==HIGH){ k--; } } lbl(100-o,100-l-d); o++; if(o==100){ o=0; l=y; } if(l>0){ if(digitalRead(bl)==HIGH){ l--; } } ltr(100-p,100-n-d); p++; if(p==100){ p=0; n=x; l=l+10; k=k+10; } if(n>0){ if(digitalRead(tr)==HIGH){ n--; } } ltl(100-h,100-m-d);; h++; if(h==100){ h=0; m=x; k=k+10; l=l+10; } if(m>0){ if(digitalRead(tl)==HIGH){ m--; } } delay(t); } Przykładowo, nazwa funkcji ltl oznacza leg-top-left i służy do ujednolicenia określania położenia nogi, gdyż niektóre serwa położone są przeciwnie i wysoka wartość sygnału PWM oznacza dla nich przeciwne położenia. Funkcja move to gówna funkcja służąca do poruszania się. Działa ona tak, że wszystkie nogi poruszają się cały czas do tyłu, jednakże, początkowe położenia wszystkich nóg są różne. Gdy noga poruszając się do tyłu dojdzie do płożenia końcowego, podnosi się ona i przemieszcza do maksymalnego płożenia do przodu, wtedy zbliża się ona do podłoża aż do napotkania oporu odebranego przez czujnik krańcowy lub osiągnięcia pozycji maksymalnej, wtedy porusza się znów do tyłu. W ten sposób wszystkie nogi cały czas znajdują się w ruchu, który jest bardzo płynny. Brak 3 stopnia swobody w nodze wpływa jednak na to, że ślizganie jest nieuniknione. Ostatnia część kodu służy jedynie do egzekwowania funkcji move pod pewnymi warunkami. void loop() { if(analogRead(br)==LOW or analogRead(tr)==LOW or analogRead(bl)==LOW or analogRead(tl)==LOW && timer<50){ timer=200; } timer--; if(timer>0){ move(); }else{ lbl(50,50); lbr(50,50); ltl(50,50); ltr(50,50); } } Kod w funkcji loop powoduje również, że w razie podniesienia robota na pewien czas, przestaje on dalej iść. Gdy robot zostanie podniesiony, żaden czujnik krańcowy nie sygnalizuje, że stoi na ziemi, powoduje to spadek licznika timer do 0 i przejście robota w stan spoczynkowy, aż do aktywacji przez ponowne wciśnięcie któregoś czujnika. Gotowy robot Poniżej przedstawiam kilka zdjęć z postępu składania konstrukcji. Niestety nie posiadam dużo zdjęć tego projektu, gdyż serwa i mikrokontrolery szybko zmieniają u mnie właściciela. Podczas testów robot pokonał najwyższy próg o wysokości nieco ponad 4 cm. Może nie jest to imponująca wartość, ale biorąc pod uwagę, że nie może on biegać ani skakać, a maksymalna wysokość własna na jakiej znajduje się jego korpus wynosi około 4,5 cm jest to taki sam wyczyn jak pokonanie przez człowieka, z marszu, przeszkody sięgającej mu do pasa. A tu jeszcze jedno zdjęcie gotowego projektu (słaba jakość, klatka z filmu). Pozdrawiam, i czekam na pytania i porady.
  9. To jeden z moich kroczących robotów nad którym pracuję od dłuższego czasu, z przerwami. Wzorowany jest na mini-czołgach z serii video Ghost in the Shell Arise, może poruszać się zarówno na kołach, jak i kroczyć. W miarę możliwości jest wykonany z przezroczystych materiałów, aby przypominać włączony kamuflaż optyczny, w który filmowe czołgi są wyposażone. Robot powstał z wcześniejszego projektu kroczącego robota, opisanego tu w wątku ([Kroczący] Katka, czworonożny robot w układzie ssaka), ale postanowiłem założyć dla niego osobny wątek, gdyż różni się już znacząco od początkowej konstrukcji. Mechanicznie robot posiada 4 nogi o 2 stopniach swobody każda, poruszane serwami SG90, do tego na końcach nóg ma serwa ciągłej rotacji z kółkami od podwozia dla modeli samolotów. Dodatkowo ma jeszcze trzy serwa SG90 -- jedno do poruszania "okiem", oraz dwa do poruszania "rękoma". Do kontrolowania serw służy Arduino Pro Mini 3.3V, zasilanie z pojedynczego ogniwa LiPo. //Treści wydzielone z workloga: Dobra, serwa przyszły, trochę kleju i gotowe. Tryb kołowy: Tryb pieszy: Niestety nie udało się tych kółek zamontować pod takim kątem, pod jakim chciałem -- skręcanie będzie trochę trudniejsze. Teraz "tylko" to wszystko oprogramować... No i dorobić wszystkie ozdoby, żeby wyglądało jak z serialu. Zastanawiam się jeszcze, czy czasem nie dać po dwóch serwomechanizmów na ten sam sygnał, wtedy będę miał dwa wolne serwa, jedno na "oko" i jedno na machanie "rączkami".
  10. Witam wszystkich. Mam na imię Artur i chciałbym zaprezentować robota (hexapod), zaprojektowanego i skonstruowanego przeze mnie który nazywa się Krzyżak. Na zdjęciu po lewej Krzyżak wersja pierwsza, prototypowa zaś po prawej wersja udoskonalona. Dwa filmy: Opis robota: - 6 nóg po 3 serwa czyli 18 serw (najtańsze jakie istnieją czyli SG90) - mikrokontroler Atmega328 taktowana kwarcem 20MHz. - oprogramowanie C + AVR - zasilanie akumulator 7,4V 800mAh, 10C (10 minut chodzenia) - sterowanie bluetooth za pomocą telefonu z Android - autorska aplikacja (min. Android 4.0) Aktualnie pracuję nad rozszerzeniem o sensory i omijanie przeszkód. Płytkę elektroniczną zaprojektowałem z myślą o wyprowadzeniach rejestrów do przyszłego podłączenia czujników itp. Jak ktoś ma pytania bardziej szczegółowe chętnie odpowiem. Docelowo robot będzie możliwy do kupna już niebawem. Dziękuję za uwagę, Artur
  11. Ten robot był eksperymentem w kilku dziedzinach jednocześnie. Po pierwsze, jest to mój pierwszy skończony dwunożny robot kroczący. Po drugie, jako mózgu użyłem nowego wówczas układu ESP8266. Po trzecie, po raz pierwszy użyłem sub-micro-serwa zasilane napięciem 3V. Na koniec, nawet obudowa była eksperymentem, sprawdzającym jak dobrze plastik ze starych opakowań nadaje się do tego celu. Później dla tego własnie robota wytrawiłem swoją pierwszą płytkę drukowaną. Ostatnim eksperymentem, który się niestety już nie powiódł, było użycie optycznego cyfrowego czujnika odległości, który z jakiegoś powodu okazał się nie działać. Ale do rzeczy. Robot ten bardzo mocno bazuje na projekcie znanym ogólnie jako "Bob" (http://www.robotrebels.org/index.php?topic=11.0). W zasadzie jest to moje podejście do zrobienia jego miniaturoej, pomniejszonej wersji. Niestety nie posiadałem dostępu do drukarki 3D, żeby zrobić obudowę i szkielet, zatem podszedłem do tematu tak jak zwykle -- zlepiając ze sobą losowe części i lutując wszystko "na pająka". Wyszło mi coś takiego: Dużym wyzwaniem były gniazdka do serw, bo ich rozstaw nóżek to 1.27mm. Moduł ESP8266, którego użyłem, ma rozstaw padów 2mm, więc już trochę łatwiej. Diody świecące dodałem, żeby widzieć czy robot jest włączony czy nie. Stopy są wycięte ze starej karty kredytowej. Gumka recepturka przytrzymuje baterię. Zadowolony z tej konstrukcji, postanowiłem zrobić do niej obudowę ze starego opakowania (tak zwanego "blistera") po gamepadzie. Wyciąłem z niego kawałek w miarę płaskiego plastiku, narysowałem na nim siatkę pudełka, wyciąłem i skleiłem Kropelką. Po dopasowaniu do robota powycinałem otwory. Potem dokleiłem trochę kawałków starych zabawek do ozdoby... Z czasem wymieniłem stopy na wykonane z takiego samego materiału jak obudowa i dodałem robotowi moduł ładowania baterii (jest to pojedyncze LiPo, więc dość łatwo je ładować). Do programowania wykorzystałem powstający wówczas dopiero firmware NodeMCU dla ESP8266, który pozwolił mi oskryptować wszystko w Lua. Było to bardzo wygodne, gdyż mogłem na żywo testować kod w konsoli, na którą po prostu łączyłem się telnetem. Przy okazji próby używania PWM do kontrolowania serwomechanizmów, znalazłem dwa błędu w NodeMCU, które zostały szybko poprawione (https://github.com/nodemcu/nodemcu-firmware/issues?q=is%3Aissue+author%3Adeshipu+is%3Aclosed). Jest tu zastosowany jeden trik, gdyż NodeMCU obsługuje co najwyżej 3 kanały PWM (zrobili to do kontroli diody RGB), a ten robot ma 4 serwomechanizmy. Otóż dwa z tych serwomechanizmów sterowane są tym samym sygnałem i zawsze mają tę samą pozycję -- to nie przeszkadza przy tym sposobie chodzenia, jaki ma ten robot: W tym stanie robot postał na półce jakiś rok -- zabrałem go na dwie konferencje, żeby się pochwalić. Niestety, po powrocie z ostatniej przestał działać -- urwał się jeden z padów na ESP8266, do których przylutowane były druciki. Niestety nie dało się tego naprawić bez praktycznego przebudowania całego robota, więc robot sobie leżał i czekał na lepsze czasy. Lepsze czasu nadeszły, gdy kupiłem odczynniki do trawienia płytek i postanowiłem spróbować w tym swoich sił. Zrobiłem płytkę dla naszego bohatera: A w zasadzie całą serię płytek, gdyż nie udało mi się jej poprawnie wytrawić za pierwszym razem: W końcu udało się zrobić coś, co miało większość potrzebnych połączeń i wywiercić w tym otwory, łamiąc przy tym tylko trzy wiertła. Po zlutowaniu całości, tak jak wspomniałem wcześniej, czujnik odległości okazał się nie działać, ale robot nadal chodzi i do tego teraz może mrugać oczami: Być może jeszcze kiedyś wrócę do tego projektu i spróbuję uruchomić ten czujnik, albo użyć innego. Mógłbym też znacznie rozszerzyć jego repertuar zachowań, na przykłąd nauczyć go tańczyć. Ogólnie z robota jestem bardzo zadowolony, dostarczył mi naprawdę wiele zabawy przy budowie i nauczył przy tym dużo, choć jest to chyba projekt przy którym jak dotychczas napsułem najwięcej komponentów (w sumie dwie płytki esp8266, jeden sensor optyczny, który zniszczyłem przy lutowaniu, milion nieudanych płytek, wiertełka). __________ Komentarz dodany przez: Treker 1 - Poprawiłem temat, w którym nie działał encja µ. 2 - Typ robota należy wybierać z listy rozwijanej zamiast wpisywać go ręcznie. 3 - Opisy robotów muszą zawierać jedno zdjęcie w załączniku, które jest prezentowane w katalogu robotów oraz na stronie głównej. Tym razem poprawiłem, pamiętaj proszę na przyszłość o tych zasadach. [ Dodano: 14-10-2015, 11:06 ] 1 - Nie lepiej by było naprawić forum tak, żeby działała? 2 - Nie widziałem tam nigdzie listy rozwijanej. UPDATE: Już widzę, jest na szaro po stronie etykiety pola, musiałem jakimś cudem przeoczyć, przepraszam. Jakoś mogę to naprawić? 3 - Jestem pewien, że załączyłem jedno zdjęcie jako załącznik, własnie tak, jak piszesz. Nie mam pojęcia czemu się to nie pojawiło. Poprawiłem teraz.
  12. Cześć, Od jakiegoś czasu już się zbierałem do opisu konstrukcji. Hexapod, jak sugeruje nazwa, ma 6 nóg i chodzi . Powstał jako projekt 3-osobowego zespołu w ramach koła naukowego w ciągu ostatnich 4 miesięcy. Mechanika 12 stopni swobody, Hitec HS 645MG. Konstrukcja z blachy aluminiowej o grubości 3mm, elementy trzymające serwa z blachy aluminiowej 8mm. Od dołu podparcie na łożysku wkręconym w płytę korpusu. Masa konstrukcji 2100g. To chyba tyle. Całość konstrukcji wykonana przez nas na frezarce(dwuosiowej bez sterowania numerycznego i stołu obrotowego, więc łuki i fazy na ręcznym CNC ). Model 3D w Inventorze jest dość szczątkowy, takie minimum jakie bylo potrzebne do sprawdzenia czy to będzie działać. Żeby nie tracić czasu od razu przeszliśmy do fizycznego modelu 3D. Elektronika Całość układu sterowania opiera się o gotowe rozwiązania-na pokładzie jest Raspberry Pi i MiniMaestro. Układy komunikują się poprzez UART, z konwerterem poziomów po środku. Sterowanie W wielkim skrócie-robot rozwiązuje sobie równania różniczkowe, rzuca rozwiązania na kinematyke odwrotną, i tak w kółko. Serwa ustawiają się stosownie do wyliczonych pozycji. Informację o tym gdzie mają trafić wysyłamy przez UART. W tej chwili system sensoryczny sprowadza się do tego, że jest maszyna stanów, którą mogłby zarządzać sygnaly z czujników, tyle że czujników nie ma(jeszcze), jest za to bezprzewodowa klawiatura Robot może chodzic do przodu, do tyłu, i obracać się przez chodzenie jedną połową robota do przodu, drugą do tyłu. Zasilanie W robocie jest lipol 2S o pojemności 6000mAh. Do niego są 2 przetwornice na 5V. Jedna 5A do części logicznej Maestro i do Raspberry, druga na 9A na samo zasilanie serw. Podsumowanie Opis dość lakoniczny, bo skupiłem się na konkretach. Jeżeli będą jakieś pytania odpowiem. Robot w obecnym stanie pozostanie już niedługo, będzie trochę bardziej zaawansowany i mądrzejszy, ale o tym napiszę jak już taki będzie. Prace są w toku cały czas Zdjęcie robota: Filmik z chodzenia: Filmik z samego wiosłowania:
  13. Henk to kolejny z moich ktoczących robotów, tym razem sześcionożny. Zawsze chciałem zrobić poprawnego sześcionoga, ale niestety 18 serw na raz to nie w kij dmuchał, a Arduino, które zazwyczaj stosowałem, obsłużyć w prosty sposób mogą zaledwie 12. Aż tu któregoś dnia przyszedł mój PyBoard i postanowiłem, że trzeba go wykorzystać. Po pomęczeniu się trochę z timerami, postanowiłem jednak, że wykorzystam także kontroler serw Maestro, bo tak będzie łatwiej. I tak powstał Henk. Pomimo, że PyBoarda programuje się w Pythonie i jest to niesłychanie wygodne (edytujemy pliki bezpośrednio na podmontowanym przez USB "dysku" płytki, do tego mamy pythonową konsolę po serialu), to jednak nadal nie zaprogramowałem tego robota poprawnie -- mam kinematykę odwrotną dla każdej nogi z osobna, ale nie mam dla całego ciała. Sprawę utrudnia fakt, że w przeciwieństwie do innych moich robotów, każda noga jest pod trochę innym kątem. Tak więc robot, mechanicznie skończony, stoi sobie i czeka, aż kiedyś się wezmę i go porządnie zaprogramuję.
  14. Chciałbym przestawić swoją kolejną konstrukcję, jaką jest hexapod "Freeze". Powstawał on około 3 tygodnie. Koszt budowy to około 150 PLN. Budując go, chciałem zapoznać się z robotami kroczącymi. Jest to najprostsza z tego typu konstrukcji, do zbudowania już na 3 serwach. Mechanika: Konstrukcja nośna to odpowiednio wycięta płyta spienionego PCV o wymiarach 185x120 mm. Napęd stanowi 6 serw SG90, przyklejone są do niej klejem na gorąco. Nogi zaprojektowałem i wydrukowałem na drukarce 3D. Następnie przykręciłem je do orczyków za pomocą wkrętów. Całkowite wymiary to: 190x190x60 mm. Zasilanie: Robot zasilany jest z akumulatora Ni-Cd 1000mAh. Wystarczy to na kilkanaście minut chodzenia. Napięcie jest stabilizowane za pomocą modułu LM317. Elektronika: Do sterowania wykorzystałem Arduino Pro Mini 5V @ 16 MHz. Oprócz tego na płytce znalazł się czujnik odległości HC-SR04, przycisk do resetu i jedna dioda LED. Oprogramowanie: Ruch robota to zapętlona sekwencja ustawiania serw w wybranych pozycjach. Do sterowania wykorzystałem bibliotekę "Servo.h". Program ma około 200 linijek (można by go znacząco skrócić). Zdjęcia: Pierwsze kroki i chodzenie względem prostej: Omijanie przeszkód: Podsumowanie: Tego typu roboty są idealne, jeżeli ktoś chciałby zapoznać się z robotami kroczącymi nie kupując przy okazji 18 serw Z chęcią odpowiem na wszystkie pytania. Polecam również bardzo ciekawy artykuł na temat tego typu konstrukcji: https://www.forbot.pl/forum/topics20/mechanika-mechanika-robota-kroczacego-hexapod-a-malym-kosztem-80zl-vt6207.htm
  15. Kiedy projektowałem mojego robota Tote, który miał się stać furtką dla ludzi chcących powalczyć z chodzącymi robotami, będąc tanim i prostym w budowie projektem, to nie miałem zbyt dużego wyboru jeśli chodzi o jego mózg. Arduino Pro Mini, którego użyłem, było w zasadzie jedyną opcją wystarczająco tanią, a zarazem popularną i prostą w obsłudze. To się zmieniło kiedy na rynku pojawiło się Raspberry Pi Zero. Kosztując tylko trzy razy więcej niż chińskie klony Pro Mini, a dając do dyspozycji pełne bogactwo Linuxa, od Pythona zaczynając a na ROS-ie kończąc, płytka ta wydaje się idealnym wyborem dla takiego robota. Tak powstał Tote Zero. Płytkę udało mi się zamówić jeszcze tego samego dnia, gdy została ona ogłoszona. Na szybko zaprojektowałem płytkę drukowaną będącą ciałem robota i wysłałem zamówienie do DirtyPCBs licząc na to, że po świętach już będzie gotowa i będę mógł zbudować robota. Niestety pośpiech się nie opłacił i okazało się, że popełniłem podręcznikowy błąd: gniazdka do serwomechanizmów mają wyprowadzenia w złej kolejności, i to takiej, której nie da się poprawić wkładając wtyczkę odwrotnie. Trzy tygodnie czekania na nową płytkę mi się nie uśmiechały, więc dokleiłem dodatkowe piny i przesunąłem całość o jeden: Następnie poprawiłem projekt płytki tak, żeby miał wszystko co potrzeba. Nowej jeszcze nie zamówiłem, czekam aż będę miał więcej pomysłów i poprawek. Dalej to już z górki. Podłączyć serwa, zainstalować i skonfigurować ServoBlaster, napisać prosty kod w Pythonie, który z nim gada, przerobić moje programy Pythonowe z prototypów Tote żeby z tego korzystały. Kilka dni zajęło mi wyregulowanie i podłączenie wszystkiego poprawnie: W końcu dzisiaj udało się robotowi zrobić pierwsze kroki: Oczywiście prace będą kontynuowane. W planach jest kamera, czujniki na stopach i może wreszcie zabiorę się za poznawanie ROS-a.
  16. Chciałbym przedstawić swoją konstrukcję jaką jest czworonożny robot kroczący - EDWARD Jest to mój pierwszy robot, a przy okazji pierwsza poważna konstrukcja powstała od zera: od projektu mechaniki wykonanego w Inventorze, przez zaprojektowanie i wykonanie płytki PCB po napisanie programu w C++. Przed przystąpieniem do projektu ustaliłem następujące założenia, które miał spełniać robot: - chód statycznie stabilny - autonomiczny - serwa modelarskie w roli napędów - konstrukcja z pleksi - zasilanie z LiPola 1.Konstrukcja mechaniczna Tak jak pisałem na początku, robot został zaprojektowany w programie Autodesk Inventor. Całość składa się z wycinanych laserem elementów z pleksi łączonych za pomocą śrub, a w niektórych miejscach również kleju do tworzyw sztucznych. W korpusie robota przewidziane jest miejsce na akumulator LiPol. W roli napędów zostały wykorzystane 4 serwa TowerPro SG-5010 (do poruszania całą nogą w płaszczyźnie równoległej do korpusu robota) oraz 8 TowerPro MG-995. Każda noga wyposażona jest w czujnik krańcowy wykorzystywany do detekcji podłoża. Szczegóły widoczne na poniższych rysunkach. (1- wałek gwintowany, 2 - tulejka, 3 - płytki mocujące tulejkę, 4 - nakrętka, 5 - czujnik krańcowy) 2.Elektronika Zasilanie Robot zasilany jest akumulatorem litowo-polimerowym. Pakiet zasilający złożony jest z dwóch ogniw połączonych szeregowo, dzięki czemu napięcie znamionowe osiąga wartość 7,4 V. Pojemność pakietu wynosi 2650 mAh. Poniżej widoczny schemat zasilania. Napięcie uzyskane z przetwornicy impulsowej UBEC podawane jest na serwa. Przy 6V uzyskują one swój maksymalny moment. Przetwornica wyposażona jest w pasek LED informujący o stanie rozładowania akumulatora. Dalszym obniżeniem napięcia do wartości tolerowanych przez mikrokontroler oraz czujniki odległości "zajmuje się" się popularny stabilizator liniowy L7805. Mikrokontroler Układ sterowania robota został oparty na mikrokontrolerze ATmega16A. Do taktowania procesora użyty został zewnętrzny rezonator kwarcowy 16 MHz. Czujniki odległości Robot wyposażony jest w 3 czujniki ultradźwiękowe HC - SR04. Pomiar odległości odbywa się za pomocą fali dźwiękowej o częstotliwości 40 kHz. Zakres pomiarowy mieści się w przedziale 2 – 200 cm. Sterownik serw W roli sterownika serwonapędów pracuje 12-kanałowy układ Pololu Mini Maestro. Komunikacja z mikrokontrolerem zrealizowana jest za pomocą interfejsu szeregowego USART. Układ posiada również możliwość obsługi za pomocą aplikacji komputerowej poprzez przewód mini USB, co było wykorzystywane do przeprowadzania różnego rodzaju testów oraz konfiguracji takich parametrów jak prędkość i skrajne położenia wykorzystywanych serwomechanizmów. Płytka PCB Płytka została zaprojektowana w programie EAGLE i wykonana metodą termotransferu (czyt. żelazkiem). Ma kształt kwadratu o boku 11 cm. Duży rozmiar płytki pozwolił na swobodne rozmieszczenie wszystkich elementów, których zresztą nie ma szczególnie wiele. 3 gniazda goldpin w pobliżu zielonych ledów służą do umieszczenie w nich czujników odległości, natomiast wspomniane diody sygnalizują wykrycie przeszkody przez dany czujnik. 3.Oprogramowanie Program sterujący został napisany w języku C++ z wykorzystaniem środowiska programistycznego AVR Studio. Sprowadza się on do obsługi czujników odległości, diod oraz komunikacji ze sterownikiem serw. Schemat blokowy programu widoczny poniżej. Pierwszym zadaniem programu wykonywanym po uruchomieniu jest inicjalizacja poszczególnych peryferii wykorzystywanych w dalszej części programu: modułu USART, timera oraz zewnętrznych przerwań. W tym miejscu programu konfigurowane są również rejestry kierunku danych w celu ustawienia odpowiednich wyprowadzeń mikrokontrolera jako wejście lub wyjście. Dalej następuje ustawienie serwonapędów tak, żeby kończyny robota osiągnęły pozycję wyjściową, umożliwiającą wykonanie pierwszego kroku. Po omówionych czynnościach wstępnych następuje faza właściwa chodu. Pierwszą czynnością jest pomiar odległości za pomocą czujnika umiejscowionego na przodzie korpusu robota. Dalsze działanie uzależnione jest od uzyskanego sygnału zwrotnego. W przypadku wykrycia przeszkody ruch w założonym kierunku jest niemożliwy. Z wykorzystaniem dwóch bocznych czujników odległości sprawdzane jest istnienie przeszkód po bokach robota. Jeśli zostanie wykryta przeszkoda po jednej stronie, robot obraca się w kierunku przeciwnym. Sygnały informujące o istnieniu przeszkód po obu stronach powodują wykonanie obrotu o 180 stopni. Natomiast w ostatnim możliwym przypadku, kiedy żaden z czujników nie informuje o wykryciu przeszkód, następuje obrót w prawo. Brak ograniczeń uniemożliwiających ruch do przodu skutkuje wykonaniem jednej sekwencji przestawień nóg. W tym przypadku boczne czujniki odległości nie są wykorzystywane. Algorytmem chodu realizowanym przez omawianego robota kroczącego jest czteronożne pełzanie. Kolejność przestawień nóg jest następująca: lewa przednia → prawa tylna → prawa przednia → lewa tylna Każdy krok zakończony jest sygnałem z czujnika krańcowego informującym o osiągnieciu podłoża prze stopę robota. Dzięki temu możliwe jest wykrycie dużej zmiany wysokości w przestrzeni znajdującej się przed robotem i ominięcie niemożliwych do przejścia uskoków czy na przykład schodów. W momencie wykrycia takiego ograniczenia następuje zmiana kierunku ruchu podobnie jak w przypadku wykrycia przeszkody przez czujniki odległości. 4.Podsumowanie EWDARD na pewno nie jest szczytem osiągnięć inżynierskich, ale jako, że jest to mój pierwszy robot, jestem z niego w miarę zadowolony. W zasadzie spełnia wszystkie wymagane założenia. Już w trakcie projektowania uznałem, że nie chcę zbytnio komplikować projektu natomiast w przyszłości nic nie stoi na przeszkodzie temu, żeby przeprojektować elektronikę wyposażając robota w żyroskop oraz akcelerometr oraz umożliwić jego sterowanie, np. poprzez moduł radiowy. Mam nadzieję, że opisałem wszystkie ważniejsze rzeczy. Proszę o wyrozumiałość, jako że jest to mój pierwszy post tutaj
  17. Katka to czworonożny robot kroczący z nogami w układzie ssaka. Jest to efekt moich dość wczesnych eksperymentów z budowaniem czworonożnego kroczącego robota o jak najniższej cenie całkowitej. Dzięki zastosowaniu ssaczej konfiguracji nóg możliwe było obliczenie kinematyki odwrotnej dla każdej z nóg pomimo tego, że mają one tylko po dwa serwomechanizmy -- po prostu współrzędne nóg ograniczone są do pionowej, dwuwymiarowej płaszczyzny. Pozwala to jednak na całkiem przyzwoitą kontrolę, a w szczególności, na przemieszczanie środka ciężkości i przesuwanie stóp w liniach prostych po ziemi, dzięki czemu możliwy jest statycznie stabilny chód bez poślizgów. Niestety, są też ograniczenia. Stopy mogą się przesuwać po ziemi jedynie w przód i w tył, zatem niemożliwe jest porządne skręcanie. Owszem, możemy nogami po jednej stronie robota iść szybciej, a po drugiej wolniej albo nawet w przeciwnym kierunku, na zasadzie skręcania czołgu na gąsienicach, ale wiąże się to z dość dużymi poślizgami stóp i w związku z tym sporą nieprzewidywalnością. W sytuacji prawdopodobnie mogłoby pomóc dodatkowe serwo w pasie, pozwalające na skęt tułowia, ale to wymagałoby całkowitej przebudowy robota, więc nie próbowałem tego. Robot jako mózg wykorzystuje Arduino Pro Mini, początkowo umieszczone na domowej roboty płytce z dodanym zasilaniem dla serw, później przełożone na płytkę drukowaną od mojego innego robota. Zasilanie zapewnia pojedyncze ogniwo LiPo z power banku USB, uzupełnione o dużo za duży kondensator elektrolityczny oraz moduł boost zwiększający napięcie do 5V. Elementy wykonawcze to cztery mikroserwa SG90, najtańsze jakie tylko istnieją. Odbiornik podczerwieni pozwala na zmianę trybów działania robota za pomocą pilota TV. Kilka listewek i dźwignie dołączone do serw posłużyły do zbudowania ciała i nóg robota. Elektronika i bateria są przypięte gumką recepturką. Ustawienie nóg nie jest optymalne pod względem ich zasięgu. Tylne nogi musiały zostać obrócone "tyłem naprzód" w stosunku do pierwotnego projektu (oraz w stosunku do tego, jak zazwyczaj wyglądają ssaki), aby uniknąć plątania się z przednimi nogami. Ten układ można jeszcze znacząco poprawić, niestety wymagałoby to przebudowania i przeprogramowania robota, na co nie mam raczej wystarczającej motywacji. Robot ten przez jakiś czas występował "w owczej skórze", wypychając pluszową zabawkę - owcę. Niestety, nie do końca dopasowane wymiary zabawki oraz ślizganie się owiniętych materiałem nóg znacznie pogarszały wydajność chodu, więc zrezygnowałem z tego rozwiązania. Filmik z chodzącym robotem:
  18. pKubik (pico-Kubik) to malutki (mieszczący się w dłoni) czworonożny robot z trzema stopniami swobody na nogę. Celem było stworzenie czegoś, co będzie tanie i proste do wykonania, a jednocześnie będzie więcej niż tylko zabawką i pozwoli na eksperymentowanie z poważnymi algorytmami. Dzięki małym wymiarom robot swobodnie mieści się na biurku i nie jest potrzebna specjalna przestrzeń do testów. Niewielka waga całości daje relatywnie dużą wytrzymałość na upadek inne wypadki. Do tego można go z łatwością zabrać ze sobą na zajęcia czy zawody. Użycie standardowych, łatwo dostępnych i popularnych części pozwoliło znacznie ograniczyć cenę (całość można zbudować za mniej niż 200 zł przy zamawianiu części z Chin) oraz uniknąć problemów z naprawianiem uszkodzeń i szukaniem części zamiennych. W wersji podstawowej robot jest kontrolowany przez klon Arduino -- może wówczas poruszać się po płaskim terenie sterowany pilotem od telewizora. Jednak prawdziwa zabawa zaczyna się, kiedy podłączymy przez port szeregowy, SPI lub I²C coś bardziej zaawansowanego, jak na przykład mały komputer z Linuksem (użyłem VoCore), moduł Bluetooth czy WiFi (wówczas można sterować nim z komputera stacjonarnego), czy OpenMV (nadal czekam na swoją płytkę, żeby to wypróbować).
  19. Chciałbym zaprezentować owoc mojej długiej pracy. Jest to czteronożny robot kroczący, który wykorzystuje m.in. komunikację bezprzewodową oraz odwrotne zadanie kinematyki (niestety nie bezpośrednio na pokładzie robota). Robot powstał, ponieważ chciałem skonsolidować w jednym projekcie kilka ważnych zagadnień związanych z robotyką, elektroniką, programowaniem. Dużo rzeczy można było zrobić inaczej, lepiej, ale głównym założeniem było połączenie wiele aspektów z w/w dziedzin. Kilka rzeczy należy jeszcze poprawić, m.in. płynność ruchów, ale ogólnie jestem zadowolony z efektów. To co prezentuję jest drugą wersją robota. 1. Konstrukcja mechaniczna W konstrukcji nie ma niczego zaskakującego. Robot (R4pod) ma budowę symetryczną. Posiada 4 nogi, a każda noga ma 3 stopnie swobody (3 serwa na nogę), czyli 12 serwomechanizmów. Zastosowane serwomechanizmy to Tower Pro SG 5010 (pierwsze i drugie licząc od stopy) oraz HITEC HS322HD (łącznik nogi z korpusem). Pierwotnie wykorzystałem Tower Pro MG995, ale okazały się chińską podróbka i wysterowanie ich wiązało się z stanami samobójczymi (pisałem o tym na forum). Projekt konstrukcji wykonano w Inventorze. Wzorowałem się na wielu konstrukcjach oraz na elementach ogólnie dostępnych na serwisach aukcyjnych czy sklepach internetowych i w pewnym stopniu modyfikowałem je dla własnych potrzeb. Pierwsza wersja było wykonana z laminatu FR4, co okazało się niezbyt dobrym pomysłem. Druga wersja, czyli aktualna, wykonana jest z aluminium (nogi 1,5 mm, korpus 2 mm). Za pomocą imadła i argumentu siły ukształtowałem odpowiednie elementy. Wszelkie części zostały wycięte na WaterJet`ie przez jednego z kolegów z naszego forum, za co bardzo mu dziękuję. Pierwotnie nie planowałem wykorzystać czujników krańcowych w stopach, ale życie zweryfikowało to i stały się niezbędne. Niestety nie przygotowałem elementów stopy, aby takie czujniki zastosować, stąd taka partyzantka jak widać na zdjęciach. 2. Elektronika PCB zaprojektowałem w programie Eagle. Samą płytkę wykonałem termotransferem wykorzystując laminator. Nie bawiłem się w osobne moduły, ma to swój minus, ale jeszcze nic się nie spaliło. Wszystko znajduję się na jednej PCB, udało się to dzięki zastosowaniu elementów SMD (pojedyncze komponenty są THT). Na PCB znajduję się: - tor zasilania dla układu sterowania, czyli stabilizator napięcia +5VDC oraz +3,3VDC - tor zasilania serwomechanizmów z odpowiednia baterią kondensatorów na wejściu i wyjściach - 2 mikrokontrolery ATmega88PA taktowane częstotliwością 20MHz - moduł ATB-BTM222 - akcelerometr MMA8452 - gniazdo programatora - 4 przyciski - gniazdo do podłączenia sygnałów z krańcówek w stopach - wyjścia sygnałów sterujących dla serw - komparator mierzący napięcie na akumulatorze Robot zasilany jest z dwóch akumulatorów litowo-polimerowych. Do zasilania układu sterowania +7,4V 500mAh oraz +7,4V 2200mAh przez UBEC do zasilania serwomechanizmów. Moduł ATB-BTM222 służy do komunikowania się z PC za pomocą BT. Komunikacja w obie strony za pomocą jednego modułu wprowadza spore opóźnienia (plus opóźnienia wynikające z innych procesów ) dlatego nie udało mi się jeszcze uzyskać pełnej płynności ruchów. ATmega Master pobiera wszelkie informacje z otoczenia, tj. - komunikacja z PC za pomocą ATB-BTM222 (UART) - czujniki w stopach - akcelerometr (I2C) - komunikacja z drugą ATmega za pomocą SPI Po za tym komponuje ramki danych do wysłania oraz dekomponuje i interpretuje odebrane dane. ATmega Slave działa w zasadzie jak serwokontroler. Odbiera dane z układu Master, dekomponuje ramkę danych i odpowiednio wysterowuje 12 serwomechanizmów. 3. Sterowanie Do sterowania robotem napisałem aplikację wykorzystując WinApi. Aplikacja służy do ustanowienia połączenia z robotem za pomocą Bluetooth, odbieranie danych, przetwarzanie ich i wysyłanie do robota. Aby komunikacja była bezawaryjna i wszystkie pakiety kompletne, napisałem swój protokół (chociaż to zbyt duże słowo) wzorując się na ModBus`ie. Na przetwarzanie danych składa się dekompozycja danych, odpowiednie ich zinterpretowanie, wykonanie obliczeń dla zadania odwrotnego kinematyki uwzględniając dane z czujników (muszę zająć się jeszcze akcelerometrem, chociaż dane z niego są wysyłane do PC) oraz kompozycja ramki do wysłania. Dodatkowo widoczna jest animacja obrazująca stan czujników w stopach oraz trójkąty podparcia. Stan jest aktualizowany w czasie rzeczywistym. Przede mną jeszcze wiele pracy. Jest dużo rzeczy do poprawy czy modyfikacji. Należy poprawić płynność ruchów oraz sam sposób chodzenia (na razie traktowałem go po macoszemu, skupiając się na stabilnej komunikacji, samej aplikacji oraz obliczeniach kinematyki odwrotnej). Należy przeprojektować ostatni człon nogi, gdzie znajdują się czujniki krańcowe. Partyzantka jaką zrobiłem sprawia wiele kłopotów. Kolejnym ważnym aspektem jest uwzględnienie w obliczeniach danych z akcelerometru i poziomowanie korpusu. Może w przyszłości powstanie kolejna wersja sterownika, która podoła wykonać obliczenia związane z zadaniem odwrotnym kinematyki (jakiś ARM? Niestety na to ciągle brakuje czasu...) Pozdrawiam
  20. Malutki robocik kroczący "Gramek" to konstrukcja którą zbudowałem "for fun" w ciągu jednego dnia, z rzeczy które miałem pod ręką. Robot zbudowany jest z trzech 9-gramowych mikroserw Turnigy TG9e, baterii Li-ion Nokia BL-5C (bardzo popularna) o pojemności 1020mAh która robi jednoczesnie za podstawę robota, oraz płytki "teensy 2.0" na której znajduje się atmega32u4. 6 nóg robota zrobionych jest z odpowiednio wygiętych 3 spinaczy biurowych, na które nałożyłem rurkę termokurczliwą (kilka warstw rurek różnej grubości znajduje się na "stopach"). Nogi są przyklejone do orczyków na HotGlue. Serwa połączone są ze sobą grubą, gąbkowatą, dwustronną taśmą klejącą, a całość jest przyklejona do baterii taśmą izolacyjną. Jednym słowem wszystko na klej/taśmę, bez żadnej ramy czy śrubek. Zastosowałem płytkę Teensy ponieważ po pierwsze miałem ją w domu do testów, po drugie ma malutkie wymiary (30x18mm) i idealnie pasowała do tego projektu, a po trzecie dzięki użyciu "teensyduino" mogłem używać środowiska Arduino w którym bardzo szybko napisałem kod. Żeby Gramek był robotem, a nie jedynie zdalnie sterowaną platformą, musiał mieć czujniki - w domu miałem tylko 2 fotorezystory (w dodatku o innych charakterystykach...), więc w ten sposób powstał kroczący światłolub:) Na początku chciałem zastosować czujnik odległości zrobiony z diody IR i fototranzystora, ale "na pająka" ciężko to było zrobić, więc pozostałem przy fotorezystorach, które są bezpośrednio przylutowane (na długich nogach) do padów w Teensy, dzięki temu, poza Teensy, nie musiałem robić żadnej dodatkowej płytki. Teensy nie ma regulatora, dlatego zarówno serwa jak i płytka zasilana jest bezpośrednio z baterii. Programowanie odbywa się poprzez gniazdo miniUSB znajdujące się na płytce, przy użyciu bootloadera w atmedze32u4. Parę fotek: Oraz kilka filmików: Niestety gdy jest jasno, to są kłopoty z odpowiednim sterowaniem (mam na myśli światło), tym bardziej że na filmiku używałem słabej diodowej latarki. W ciemności działa zdecydowanie lepiej, ale za to na filmiku nic nie widać, więc nie wrzucałem. Inspiracją do budowy tego robota był "Pololu Micro Maestro Hexapod" który został zbudowany przez tą firmę w celu prezentacji możliwości sterownika serw MicroMaestro. Filmik prezentujący oryginalnego hexapoda Pololu: Jest kilka zasadniczych różnic pomiędzy moim robotem, a pololu: Gramek nie używa sterownika Maestro, zamiast tego używa Teensy. Gramek używa fotorezystorów (jest światłolubem), zamiast cyfrowych sharpów. Bateria również jest zupełnie inna, zresztą samo umiejscowienie elementów jest różne. Mój robot ma mniejsze nogi, przez co mieści się w dłoni i zgrabniej wygląda, ale niestety jest wolniejszy. W zasadzie mógłby być szybszy - ograniczenie wynika po pierwsze z zasilania serw bezpośrednio z 3,7V zamiast 6V, a po drugie napisałem "chód" w ten sposób, że w danym momencie czasu w ruchu są maksymalnie 2 serwa jednocześnie, a nie wszystkie 3, przez co, cała "ramka" chodu trwa dłużej. Nie chciałem ruszać 3 serwami jednocześnie by nie przeciążać baterii, która jest bardzo kiepska - nie mierzyłem co prawda prądów, ale bałem się, że 3 serwa naraz to będzie za dużo dla bateryjki z telefonu komórkowego. Dodatkowo, pomiędzy poszczególnymi ruchami serw, w kodzie zdefiniowane są opóźnienia, bo bez nich, robot śmiesznie skakał, jak ten hexapod pololu co widać na filmiku - trochę nie naturalnie to wygląda. Koszt: - bateria: free (ze starego telefonu) - serwa: 3x12zł - teensy: free (nie liczę tej płytki jako koszta, bo miałem ją dużo wcześniej do testów, zresztą po rozebraniu robota nadal mogę ją wykorzystać, ale kosztuje $16) - spinacze biurowe: free:) - 2 fotorezystory, 2 oporniki, mikro-włącznik: <2zł - rurki termokurczliwe: 2zł Wymiary robota: - z nogami: 7 x 9 x 5 cm (dług x szer x wys) - bez nóg: 6 x 4x 4 cm (dług x szer x wys) Waga: - 64g (z akumulatorem) Podsumowując, jestem bardzo zadowolony z tej konstrukcji, pomimo tego, że powstała w jeden dzień. Zbudowałem chyba najprostrzego możliwego robota kroczącego bardzo tanim kosztem, ucząc się przy tym programowania chodu dla tego typu konstrukcji, co nie jest takie trywialne jak się mogło wydawać, nawet dla tak prostego robota, zbudowanego z 3 serwomechanizmów.
  21. Witam wszystkich, to mój pierwszy post na forum. Na początku chcę podziękować wszystkim, którzy dzielą się swoją wiedzą, to zawsze pozwala zaoszczędzić czas i pieniędze. Żona pogoniła mnie od ciągłego grania do jakiegoś twórczego działania, więc postanowiłem zrobić sobie robota. Już wcześniej bawiłem się prostymi konstrukcjami używając gotowych podwozi (między innymi LF). Moje zdolności mechaniczne są skromne, a wyposażenie warsztatu żałosne, ale to nic. Trzeba brać się za robota puki jest zapał. Zaplanowałem sobie sześć nóg z 2DOF, żeby nie szaleć na początek. Poza tym miałem układ kontroli 12 serw pololu maestro, który pozostał mi po manipulatorze jaki robiłem kiedyś. Miało być maksymalnie tanio: - 14 serw Redox S90 - 12zł/szt. (2 jako rezerwa ) - profil PCV 2mb (castorama) - 8zł/mb (nie pamiętam dokładnie) - stary laminat dwustronny - cena nieznana - jeden klej Cyjanopan E - 3zł/szt ?? narzędzia: - mała piłka modelarska - małe imadełko - wkrętarka - pilniki duże i małe - nóż oraz malutkie biurko Wyszło całkiem nieźle: Jak widać robot jest całkiem spory w tej pozycji to prawie 300x300mm. Waga z bateriami i układem pololu to 550gram. Robot bez problemu chodzi i myślę, że mogę mu jeszcze spokojnie 200gram dorzucić. Jeszce się nim nie nacieszyłem więc nie chcę go na razie forsować Dodam jeszcze budowę nogi: W najbliższym czasie planuję pomęczyć serwomechanizmy, żeby sprawdzić ile są warte oraz zmienić sterownik pololu na własny z modułem radiowym. W przyszłości na pewno będzie zmiana z nogi 2DOF na 3DOF, ale to już może w następnym robocie, a ten trafi na półkę. Jeśli ktoś jest z mojej okolicy to zachęcam do wymiany doświadczeń osobiście.
  22. Witajcie, Chciałbym tu przybliżyć plon mej pracy/zabawy. Około roku temu zacząłem się interesować robotyką. Analizowałem możliwości wykonania robota powiedzmy zabawki, który mógł by się poruszać w terenie (szeroko pojętym). W ruch poszły „Google”, fora i strony producentów. Była kwestia podjęcia decyzji co do rodzaju robota, a muszę przyznać, że roboty typu kroczące bardzo mi się podobają. Na początek zacząłem analizować proste roboty dostępne jako kity do składania, później mój wzrok padł na podwozie kołowe jako mniej skomplikowane (nawet mam całkiem ciekawe podwozie z samochodu zdalnie stertowanego), aż wreszcie pojawił się On – hexapod Od tego czasu zapałałem do niego wielką miłością. - rozpocząłem pracę nad analizą poszczególnych elementów składowych robota. Przy założeniach, że ostatni raz lutownicę trzymałem 20 lat temu, nigdy nie programowałem procesora (choć troszkę programów zwykłych napisałem za młodu) zadanie wydawało się mało realne zwłaszcza w wykonaniu robota tak skomplikowanego. Przyznam się że wykonując robota bardzo dużo elementów zaczerpnąłem ze strony lynxmotion.com i istniejącego tam forum – dotyczącego Robota Phoenix, oraz z strony robota MSR-H01 firmy Micromagic System. Tak czy inaczej Maniek powstał. Powstawał powoli ok. pół roku powoli w miarę możliwości czasowych, których jest nie za wiele... Poświęciłem na niego około 300 godzin jak nie więcej, czasem były tygodnie, że nic nie drgnęło, a czasem był tydzień że ... ummm, ale to między bajki włożyć... Ograniczenia przy wykonywaniu robota: - przede wszystkim jedno finansowe - chciałem zrobić robota taniej niż pierwowzory (i udało się), które są koszmarnie drogie, - mizerna znajomość elektroniki, - mała znajomość programowania procesorów, - zero znajomości robotyki. Dane techniczne robota: Konstrukcja: Robot 6 nożny potocznie zwany hexapodem wykonany z pleksi 3mm wycięte wg mojego projektu (wzorowałem się na rozwiązaniach konstrukcyjnych głównie Phoenixa, MSR-H01 oraz innych robotach tego typu z netu). Dla zapewnienia większej sztywności robota – główna płyta robota, która przenosi wszystkie obciążenia jest podwójna (2x3 mm), a dla zapewnienia ciekawszego wyglądu – nogi zostały wycięte we wzór imitujący włoski pająka. Użyto 18 serwomechanizmów Tower Pro 5010 do sterowania nogami oraz 1 serwo do sterowania sonarem. Główna płyta - Serce robota: Płytka Arduino Mega (strona www: arduino.cc) – rzekł bym super płytka dla laika – wiele wejść i wyjść w zasadzie brak ograniczeń co do programowania oraz bardzo obszerne forum z tysiącami rozwiązań problemów – to była wielka kopalnia informacji. Dla mnie bajka... (przyznam się, że pojęcia typu fuse byte itp., wywołują u mnie lekki dreszczyk z złym tego słowa znaczeniu). Programik zaprojektowany do programowania płytki pozwala w bardzo prosty sposób pisać i programować. Do tego gotowe biblioteki pozwalają w kilka chwil ( jak np: w moim przypadku ) oprogramować sobie klawiaturę PS/2 – akurat taką posiadałem zbędną w szafie). Sterownik serw: Z uwagi na to, że będę chciał rozbudowywać robota i nie chciałem wprowadzać ograniczeń na płytkę arduino (jest ona sama w stanie obsłużyć do 48 serw) co do częstotliwości wysyłania sygnałów – zastosowałem osobno sterownik serw SD 21. Do tego dodatkowo: Wyświetlacz cyfrowy + 3 przyciski - Do tego pozostało zrobić sobie wyświetlacz (dwie cyferki LED) oraz 3 mikrowłączniki do „programowania trybu pracy”. Płytka z dodatkowymi opornikami (połączenie arduino z sterownikiem serw) oraz Buzzerem. Buzzer – robot wydaje sygnał dźwiękowy –dla uproszczenia konstrukcji zastosowałem buzzer z generatorem. Zasilanie: Obecny etap – zasilacz komputerowy – osobne zasilanie serw i elektroniki W przyszłości – zasilanie z akumulatorów – osobno serwa, a osobno elektronika – kwestia do analizy, bo pobór prądu przez 19 serw jest duży. Czucie robota: Zastosowałem sonar SRF05 Waga: Konstrukcja z pleksi + zmontowane serwomechanizmy to 1,45 kg. Z akumulatorami dojdzie prawdopodobnie do ok 2,5 kg. Wszystko starałem się wykonać jak najestetyczniej, ale wybaczcie mi proszę wygląd mych płytek, bo dopiero co nauczyłem się lutować. Obecny tryb pracy robota: – praca na kablu – sterowanie przy pomocy starej numerycznej klawiatury numerycznej PS/2 do notebooka. Rozwój projektu w przyszłości (kolejność nie koniecznie taka jak poniżej): - praca autonomiczna – poruszanie się po terenie (płaskim i off-road), omijanie przeszkód przy pomocy sonaru, - praca demonstracyjna – robot stoi w miejscu, ale reaguje na bodźce (sonar – zbliżenie ręki), wykonywanie ruchów imitujących „żywy organizm” (poruszanie nogami itp.), - wprowadzenie odwrotnej kinematyki do programu robota ( obecnie pracuje na zaprojektowanych wychyleniach sczytywanych z tablicy w programie), - zastosowanie na stopach czujnika terenu co pozwoli na poruszanie się w nierównym terenie, - zastosowanie akumulatorów do zasilania robota, - inne.... ??? czas i możliwości finansowe pokażą... Poniżej portret Mańka: ------------------------- ==============
  23. Witam, jest mój pierwszy temat na forum więc proszę o wyrozumiałość. Chciałbym w skrócie opisać efekt (mojej oraz mojego kolegi) pracy inż. Robot został nazwany "TriHex" porusza się w trybie trójpodoporowym. Założeniami projektu było: - poruszanie się w trudnym terenie, - brak zdefiniowanego przodu, - zastosowanie kinematyki odwrotnej. 1.Mechanika: Robot został zaprojektowany w programie Catia V5. Elementy zostały wykonane z laminatu szklano-epoksydowego oraz giętego aluminium. Napędy to 12 serw TowerPro 995 (mają swoje zalety i wady) oraz 6 serw TowerPro 5010. Każda z nóg wyposażona jest w krańcówkę. Umożliwia to robotowi badanie terenu po jakim się porusza, a przez to dostosowanie ułożenia nóg do terenu. Konstrukcja nogi wygląda następująco: 2. Elektronika: Robot wyposażony jest w dwie płytki PCB. Jedna oparta o mikrokontroler Atmega8 odpowiada za: - pomiar stanu akumulatorów Li-Pol o łącznej pojemności 4400 mAh, - wyświetlanie wyników pomiaru na ekranie lcd. Druga płytka oparta została o układ Atmega32, odpowiada za: - obliczenia kinematyki, - wysyłanie poleceń do kontrolera serw (układ Pololu - sterownik Maestro18), - sprawdzanie stanów krańcówek oraz interpretację poleć wysyłanych przez bluetooth (robot wyposażony jest w prosty układ bluetooth działający jak zwykły RS-232) Oba mikrokontrolery pracują z częstotliwością 16 MHz. Zastosowano również układ BEC do zmiany napięcia akumulatorów z 7.4V na 6V. 3.Sterowanie: Robot sterowany jest zdalnie przy pomocy protokołu bluetooth. Posiada pewną autonomię ze względu na własne algorytmy znajdywania podparcia dla nogi oraz porusz się chodem trójpodporowym. Wszelkie obliczenia kinematyki oraz trajektorii ruchu nóg są obliczane na bieżąco w Atmedze32 (obawiałem się, że może nie wyrabiać ale się udało ) W ramach projektu została także napisana prosta aplikacja na środowisko Windows do obsługi robota. 4.Dalsze etapy rozwoju: W ramach rozwijania projektu chcemy zastosować akcelerometr, aby robot mógł utrzymywać poziom niezależnie od podłoża, zastosować inne typy chodu, a także zastosować dlamierze na korpusie, aby robot zyskał jeszcze większą autonomię. 5.Galeria o raz film: fot. Aneta Regulska Na zakończenie chciałem podziękować za tak przydatne artykuły znajdujące się na tym forum. Okazały się bardzo pomocne w konstrukcji naszego robota. __________ Komentarz dodany przez: Bobby Poprawiłem film na przyszłość - używaj tagów [youtube ]
  24. Dane techniczne: Robot czteronożny o konstrukcji aluminiowej (własnego projektu) – waga 670 gramów. Wymiary nogi robota w stanie rozłożonym od osi serwa do końca nogi to 19 cm. Body o wymiarach 8 x 8 cm. A na pokładzie mamy: - Kontroler robota to Baby Orangutan B-328 Robot Controller – programowany w oparciu o dobrze znane nam środowisko Arduino wersja 0021. - 2 x sterowniki serw Pololu Micro Serial Servo Controller do sterowania serwami, - 12 mini serwomechanizmów Tower Pro MG-16R – mocne serwa metalowe o momencie ok. 2,7 kg / cm, - 4 Sharp’y GP2Y0A21YK0F – jako czujniki odległości. Zasięg prezentowany przez producenta to 10-80cm. W rzeczywistości spokojnie można sobie analizować otoczenie powyżej 1 m. - Czujnik przyspieszeń MMA7341L 3-Axis Accelerometer ±3/11g z własnym regulatorem napięcia, - 4 czujniki dotyku w oparciu o włączniki, - MOBOT-RCR-V2 -Moduł radiowy 868MHz – do połączenia bezprzewodowego z rękawicą. - Robot jest zasilany z Pakietu LiPol 3E Model 1300mAh 11,1V 15C, - Regulator Pololu Step-Down Voltage Regulator D15V35F5S3 do zasilania serw, - Stabilizator AVT MOD13 do zasilania elementów nie posiadających własnego regulatora. Sterowanie robotem poprzez rękawicę ( w fazie testów) zawierającą na swoim pokładzie: - Kontroler Orangutan SV-328 z wyświetlaczem LCD - MOBOT-RCR-V2 -Moduł radiowy 868MHz – do połączenia bezprzewodowego z robotem. - Czujnik przyspieszeń MMA7341L 3-Axis Accelerometer ±3/11g z własnym regulatorem napięcia za pomocą, którego są prowadzone odczyty. Robot obecnie przeszedł pozytywnie fazę testów poszczególnych elementów po złożeniu i jest oprogramowywany. Przewidziano 2 podstawowe typy pracy: 1. Sterowanie z rękawicy – tj. odczyty z czujnika przyspieszeń przekazywane są do robota za pomocą modułu radiowego gdzie następuje zaprogramowana reakcja. 2. Praca autonomiczna – robot dokonując odczytów ze swoich czujników reaguje na zmiany otoczenia podczas poruszania się.
  25. Witam, Zebrałem się i postanowiłem napisać conieco o mojej nowej konstrukcji. Generalnie już od jakiegoś czasu buduję roboty ale na forbocie nic jeszcze nie umieściłem. Mam do zaprezentowania robota typu hexapod, 6-nożna maszyna krocząca jakby ktoś niezbyt orientował się w systematyce. Dlaczego hexapod? Zabrałem się za tą konstrukcję po porażce w minisumo. Stwierdzam że nie lubię zbytniego "upychania" elektroniki w robocie. Platforma hexapoda daje dość dużo możliwości rozmieszczenia elektroniki, o zasilanie też nie trzeba się martwić ze względu na duży udźwig. Krótko o budowie: Projekt: Konstrukcję zaprojektowałem w programie CorelDraw. Projekt dawał mi nieco możliwości manipulowania nogami zwłaszcza w płaszczyźnie poziomej. Części: zostały wycięte laserem na bazie projektów w Corelu. Plexy 3mm kolory czarny i żółty. Planowałem 6mm ale niestety zakład takowego materiału nie posiadał. 3mm na korpus starczy ale na nogi niezabardzo. Robot posiada jak wspomniałem spory udźwig testowałem z grubym słownikiem ale 3-5kg pewnie by jeszcze podniósł, za to z przepychaniem ma problemy, nogi się troszkę wyginają... Robot się ślizgał, założyłem mu ogumienie - wałki z drukarki atramentowej. Silniki: 18 serw TowerPro mg995. Mają swoje wady i zalety. Zalety: kosztują około 30 zł/szt, metalowe tryby, łożyska kulowe, dobra obudowa. Wady: kupując 18 sztuk 5 obraca się odwrotnie niż pozostałe. W programie obracając serwa np o +50* z krokiem co 1 te serwa "unikatowe" muszę obracać na -50... Problematyka dobrze widoczna na schemacie. Zasilanie: serwa zasilam z akumulatora żelowego 6V, 4.5 Ah. Przy zakładanym poborze prądu 18* 0.5A mamy 9A. Akumulator podziała więc niecałe 30 min ale jest to przy maksymalnym obciążeniu - serwa mają pobór maksymalny przy gwałtownych obrotach u mnie jest to wyeliminowane, serwa działają maksymalnie płynnie z przeskokiem o 1° co 5 - 15ms. Logika ma narazie zasilanie przez usb, 3m kabla więc nie jest źle, planuję dodać bardziej mobilne źródło. Ewentualnie druga opcja bardziej ryzykowna żeby podłączyć logikę do żelka... podobno maksymalne rozładowanie jest dość duże. O tym jeszcze pomyślę. Logika: Arduino Mega 2560. Płyta zdrowo nad wyrost, ale co tam szkodzi ;] używaj z 10% pamięci... Sterowanie: klawiatura PS2 kablowa z nieco innym złączem (brakowało mi gniazda więc byłem zmuszony do użycia innego). Zasadniczo wczoraj kupiłem moduł BT (temat może komuś znany). Niedługo robot będzie sterowany poprzez BT i androida. Robot dość dobrze radzi sobie z nierównościami. Nie mówię tu o bardziej ekstremalnych nachyleniach. raczej o nierównej powierzchni, zabrudzenia stołu, długopisy, kawałki kartonu itp. Mając klawiaturę PS2 mam dość dużo możliwości ruchu robota. znaki 0 - 9, ! - ) + [ , ] pozwalają mi na zmianę wychylenia serw o 5* +/-. Ta sama kombinacja lecz z { , } zmienia wychylenie wszystkich 6 serw. Dość dobre narzędzie do tworzenia sekwencji. do poruszania przewiduję w,a,s,d. Narazie robot chodzi tylko przód - tył. Robot zna poza tym kilka tricków - chwieje się na boki, macha przednimi nogami itp... Program sam w sobie jest banalny. Serwa steruję bibliotekami, PS2 też ma bibliotekę. Kiedyś miałem bardzo złą opinie o Arduino; jest to dla laików, nie trzeba nic umieć, nie daje takich możliwości co sam C i własny układ. Możliwe ale do tego projektu nie ma sensu stosować inny zestaw. W dodatku kod jest naprawdę obszerny (900 linijek), pisanie tego było by pewnie trudniejsze w samym C. Cena: plexy + cięcie: 260zł serwa: 540zł arduino: 120zł BT: 60zł śruby, nakrętki, rurki alu: 20zł żelek: 20zł prąd: niewiele czas: bezcenny części z recyklingu: 0zł koszty przesyłki inne Wychodzi 1000zł ale w połączeniu z innymi kosztami wychodzi troche więcej więc szacujęże 1100zł. Plany na przyszłość: -sterowanie BT -ruch na boki, skręcanie -kilka innych tricków -przyspieszenie ruchów -mobilne zasilanie logiki -szczypce -kamera -czujniki zbliżeniowe -wzmocnienie nóg Jak wspomniałem będę pisać aplikację na Androida. Posiadała by wirtualną klawiaturę do sterowania. Myślałem również o podłączeniu kamerki do Arduino (posiada 3 porty komunikacji) i wysyłaniu obrazu na telefon. Czujnik zbliżeniowy, myślałem nad trickiem macham ręką przed robotem a on wstaje to mogło by być dość efektowne. Ewentualnie inna opcja. że po wykryciu czegokolwiek robot wstaje a po upłynięciu kilku sekund siada. Mając takiego stwora w domu można by wpaść w paranoję A oto kilka zdjęć: pierwsze modele z papieru, schemat serw, przebieg prac. Myślę że opisałem wszystko co nadaje się do opisania. Jest to mój pierwszy artykuł tego typu więc proszę o wyrozumiałość w przypadku pewnych niedociągnięć. Zapewne kogoś zastanowiło imię robota. Niestety jeszcze takowego nie wymyśliłem aczkolwiek myślałem dość długo. Edit1: Był kabel i nie ma kabla. Robot jest teraz w pełni mobilny. Ma przenośne zasilanie i moduł Bluetooth którym łączę się z androidem. Do sterowania używam aplikacji BlueTerminal. A oto nagranie pokazujące działanie nowego sterowania: __________ Komentarz dodany przez: Nawyk Dodałem zdjęcie w formie załącznika (żeby się wyświetlało na stronie głównej)
×
×
  • Utwórz nowe...