Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją 06.03.2016 we wszystkich miejscach

  1. 4 punkty
    Witam. Chciałbym zaprezentować konstrukcję która była tematem mojej pracy inżynierskiej. Przedmiotem pracy było opracowanie struktury autonomicznego wózka magazynowego. Główne cele jakie miała sprłniać konstrukcja to: - Ustalenie trajektorii ruchu wózka na podstawie lay-out’u wybranego fragmentu hali montażowej z naniesieniem linii dla czujników odbiciowych. - Zasada określenia pozycjonowania wózka we współrzędnych hali -odbiór za pomocą modułu Bluetooth informacji weryfikowanych za pomocą kodów RFID o zgodności ładunku, miejsca odbioru i dostarczenia. - Optymalizacja trasy bezkolizyjnego przejazdu z wysyłaniem danych za pomocą interfejsu Bluetooth do urządzenia kontrolującego i podglądu trasy. - Dobór zestawu czujników odpowiadających za bezpieczeństwo poruszania się po magazynie. Mając wcześniejsze doświadczenie z konstruowania podobnych konstrukcji opisane tutaj zdecydowałem się po raz kolejny na konstrukcję z laminatu . Konstrukcję wykonano jako robot mobilny klasy (2,0) – unicycle. Jako napęd zastosowane zostały podwójna przekładnia Tamiya 70168 w konfiguracji przełożenia 115:1 wraz z kołami Tamiya 70111. Podnośnik to konstrukcja własna zbudowana na łożyskach liniowych z napędów CD oraz pręcie gwintowanym (przekładnia liniowa) który poruszany jest silnikiem DC poprzez przekładnię zębatą. Jako czujniki położenia podnośnika zastosowane zostały dwie krańcówki mechaniczne. Robot porusza się po torze wyznaczonym przez czarną linię (linefolower), z naniesionymi znacznikami punktów załadunku/rozładunku przesyłki. do wykrywania lini zastosowana jest listwa pięciu czujników cny70, krańcowe czujniki wysunięte są o 3mm do przodu. Robot na podstawie znanego miejsca startu i wcześniej zaprogramowanej mapie layoutu, po podaniu danych przejazdu (punkt pobrania, punkt dostarczenia, numer ładunku), wyznacza optymalną trasę przejazdu. Poruszanie się po hali montażowej wiąże się z koniecznością wykrywania przeszkód znajdujących się na trasie przejazdu. do tego celu zastosowane są 2 sharp GP2Y0A41SK0F w przedniej części robota, które służą tez do pozycjonowania robota względem pobieranego ładunku. W tylnej częsci został umieszczony czujnik ultradźwiekowy HC-SR04 wykrywa przeszkody znajdujące sie za robotem głównie podczas nawrotów robota. Jednym z założeń projektu była identyfikacja pobranego ładunku i sprawdzenie jego zgodności, do tego celu został zastosowany gotowy moduł MP01611 Mera-Projec. Modół ten to czytnik RFID ze zintegrowaną anteną, współpracuje on etykietami UNIQUE 125 kHz zainstalowanymi w paletach. Komunikacje robota zapewnia moduł bluetooth HC-06 współpracujący z aplikacją na smartphonie. Elektronika składa się z kilku modułów. Wszystkie moduły połączone są z płytą główną. Sercem układu jest mikrokontroler Atmega32 zasilany przez stabilizator D24V6F5. Do sterowania silnikami kół zastosowany jest mostek TB6612FNG, a podnośnikiem steruje popularny L293d. Całośc zasilana jest ogniwem litowo-polimerowym o pojemności 800mAh i napięciu 7,4V (2S). Robot posiada uchylną klapę co zapewnia łatwy dostęp do wnętrza. Program został napisany w Bascomie co nie było łatwym tematem ze względu na brak wielu funkcji (np.tabela wielowymiarowa), co zmotywowało mnie teraz do nauki języka C. Schemat blokowy programu. Film przedstawiający robota podczas pracy wraz z zrzutem obrazu z aplikacji androidowej: Pozdrawiam.
  2. 1 punkt
    Cześć! Chciałbym zaprezentować wam mojego robota o imieniu Janusz. Był to temat mojej pracy inżynierskiej. Robotem sterujemy zdalnie za pomocą innego komputera bądź laptopa z dostępem do internetu. Robot jest o tyle ciekawy, bo jest to chyba pierwsza konstrukcja na forbocie korzystająca z platformy Robot Operating System (ROS). Dzięki niej robot tworzy mapę otoczenia. Budowa: Złożenie robota wykonano w programie Autodesk Inventor. Zastosowanie systemu CAD umożliwiło wprowadzanie licznych zmian i poprawek bez potrzeby tworzenia rzeczywistych prototypów. Rama została wykonana z profili aluminiowych 20x20x15 [mm], a także płyt z pleksiglas. Rysunek poniżej przedstawia widok złożenia zaprojektowanej konstrukcji. Specyfikacja: -Wymiary: 530x440x580 [mm] -Waga: 8,5 [kg] -Ładowność: 3 [kg] -Prędkość: 0,5 [m/s] Napęd: Robot posiada napęd na cztery koła tzw. napęd burtowy (na podobnej zasadzie jeżdżą czołgi). W robocie zastosowano silniki Pololu 70:1 Metal Gearmotor 37Dx54L wraz z enkoderami magnetycznymi. Silniki zasilane napięciem 12 [V] charakteryzują się wysokim momentem obrotowym 1,37 [Nm], a także zadowalającą prędkością obrotową na poziomie 150 [obr/min]. Silniki przenoszą napęd na koła, za pomocą półosi wykonanych w technologi druku 3D z nylonu. Koła robota zostały zdemontowane z samochodu zabawki. Silnik wraz z kołami: Półoś: Część elektroniczna: Robot zasilany jest z akumulatora żelowego o pojemności 7,2 [Ah], wystarcza na ponad dwugodzinną pracę. Kinect zasilany jest poprzez stabilizator napięcia LM2940. Arduino Mega 2560 zasilane jest poprzez przewód USB i za pomocą dwóch motor shieldów MC33926 steruje pracą silników. Zastosowane enkodery inkrementalne umożliwiają pomiar z rozdzielczością 48 impulsów na obrót. Po przeliczeniu jeden impuls enkodera występuje co 0,08 [mm] przejechanej trasy. Schemat elektryczny wykonano w programie Eagle i pokazano poniżej. Oprogramowanie: W celu umożliwienia sterowania ruchem robota i budowy mapy otoczenia wykorzystano platformę programistyczną ROS. Jest ona zbiorem bibliotek i narzędzi pozwalających nie tylko na sterowanie, ale także symulację oraz wizualizację ruchu pojazdu. Jedną z głównych zalet Robot Operating System jest fakt, iż jest to platforma całkowicie darmowa, zarówno do celów naukowych, jak i komercyjnych. Oparta jest na systemie operacyjnym Linux, a możliwe języki programowanie to C++ lub Python. Sterowanie robotem odbywa się za pomocą klawiatury. Poniżej przedstawiono widok operatora (istnieje możliwość powiększenia okna z widokiem z kamery, co ukazano na filmie). Robot tworzy mapę za pomocą metody odometrycznej, niestety obarczona jest narastającym błędem wraz ze wzrostem przebytej trasy.Spowodowane miedzy innymi poślizgiem kół czy błędnym odczytem z czujników. Poniżej przedstawiam uzyskaną mapę korytarza akademika (w przyszłości postaram się skalibrować czujniki, tak aby uzyskać lepszą dokładność). Perspektywy rozwoju: W przyszłości zamierzam zamiast notebooka zastosować Raspberry Pi 2 z wgranym systemem operacyjnym linux. Napisać dodatkowe oprogramowanie zwiększające funkcjonalność robota. Dodanie pakietu navigation zapewni autonomiczność platformy, czyli możliwość poruszania się bez udziału operatora. Innym kierunkiem rozwoju może być napisanie oprogramowania do sensora Kinect, umożliwiającego wydawanie poleceń za pomocą gestów lub rozpoznawanie przedmiotów. Jest to mój pierwszy zbudowany robot. Z racji tego że wykonywałem go w akademiku bez profesjonalnego sprzętu część mechaniczna ma wiele wad i niedociągnięć. Sporo czasu zajęło zrozumienie i poznanie platformy programistycznej ROS. Dla zainteresowanych mogę udostępnić program na arduino. Proszę o opinie. Poniżej przedstawiam film z działania robota: __________ Komentarz dodany przez: Treker Poprawiłem filmik, teraz wszystko się zgadza
  3. 1 punkt
    klaudiusz, Zależy co robi. Ale znając typowe projekty dronów raczej analogówki tam nie ma Możesz tak zrobić.
  4. 1 punkt
    klaudiusz, datasheet, to angielska nazwa na noty katalogowe, w której znajdziesz informacje o danym układzie...
  5. 1 punkt
    W linku masz przykładowy schemat (tam akurat na pin A1). Prawdopodobnie w Twoim podłączeniu brakuje rezystora pomiędzy A0 a masą. http://botland.com.pl/content/157-fototranzystor-i-arduino-
  6. 1 punkt
    Nawet jeśli czujnik działa poprawnie (co można sprawdzić bardzo prostym programem więc nie wiem z czym masz problem), to Twój program wygląda na zdalnie sterowaną zabawkę. Tak jest napisany i tak działa - wykonuje wyłącznie proste polecenia, zero autonomii. A teraz chcesz by samochodzik nagle zmądrzał i robił coś samodzielnie. To wcale nie jest proste przy dotychczasowym podejściu, bo z jednowątkowego kodu typu czekaj_na_komendę-wykonaj-wróć_do_początku chcesz zrobić coś co będzie wykonywało Twoje polecenia i jednocześnie śledziło otoczenie. Zastanów się jak to zrobić w ogólności. Być może będzie to wymagało przebudowania całego kodu i zmiany podejścia do tego jak piszesz swoje programy i jak myślisz o ich wykonywaniu w procesorze. Do tego co zrobiłeś, łatwo autonomicznych zachowań nie wbudujesz bo przy jednowątkowym kodzie albo zabawka przestanie reagować na komendy (gdy będzie robić coś samodzielnie) albo nie zauważy przeszkody bo wykonuje głównie jakiś delay.
  7. 1 punkt
    Powyżej masz kilka porad n/t budowy mostka plus dłuższe artykuły na tym Forum. Zajrzałeś? Czytałeś? I na przyszłość: pytania powinny wyczerpująco opisywać problem. Nie wiemy ani czym chcesz ten mostek sterować (przyciski, procesor, jaki, jakim napięciem zasilany itp) ani w jakim trybie (start-stop czy PWM) ani nawet czy w dwóch kierunkach. Postaraj się bardziej, to może dostaniesz sensowną odpowiedź. Na razie masz następującą: nie, nie domyślamy się a co więcej, nie znając Cię trudno nawet przyjąć jaki poziom odpowiedzi będzie adekwatny do poziomu Twojego zaawansowania.
  8. 1 punkt
    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.
  9. 1 punkt
    Witam, Przedstawiam naszego pierwszego robota – Outsider. Jest to robot humanoidalny którego zaprojektowanie oraz wykonanie zajęło nam nieco ponad rok. Natchnieniem do zbudowania robota była seria artykułów użytkownika mog123. Robota wykonywaliśmy we dwójkę. Ja zająłem się częścią projektową i mechaniczną, natomiast Uczony zajął się elektroniką oraz oprogramowaniem robota i aplikacją komunikacyjną z PC. w założeniach miał być stosunkowo tani, nie chcieliśmy na niego wydawać grubych tysięcy, nie wiedząc czy w ogóle będzie działał zgodnie z założeniami, jak się później okazało nie minęliśmy się z prawdą. Mechanika : Projekt robota został wykonany w programie Inventor 2013, oraz Autocad 2013. Był on wykonywany stopniowo, najpierw zaprojektowałem i wykonałem nogi. Proste szeregowe połączenie 6 serw na nogę i jednego serwa na obrót korpusu. Następnie przyszedł czas na korpus oraz ręce-po 3 serwa na rękę (Rys2). Do połączenia korpusu z nogami oraz rąk z korpusem użyłem igiełkowych łożysk wzdłużnych. Po złożeniu robota w całość przyszedł czas na pierwsze testy. Niestety okazało się że nie otrzymaliśmy zadowalających efektów, gdyż szeregowa konstrukcja nóg generowała luzy w 4 miejscach (połączenie kolana z kostką i biodrem) co sumarycznie generowało duży luz i uniemożliwiało wygenerowanie chodu robota w sposób zadowalający. Przeprojektowałem więc nogi wzorując się na strukturze robota IGNIS bazującej na dwóch czworobokach przegubowych w kolanie połączonych odpowiednio z kostką i biodrem. Rozwiązanie to pozwoliło zachować ruchliwość nóg usztywniając jednocześnie konstrukcję. Nie odbyło się jednak bez wad. Zwiększyło się skomplikowanie konstrukcji i jednocześnie waga robota, która i tak była już za duża (końcowa waga to 2535g). Robot napędzany jest serwami modelarskimi TowerPro SG5010 (3 sztuki) orz TowerPro MG995 (16 sztuk) , wybrałem je ze względu na niską cenę i niską wagę. Początkowo napęd opierał się tylko na SG5010 lecz ze względu na niewystarczający moment wymieniłem je. Napędy te pozostawiają wiele do życzenia. Generowany moment jest zbyt niski i serwa pracują przy znacznym obciążeniu , co powodowało w skrajnych przypadkach (przy nagrywaniu ruchów robota), wysoki i długotrwały pobór prądu skutkujący spaleniem się mostków serw. Łącznie poległo ich 3 (..RIP..). Połączenia ruchome realizowane są przez tuleje z tworzywa wpuszczane w element aluminiowy (rysunek poniżej). Rozwiązanie to jest lekkie jednak generuje luzy i wymaga stosowania środków zabezpieczających gwint przed rozkręcaniem –Loctite. Powstałe luzy wynikają z faktu stosowania cięcia wodnego na dwóch różnych maszynach, dokładność wykonania elementów na pierwszej maszynie umożliwiała ciasne pasowania tulei, niestety reszta elementów wykonana była w innym zakładzie i błędnie założyłem taką samą dokładność wykonania. Elementy korpusu są wykonane wspomnianą wcześniej metodą cięcia wodnego, z blach aluminiowych o grubości 0.8, 2, 3, i 5 mm. Część elementów została wygięta na wcześniej zrobionej giętarce. Elementy o złożonym kształcie, nieprzenoszące obciążeń (m. in. głowa, część korpusu serwa ) zostały wykonane na uczelni przy pomocy druku 3d (abs), i następnie zostały pomalowane. Elektronika Wszystkim steruje serwokontroler oparty o mikrokontroler AVR, a dokładniej o AT90USB647. Wybrałem go z powodu możliwości realizacji sprzętowego interfejsu USB. Układ posiada 64kB pamięci FLASH, która pomimo niewielkiej pojemności była wystarczająca do nagrania kilkudziesięciu sekwencji ruchów. Taktowany jest rezonatorem kwarcowym 16 MHz, czyli pracuje z maksymalną częstotliwością, mimo to po podłączeniu do komputera poprzez USB widoczne są nieregularne, lekkie drgania poszczególnych serwomechanizmów (mniej więcej co sekundę), co może wskazywać na niedobór mocy obliczeniowej procesora. Sterowanie serwami odbywa się programawo za pomocą 2 timerów. Położenie kątowe opis Sterownik posiada 24 kanały PWM oraz 24 multipleksowane tory pomiarowe wykorzystywane do odczytu bieżących pozycji serw (stąd 4 kable zamiast 3 – widoczne na zdjęciu poniżej). Konieczne jest zastosowanie multipleksowania, ponieważ przetwornik ADC jest 8 kanałowy. Do tego celu wykorzystywane są analogowe muxy/demuxy. Aby zwiększyć dokładność przetwornika ADC pin AVCC podpiąłem do zasilania przez filtr LC oraz zastosowałem zewnętrzne, regulowane układem potencjometr-dzielnik źródło napięcia odniesienia TL432ACD. PCB zaprojektowałem w programie DipTrace, gdyż jego obsługa wydała mi się intuicyjna. Niestety pomysł z ,,uczeniem” robota poprzez próbkowanie napięć ze środkowych wyprowadzeń potencjometrów znajdujących się w serwach z częstotliwością 50 Hz legł w gruzach. O ile sama charakterystyka pozycji kątowej względem napięcia na tym wyprowadzeniu jest liniowa, o tyle rozbieżności pomiędzy poszczególnymi serwami wymaga kompensacji. Na tym etapie uznałem, ze jest to gra nie warta świeczki (nie ze względu na skomplikowanie, bo jest to dość proste, ale na czasochłonność). Poza tym, w tak prostej konstrukcji nie ma to sensu ze względu na jakość napędów. Logika jest zasilana z 5V poprzez stabilizator(zielona dioda sygnalizuje podłączenie), a same serwa z BEC-a przy 6V. Komunikacja z komputerem odbywa się poprzez wyemulowany przez mikrokontroler wirtualny port szeregowy RS-232 przy podłączeniu kablem USB. Robot jest sterowany poprzez bezprzewodowy kontroler z PS2. Do komunikacji wykorzystuję napisany przeze mnie w C# program. Posiada on możliwość sterowania każdym z serw na bieżąco (nie jest to czas rzeczywisty, ale wystarcza) oraz opcje zapisywania, odczytywania i generowania z różnymi prędkościami pozycji i sekwencji ruchów. Podsumowanie W tym miejscu pragniemy podziękować użytkownikowi mog123 za ,,zarażenie'' nas tematyką robotów humanoidalnych oraz za wsparcie merytoryczne. Ostatecznie po modyfikacjach robot prezentuje się tak: Filmik przedstawiający możliwości robota:
Tablica liderów jest ustawiona na Warszawa/GMT+01:00
×
×
  • Utwórz nowe...