Skocz do zawartości

Autonomiczny robot z układem wizyjnym


Elvis

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Fajna konstrukcja, jakby udało sie zrobić algorytm poprawnie wykrywający plamę światła, co jest jednak trudniejsze imo niż wykrycie linii. W ogóle to jak to obecnie sprawdzasz, liczysz jasność kawałka jako sumę wartości pikseli w RGB? Czy wykrywasz plamę analizując krawędzie?

Link do komentarza
Share on other sites

Próbowałem zmusić kamerkę do generowania strumienia we wszystkich możliwych formatach - RGB, YUV, GRAY itd. Niestety zawsze wysyłany jest JPEG. Wydaje mi się, że to efekt wykorzystania pierwszej lepszej (najtańszej) kamerki jaką mieli w sklepie. Na przyszłość trzeba wybrać kamerkę, która:

1) obsługuje nieskompresowane dane

2) są do niej moduły v4l

Co do wykrywania to liczę jasność 3 obszarów - po lewej, środek i po prawej. Następnie robot stara się skierować w tę stronę, gdzie jest najjaśniej.

W teorii i na testowych obrazach wszystko działało pięknie, natomiast sam robot zachowywał się bardzo kiepsko.

Zamiast jechać do światła wolał np. telewizor w sąsiednim pokoju.

Lepiej byłoby wykrywać coś bardziej charakterystycznego - np. plamkę lasera. Niestety nie mam takiego, ale pewnie dałoby dużo lepsze efekty. Najpierw filtr na kolor czerwony, później wyszukiwanie.

Ogólnie temat jest dość trudny, najlepiej byłoby przekompilować OpenCV na ARM i zacząć zabawę z algorytmem.

Link do komentarza
Share on other sites

Czyli rozumiem, że robot ma w polu widzenia nie tylko podłogę. W takim wypadku liczenie jasności raczej musi być zawodne, bo tło może być jaśniejsze w różnych miejscach, nawet bez dodatkowego oświetlenia. A może gdyby napisać algorytm, który wykrywa równy wzrost jasności w R, G i B, i obszar ograniczony w ten sposób traktuje jako plamę światła? Zapobiegło by to wykryciu jako obszaru jaśniejszego obiektu RGB(255, 255, 0) od RGB(0, 0, 255), mimo iż te obszary nie są od siebie jaśniejsze, tylko w innych kolorach.

Link do komentarza
Share on other sites

Na razie największym problemem jest dekodowanie jpeg-ów. Powoduje bardzo duże opóźnienia.

Dzisiaj kupiłem inną kamerkę. Na pudełku ma napisane, że obsługuje RGB24. Co ciekawe wcale nie obsługuje...

Zamiast tego przesyła YUYV. Rozpoznawanie jasności powinno być więc łatwiejsze niż w RGB.

A co najważniejsze obraz nie jest skompresowany.

Tylko te ilości danych do przetworzenia... Bufor obrazu dla 640x480 to 600kB. Obraz pobieram w 320x240, ale to nadal 150kB na ramkę.

Link do komentarza
Share on other sites

Elvis, Jaka to kamerka? Mógłbyś wrzucić przykładowy filmik nagrany tą kamerką. Dokładniej chodzi mi o to jak wyjdą poruszające się obiekty z różną prędością w różnym świetke. Machanie ręką przed kamerą z różną prędkością w różnym świetle wystarczy.

Pytam, bo za miesiąc z hakiem zaczynam budowę robota z dwiema kamerami jako jednymi sensorami (PC na pokładzie bo obliczeń bedzie sporo), a nadal nie mam wybranej kamery. Rozważałem Logitech C200.

Link do komentarza
Share on other sites

Logitech-a nie polecam. Mam chyba właśnie C200 - na obudowie nie ma symbolu, ale kupowałem najtańszą.

Główna wada to przesyłanie tylko i wyłącznie w formacie JPEG. Dekodowanie tego zajmuje wieki.

Zaraz dopiszę do artykułu rezultat testu innej kamerki - jest dużo lepiej.

Link do komentarza
Share on other sites

Hmm, przejrzałem sobie na wiki opis tego YUV, jeśli dobrze rozumiem, to chcąc mieć obraz czarno-biały (światłolub/linefollower) wystarczy tylko sobie wyciągnąć Y? I jesteśmy wtedy pozbawieni obliczania jasności na podstawie RGB. Ale rozumiem, że art miał być jak najbardziej uniwersalny, dlatego postanowiłeś przekonwertować to na bitmapę. No a platformy rzeczywiście szkoda, bo takie jeździdełko zawsze się przydaje, serwa nie są całe? bo wyglądają na zdjęciach jak by tylko plastik przytopiło.

Link do komentarza
Share on other sites

Wydaje mi się, że wyciągnięcie samego Y nie wystarczy. Niektóre przedmioty są przecież bez oświetlenia jaśniejsze niż inne, a robot ma podążać za światłem, a nie jasnymi przedmiotami. Trzeba jeszcze jakoś z innych składowych wyciągnąć informacje, czy to jasna plama na podłodze, czy inny obiekt.

Link do komentarza
Share on other sites

No szkoda platformy. Dobrze, że większego pożaru nie było. Tak to jest z LiPo - lekkie, wydajne ale niebezpieczne.

Moim zdaniem z YUV można zrobić więcej niż z RGB, więc nawet lepiej ze kamerka daje YUV a nie RGB.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.