Elektroda.pl
Elektroda.pl
X
Elektroda.pl
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 10696 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
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 21 Sie 2011 17:48
    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?

  • #3 21 Sie 2011 21:15
    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 22 Sie 2011 01:02
    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 22 Sie 2011 03:09
    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 22 Sie 2011 08:34
    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 22 Sie 2011 12:01
    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 22 Sie 2011 13:59
    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 22 Sie 2011 17:23
    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 22 Sie 2011 17:53
    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 26 Sie 2011 17:37
    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 26 Sie 2011 18:12
    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ń.