Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Robot mobilny, rozpoznający znaki drogowe.

richardsenior 21 Sie 2011 15:19 10792 12
  • Robot mobilny, rozpoznający znaki drogowe.

    Witam serdecznie

    Projekt robota, który przedstawiam posiada zewnętrzne sterowanie oparte na sieciach neuronowych. Sieci dobierane i uczone są za pomocą algorytmu ewolucyjnego i testowane na wirtualnym modelu środowiska w programie Matlab. Sterowanie składam w Matlab\Simulink w formie schematu blokowego z wstawkami kodu. Program udostępnia opcję automatycznej kompilacji do pliku dll. Interfejs pośredniczący między bibliotekami a robotem napisałem w środowisku Qt4.

    Robot rozpoznaje charakterystyczne znaki i na podstawie ich podejmuje decyzję o kierunku ruchu.


    Link



    Link


    Uczenie sieci neuronowej przebiega automatycznie. Program generuje nowe sieci neuronowe, uczy je i testuje w modelu wirtualnego środowiska.


    Link



    Link


    więcej na stronie projektu

    Fajne! Ranking DIY
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
    O autorze
    richardsenior
    Poziom 11  
    Offline 
    zapraszam na moją stronę www.ewolucyjny.pl budowa robota mobilnego, sieci neuronowe, algorytmy ewolucyjne
    richardsenior napisał 26 postów o ocenie 394, pomógł 0 razy. Jest z nami od 2009 roku.
  • BotlandBotland
  • #2
    piotrva
    Moderator na urlopie...
    Cóż, projekt bardzo ciekawy, na prawdę dużo pracy włożyłeś szczególnie w oprogramowanie sterujące na PC. Czy planujesz kiedyś zastosowanie innego mikrokontrolera na pokładzie i uczynienie robota autonomicznym?
  • BotlandBotland
  • #3
    spacjer
    Poziom 9  
    Witam! Bardzo fajny projekt i widać masę włożonej pracy oraz znajomość różnych dziedzin techniki. Mam małą uwagę odnośnie algorytmu ewolucyjnego - wyraźnie widać, że w jednym pokoleniu pojedyńcze chromosomy mają całkiem ładne wyniki. Jednak kolejne, bazujące na nich mają chyba zbyt duże mutacje lub zbyt mało osobników populacjcji bazuje na kodzie genetycznym najlepszych osobników poprzednich pokoleń.

    A teraz z innej beczki - lato i natrętne komary sprawiają, że coraz częściej myślę o zbudowaniu laserowego działka na komary. Chętnie bym poznał jakieś szczegóły odnośnie algorytmu rozpoznawania obrazu (wykrywanie znaków drogowych). Czy w tym projekcie bazuje on także na sieciach neuronowych?

    Pozdr.
  • #4
    richardsenior
    Poziom 11  
    Jest opcja żeby umieścić komputer na pokładzie, teraz procesor z telefonu pewnie by wystarczył ale tu wchodzi kwestia ceny

    Sam robot zamknął mi się 600zł ale tutaj nie liczę masy spalonych układów itp.

    spacjer

    Taka specyfika algorytmu, powoli się rozkręca, prawdopodobieństwo przekazania najlepszego genu zależy od ilości poprawnie wytrenowanych robotów. Wtedy mam pewność że rozwiązanie danego problemu będzie optymalne

    Rozpoznawanie obrazu nie jest oparte na sieciach neuronowych. Zwykłe porównywanie do wzorców

    Z chęcią zobaczę Twoją maszynkę do zabijania. Co powiesz na czułe mikrofony i lokalizacja ich po bzyczeniu. Ja tak je często zabijam
  • #5
    skynet_2
    Poziom 26  
    @richardsenior fajny projekt, czy mógłbyś opisać jak następuje uczenie sieci neuronowej korzystając z wzorca?
    Napisałem w C++ i Qt4 program do symulacji sieci ale nie mam pomysłu jak ją czegoś nauczyć.

    Kiedyś planowałem utworzyć sieć 3d z możliwością "przepinania" wejść i dodawania/usuwania neuronów w czasie pracy, ale trzeba zacząć od czegoś prostszego ;)
  • #7
    piotrva
    Moderator na urlopie...
    Jakoś nie chciał bym się znaleźć w pobliżu takiego lasera. Co jak na mnie znajdzie komara albo wiązka się odbije? A budowanie "ogrodzeń" z lasera a co jak komar górą przeleci?
    Jakoś w domu wolę zainwestować w zwykłą siatkę, a nie drogie i potencjalnie niebezpieczne dla domowników urządzenie...
    Co do Robota - jeździ trochę wolno... Czy nie chciałbyś zmienić silników na jakieś nieco szybsze, lub programowo przyspieszyć robota?
    Ew. dodaj wykrywanie jakichś linii zamiast desek - też będzie ciekawsza zabawa.
  • #8
    richardsenior
    Poziom 11  
    najprostsze sieci neuronowe to zwykłe aproksymatory funkcji n zmiennych, uczy się je podając pary X i F(X), bardzo przydatne w inteligentnych układach regulacji, choćby przy sterowaniu wtryskami na podstawie jakości spalin w samochodzie.

    skynet_2
    Też kiedyś myślałem o tym, samouczące się monstrum :D, jednak jest jedno ograniczenie. Moc obliczeniowa komputerów, są za wolne. Tu potrzeba obliczeń równoległych, może coś z CUDA, ale to dalej będzie bardzo wolna maszynka. Najlepsze by były procesory optyczne, ale słuch o nich zaginął, pewnie były za dobre, każdy szyfrowanie im nie straszne :D.

    Są gotowe algorytmy uczenia, w sieci pełno jest poradników. Jeśli masz dostęp do Matlaba, to polecam. Przyjemna nauka na gotowych już funkcjach.

    piotrva
    Tak ustawiony, to był jego pierwszy raz, chciałem żeby się przyzwyczaił do terenu:). Dodam że napędem robota są silniki krokowe i jest to prototyp, gdybym znalazł trochę czasu i funduszy, to w następnej wersji wiele rzeczy bym ulepszył. Lepszy mikrokontroler, wiffi, dwie małe kamerki wielkości tych od aparatu, pełna obudowa ( oj gdyby miał drukarkę 3D ;) ) i w zależności od funduszy skaner laserowy albo czujniki ultradźwiękowe.

    zmasowany atak

    Link
  • #9
    skynet_2
    Poziom 26  
    richardsenior napisał:
    skynet_2
    Też kiedyś myślałem o tym, samouczące się monstrum :D, jednak jest jedno ograniczenie. Moc obliczeniowa komputerów, są za wolne. Tu potrzeba obliczeń równoległych, może coś z CUDA, ale to dalej będzie bardzo wolna maszynka. Najlepsze by były procesory optyczne, ale słuch o nich zaginął, pewnie były za dobre, każdy szyfrowanie im nie straszne :D.
    Miałem na myśli rozbudowę działającej sieci[przetwarzającej już inne dane], np. masz sieć która rozpoznaje litery i pojawiają się znaki których sieć nie rozpoznaje, wtedy sieć sama tworzy dodatkowe wyjścia pod te znaki[bez nauczyciela], samo-uczące się monstrum hmm w bardzo małej skali mogło by to działać[mrówka ma ok 10k+ neuronów].
  • #10
    richardsenior
    Poziom 11  
    skynet_2 napisał:
    Miałem na myśli rozbudowę działającej sieci[przetwarzającej już inne dane], np. masz sieć która rozpoznaje litery i pojawiają się znaki których sieć nie rozpoznaje, wtedy sieć sama tworzy dodatkowe wyjścia pod te znaki[bez nauczyciela], samo-uczące się monstrum hmm w bardzo małej skali mogło by to działać[mrówka ma ok 10k+ neuronów].


    To chyba sieci samoorganizujące się by były dobre. Polecam książki
    "Metody i techniki sztucznej inteligencji" Rutkowski Leszek i "Sieci neuronowe w zastosowaniach".

    Ogólnie jest taka zasada że gdy mamy 2n neuronów to potrafią one nauczyć się n różnych wzorców. Są do tego gotowe algorytmy. Co do dokładania w trakcie, hmm to już naprawdę zaawansowany poziom, w niektórych architekturach niedopuszczalny ze względu na stratę danych wcześniej nauczonych.
  • #11
    skynet_2
    Poziom 26  
    Dzięki za informacje o książkach
    Bardzo dziękuje za informacje o "Metody i techniki sztucznej inteligencji" Rutkowski Leszek, zmodyfikowałem nieco mój program a dokładniej neuron żeby zachowywał się jak perceptron i działa, to żyje! to żyje!! hahahaha[upiorny śmiech], wyznacza poprawnie granice zbiorów (x, y), a co do:
    richardsenior napisał:
    Ogólnie jest taka zasada że gdy mamy 2n neuronów to potrafią one nauczyć się n różnych wzorców. Są do tego gotowe algorytmy. Co do dokładania w trakcie, hmm to już naprawdę zaawansowany poziom, w niektórych architekturach niedopuszczalny ze względu na stratę danych wcześniej nauczonych.
    Lepszy przykład: jest sobie duża sieć 1000+ neuronów która realizuje jakieś zadanie, można sprawdzić podczas działania które neurony zmieniają swój stan wyjściowy, jeżeli są jakieś "statyczne" to można by je usunąć, w następnej warstwie należało by skorygować "sztuczne wejście" każdego neuronu żeby zniwelować różnice poziomu[inna ilość wejść]. W ten sposób można próbować stworzyć sieć która by ewoluowała.
  • #12
    wlw_wl
    Poziom 38  
    W symulacji działania z renderowanym widokiem 3D ostatni ze znaków widzianych przez robota to nakaz skrętu w prawo, podczas gdy droga skręca w lewo:


    Link


    - pomyłka z bitmapą w symulatorze czy jakiś większy error?
  • #13
    richardsenior
    Poziom 11  
    wlw_wl napisał:
    W symulacji działania z renderowanym widokiem 3D ostatni ze znaków widzianych przez robota to nakaz skrętu w prawo, podczas gdy droga skręca w lewo:

    http://www.youtube.com/watch?v=yZzyuLO7zek&t=55s

    - pomyłka z bitmapą w symulatorze czy jakiś większy error?


    Ani to ani to, znak mówi robotowi aby trzymał się prawej ściany labiryntu. Analogicznie pozostałe znaki informują robota aby poruszał się przy lewej ścianie i jechał prosto gdy tylko ma wolną przestrzeń.