Skocz do zawartości

Mihao

Użytkownicy
  • Zawartość

    46
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Mihao wygrał w ostatnim dniu 12 kwietnia 2016

Mihao ma najbardziej lubianą zawartość!

Reputacja

11 Dobra

O Mihao

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Bielsko biała

Ostatnio na profilu byli

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

  1. Mihao

    Prototyp autonomicznego pojazdu

    @arti1295 Uno było pierwsze pod ręką w półce z elektroniką, ale faktycznie mini by pasowało lepiej. Na pewno było by "lżej" liczyć i więcej FPS można by wyciągnąć jednak w czasie budowania tego miałem trochę wydatków np uszkodzenie kamery 5mpx i konieczność zakupu nowej a wersji 3A nie było na rynku wtedy (projekt powstawał na przełomie 17/18) i nie chciałem inwestować oraz nie było oceniane estetyka wykonania bezpośrednio tylko działanie / implementacja. W przeciwnym razie zapewne powstaw by hat do Pi który by zawierał wszystkie elementy tak aby tylko wpiąć silniki. Jetson pozwolił by na więcej funkcji i bardziej złożone sieci(innego typu np konwolucjne) a także zastosowanie kilku kamer bo niestety z jednej jest małe pole widzenia i wbrew pozorom rozpoznawanie znaków nie jest takie łatwe dla procesora.
  2. 1) Prolog Cześć, dzisiaj opiszę wam mój projekt inżynierski w którym budowałem model autonomicznego pojazdu. W ramach pracy dyplomowej zaprojektowałem uproszczony model autonomicznego pojazdu. Model przystosowany jest do poruszania się w prostym środowisku testowym, symulującym prawdziwe otoczenie. Mój model wyposażony jest w kamerę, pozwalającą na pozyskiwanie informacji o otoczeniu. Obraz z kamery jest źródłem danych dla zaimplementowanej sieci neuronowej, która odpowiada za podejmowanie decyzji o kierunku przemieszczania się pojazdu. Całość pracy zawiera opis poszczególnych etapów tworzenia modelu, projektowanie architektury, implementacje oraz uczenie jednokierunkowych sieci neuronowych do prawidłowego działania. W projekcie użyłem Raspberry Pi, w którym została zaimplementowana sieć neuronowa stworzona w języku Python oraz Arduino odpowiedzialne za sterowanie podzespołami. Rozwiązanie zaproponowane w pracy opiera się szeregu transformacji obrazu za pomocą biblioteki OpenCV w celu ekstrakcji cech tak, aby sieć neuronowa otrzymywała tylko najistotniejsze informacje na podstawie których podejmie decyzje. 2) Wykorzystane elementy: Raspberry Pi B+ (chociaż lepsza była by Raspberry Pi 3b+) Raspberry Pi Cam 8Mpx Lego 42037 Lego Motor M Serwomechanizm SG90 (wymagało modyfikacji) Arduino UNO Rev3 Konwerter poziomów logicznych 2x18650 z rozbiórki laptopów + koszyk L298N - dwukanałowy sterownik silników - moduł 12V/2A 3) Przebieg Prac Praca nie determinowała typu modelu jaki zostanie opisany w pracy a jej głównym celem miało być czy implementacja w prosty sposób funkcji takich jak jazda na wprost, po łuku, skręt czy poruszanie się po okręgu jest możliwa do implementacji wykorzystując sieci neuronowe i wiedzę wyniesioną z toku studiów. W Pierwszej kolejności zrobiłem małe rozeznanie co do możliwości jakie mogłem wybrać i z grubsza można było je podzielić na 2 rodzaje: a) fizyczne - do których zaliczamy np przerobienie realnie istniejącego samochodu osobowego lub modelu pojazdu zdalnie sterowanego RC lub inne tego typu konstrukcje: b) software-owe - w skład których wchodzą takie propozycje jak: dedykowane symulatory, gry komputerowe (symulujemy wtedy klawisze które normalnie naciska gracz) lub własnoręcznie napisane programy do tego celu, np napisane w matlabie lub specjalna "gra" wykorzystana w tym celu. W moim przypadku realizowałem to w pojedynkę i ograniczały mnie dwa aspekty takie jak czas wykonania, koszt który musiał bym ponieść, oraz zasób wiedzy jaki trzeba było by do tego użyć dlatego musiałem znaleźć swojego rodzaju złoty środek którym był fizyczny model (bardziej namacalny) w pomniejszeniu czyli Model RC, ale ze nie posiadam żadnego modelu RC to wykorzystałem zestaw Lego 40237. 4) Hardware Podstawą pojazdu jest już wcześniej wspomniany zestaw Lego 42037 który posiada pewne braki i w tym rozdziale należało zabawkę z lego dostosować do potrzeb projektu. Głównym problemem był brak napędu oraz zdalnego sterowania, o ile z napędem na tylną oś poradziłem sobie bardzo szybko (były już w modelu półosie, dyferencjał i wał) i wystarczyło wstawić w odpowiednie miejsce kilka klocków i silnik Lego M to z układem kierowniczym trzeba było więcej się nagimnastykować. Aby przenie koła wprawić "w ruch" trzeba było znaleźć miejsce na serwomechanizm + zintegrować go z istniejącym układem kierowniczym, dodatkowym problemem był fakt że standardowe serwo ma "wyjście" na orczyk/ wieloklin) al układ kierowniczy lego był zakończony Axlem. Nie chciałem też ingerować i niszczyć klocków dlatego wykonałem nieinwazyjny adapter i skleiłem klejem na gorąco odpowiednio docięty orczyk z klockami które miały otwór na axle. W ten oto sposób nasza podstawa ma wyprowadzone 2 zestawy przewodów - jeden do Silnika napędowego a drugi do serwomechanizmu połączonego z układem napędowym. 5) Elektronika Teraz czas na elektronikę... która jest bardzo prosta bo w zasadzie sygnały sterujące musimy przesłać do 2 komponentów - silnika oraz serwa. W pierwotnym zamyśle było podłączenie bezpośrednio Raspberry Pi do tych 2 komponentów ale wiedziałem że "nie będzie czasu" na generowanie PWM softwareowo dla serwa + dla silnika napędowego dlatego zostało dołożone Arduino które potrafi to robić sprzętowo i odciąży Raspbery Pi od tego zadania. Zyskałem na tym niewielki wzrost skomplikowania elektroniki i oszczędziłem moc obliczeniową w Raspberry Pi. Z kolei silnik napędowy wymagał zastosowania "jakiegoś" mostka H aby nie upalić Raspberry bo wbrew pozorom Silnki z lego potrafią pobierać znaczącą ilość prądu ( więcej info można znaleźć tutaj ) dlatego wybór padł na wcześniej wymieniony gotowy moduł dwukanałowego (zostały zmostkowane oba kanały) mostka H - wystarczy teraz podać tylko odpowiedni sygnał PWM do mostka H i już mamy możliwość płynnej kontroli nad prędkością modelu. Ostatnim etapem było zestawienie komunikacji po porcie szeregowym Arduino z Raspberry Pi za pomocą portu szeregowego i w tym wypadku. Takie połączenie wymaga zastosowania konwertera poziomów logicznych gdyż Raspberry Pi toleruje tylko 3V3 volta a arduino daje 5V - gdyby tego nie było mogło by dojść do uszkodzenia Rarspberry Pi 6) Software I teraz to co tygryski lubią najbardziej - programowanie i tutaj jest podział na 2 części (ale nie mogę wrzucić tutaj kodów źródłowych) a) Arduino Dla Arduino został napisane proste API (ASCII) sterowane przez raspberry - oferowało zestaw prostych funkcji takich jak: - Ustaw silnik na x PWM (zakres 0-255) - Ustaw serwo na x PWM ( 0 - prawo, 90 - prosto, 180 - lewo) - START - Po tej komendzie można było uruchomić pojazd - STOP - powodowała zatrzymanie silnika i ustawienie serwa na 90 stopni (przygotowanie do jazdy na wprost) b) Raspberry Pi Zasada działania tego modelu wykorzystywała sieci neuronowe i nauczanie pod nadzorem nauczyciela ( w skrócie mamy 2 rodzaje uczenia sieci neuronowych - z wykorzystaniem nauczyciela czyli dajemy jakieś dane uczące, potem sprawdzamy na części danych kontrolnych i korygujemy tak długo aż osiągniemy dobre rezultaty i na koniec testujemy na nigdy nie używanych danych, same dane dzielimy w stosunku 4-1-1. Druga opcja to bez nauczyciela i sieć musi nauczyć się sama i jest to o wiele bardziej skomplikowane). Uproszczony schemat działania programu: Aby to działało musimy zaprojektować sieć ( u mnie rozważyłem kilka przypadków) i jest to zależne od ilości wejść i tego co chcemy uzyskać na wyjściu czyli sygnał sterujący w najprostszej wersji może to wykorzystywać kilka neuronów a najbardziej skomplikowane mogą ich mieć dziesiątki tysięcy ( w różnych warstwach) jednak korzystając z Raspbery Pi mamy ograniczą moc obliczeniową i musiałem ułatwić analizę i pracę sieci. Dlatego dokonałem ekstrakcji danych z obrazu i wstępnego przetworzenia w OpenCV gdzie pozyskuje informacje o położeniu linii drogi którą ma podążać: Idąc od lewej - obraz widziany przez kamerę, dalej sektory które obserwujemy aby dokonać analiz "ucieczki linii", trzeci obrazek to binaryzacja i wykrycie gdzie aktualnie znajduje się linia i jak "ucieka" aby można było określić w którą stronę należy skręcić aby jechać prosto. Dzięki temu na wejściu sieci neuronowej podajemy jedynie 2 parametry (położenie lewej i położenie prawej linii) co znacząco ułatwia obliczenia i projekt sieci. Mając te informacje zbieramy dane z przejazdów i zachowania linii podczas konkretnych manewrów np jazda na wprost, po łuku itp. I zapisujemy do pliku - co ważne w tym momencie sterujemy robotem ręcznie i od naszej precyzji sterowania zależeć będa w dużej mierze efekty jakie uzyskamy. Po zebraniu danych możemy przejść dalej. Uczenie sieci: Realizowałem w matlabie i toolboxie z sieciami neuronowymi i tam testowałem jak wyglądają efekty uczenia a następnie eksprtowałem sieć (sieć to tak naprawdę liczby które decydują o "wadze" neuronu poszczególnego) do własnej implementacji w pythonie i testowałem w realu co było pracochłonne. I tak aż do skutku i poprawiałem błędy aż do uzyskania efektu zadowalającego . Na koniec zostały przeprowadzone eksperymenty jak sieć radzi sobie z poszczególnymi testami. 7) Co bym zrobił inaczej W wersji 2.0 lub po prostu gdybym zaczął robić projekt od nowa zmienił bym niestety dosyć dużo widząc jakie braki / niepotrzebne problemy napotkałem na drodze: Rozwiązanie z modelem było dobre - jednak lepiej było do tego celu wykorzystać nie lego a model RC z uwagi na łatwiejszą integrację i o wiele mniejsze luzy w układzie np kierowniczym co generowało duże odchyłki a także dużo większą sztywność konstrukcji i spasowanie. Zastosowanie wydajniejszego SBC np nVidia Jetson lub nawet przenieść to na jakiś iCore desktopowy co zapewni wielokrotnie większą moc obliczeniową Zastosowanie kilku kamer najlepiej czarno białych + doświetlanie IR co pozwoliło by na działanie np o zmroku Wykorzystanie np biblioteki TensorFlow a nie własnej implementacji SN ( skrócenie czasu pisania i eliminiacja ewentualnych błędów z implementacją sieci) Ps. Ciężko opisać wszystkie zagadnienia związane z budową tego modelu w 1-2 kartkach A4 i tak aby nie zanudzić kogoś szczegółami - mam nadzieje że opis nie jest zbyt lakoniczny ale też nie przesadziłem z dokładnością. Może kiedyś powstanie wersja poprawiona to udostępniona szerszy i dokładniejszy opis.
  3. @Treker 2 projekty - 1) Projekt prostego robota z gąsienicami i silnikami pololu, raspberry Pi zero, drukowanego podowozia, modułu HC-SR04 i mostek w postaci gotowego modułu 2) "Self Driving car" Podowzie lego + integracja z napędami (servo oraz silnik lego M), mostek, Raspberry, kamera do Rapsberry 5mpx i Opencv oraz sieci neuronowe (tylko kodu nie mogę udostępnić ) Nadają się?
  4. Mihao

    Robomaticon, 04.03.2017 - Warszawa

    @Treker, byłem 3 raz i o ile impreza bardzo fajna, pojawiają się ciekawe konstrukcje, to jest pełno odgrzewanych kotletów, no ale jak ktoś jest pierwszy raz to robot rozdający lizaki jest w ok. Jedyne do czego naprawde można się przyczepi to organizacja, jak zwykle klapa, osoba prowadząca impreze zapowiada "właśnie zaczęła się konkurenca X" a tam... nikogo nie ma, nic się nie dzieje nawet obsługi nie ma. Plan samej imprezy mocno umowny i chyba służył tylko do za informacje czego można się spodziewać. Chciałem zobaczyć tam 2 konkurencje - micromouse i Deathrace i jak to wygląda, przy micromouse ten labirynt powinien być nowy, kolejny rok i te same problemy czyli nie równy tor a jeden micromouse pomimo że jechał poprawnie zatrzymał się na uskoku miedzy płytami. Pomiar czasu? telefonem, nawet u was jest artykuł który omawia jak zrobić takie urządzenie (o ile dobrze pamiętam). Mogli po popracować nad tym. Dobra dość już tego zrzędzenia, ale mi się podobało, czy przyjadę za rok? Pewnie tak o ile nie wypadnie mi coś innego ważnego.
  5. Wprowadziłem was w błąd bo zasugerowałem się niebieską wtyczką. otóż na zdjęciu powyżej jest konwenter TTL <--> COM http://www.friendlyarm.com/index.php?route=product/product&product_id=89 Otóż przegladnąłem dokumentacje i znalazłem taki zapis W sumie mogli wyprowadzić z tego mini hdmi lub chociaż video szczególnie że w specyfikacji Allwinner H3 jest wyjście dostępne dla HDMI i kompozytowe patrząc do dokumentacji tego arm
  6. Po co układ graficzny? Na stronie producenta można znaleźć takie zdjęcie - także chyba da się podłaczyć pod to wyjści obrazu. __________ Komentarz dodany przez: Treker
  7. Mihao

    Humanoid bada wraki statków i rafy koralowe

    Macie bład w artykule
  8. Mihao

    Nowa wersja Arduino UNO z wbudowanym Wi-Fi

    Ciekawi mnie jak bedzie wyglądała aktualizacja dla ESP i jak to będzie realizowane.
  9. Mihao

    Przebiegły Tyran Podstępności

    Ciekawa konstrukcja. Z czego są wykonane rakiety ? Pamiętasz cene tych silników? a i jeszcze można ich zdjęcie prosić?
  10. Mihao

    Minotaur

    Sterowanie impulsowe jest wymagane przy zwiększeniu prądu (np poprzez układ darlingtona) ponieważ dioda nie wytrzyma takiego prądu ciągłego i np diody TEFT4300 mają przez 100 ms max prąd 500mA ale już przy 1,5A tylko 10ms po wydłużeniu tego czasu dioda może ulec uszkodzeniu Tu nie chodzi o zakłócanie się tylko o zwiększenie ilości światła produkowanego przez diody w celu lepszych pomiarów. wn2001 Patrząc po notach katalogowych obu elementów wpływ światła słonecznego lub sztucznego bedzie znikomy ponieważ oba elementy są na częstotliwośc fali 940nm a światło widzialne kończy się na ok 800 a w zasadzie na lekko ponad 700 także "jesteś bezpieczny". A sam bład bedzie bardziej wynikał z współczynnika odbicia (albo jak kto woli absorbowaniu) światła przez ścianę i bardziej to trzeba kalibrować. Ale jak się myle to niech ktoś mnie poprawi.
  11. Mihao

    Minotaur

    Patrze teraz na schemat elektryczny i nie widzę jednego - czy wzmacniacie jakoś prąd na diodach IR? Diody są sterowane impulsowo ?
  12. Linki do filmiów z przejazdów finałowych, jeżeli znacie nazwy robotów lub jestescie właścicielami to przy filmiku dodam ją jeszcze.
  13. z domeny student.polsl.pl też mogę dostać pytki czy musi być z końcówką edu.pl ?
  14. Są dostępne gdzieś listy z wynikami ? Był ktoś z forum od nas? Tak nawiasem nie spodziewałem się takiej ilości dzieci które startują w porównainu do Robomaticon-u było ich o wiele wiele wiecej.
×