Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Kamera śledząca ruch - jaki uC?

Sphinx_pl 18 Jan 2010 18:50 4399 14
Computer Controls
  • #1
    Sphinx_pl
    Level 10  
    Witam.

    Chciałbym zbudować zabawkę obracająca głowę w kierunku wykrytego ruchu.
    Do obserwowania ruchu chciałbym wykorzystać kamerę monochromatyczną o niskiej rozdzielczości, a do poruszania głową 2 silniki.

    Jak trudne jest to zadanie?
    Czy jedynym mikrokontrolerem który sobie poradzi z tym zadaniem jest ARM?
    Jak przetwarzać obraz za pomocą mikrokotrolera?
    Proszę o pomoc w doborze kamery i wszelkie sugestie na temat realizacji tego pomysłu
  • Computer Controls
  • #2
    atom1477
    Level 43  
    Jest to dość trudne. ARM będzie jak najbardziej na miejscu.
    Będzie trzeba użyć wielu filtrów do obrobienia takiego obrazu.
    Kamera musi dawać dużo klatek na sekundę ale rozdzielczość nie musi być duża. Jak zresztą sam napisałeś.
    Można by polecić Ci słynna już kamerę MCA-25, ale nie wiadomo jak szybko ona potrafi zwracać dane. Chyba nie za szybko. Nawet w trybie podglądu 60x80pixeli daje chyba tylko z 5 klatek na sekundę.
    Duża ilość klatek na sekundę raczej jest konieczna żeby układ mógł śledzić ruch. Przy małej ilości klatek na sekundę w jednej klatce obiekt będzie w jednym miejscu a na drugiej klatce zupełnie gdzie indziej i może już być inaczej oświetlony i procesor za Chiny się nie domyśli że to jest ten sam obiekt.
    Przy dużej ilości klatek na sekundę różnica pomiędzy sąsiednimi klatkami będzie mała i powoli śledzenie obiektu będzie jakoś szło.
    Czyli ostatecznie to potrzebujesz szybkiej kamery.
    Może być jakaś z telefonu komórkowego nawet. Bardzo trudno dostać do nich dokumentacje, ale do kilku jest.
    Procesor AT91SAM9260 ma nawet dedykowany układ peryferyjny do podłączenia kamery z interfejsem równoległym.
    Do tego mogła by iść jakaś kamera z telefonu Siemens albo klasyczna kamera PO3030 do kupienia na przykład w MARITEXie (tyle że droga ona jest).

    Dodano po 3 [minuty]:

    No chyba że chodzi Ci nie o śledzenie obiektów w ruchu, ale jedynie o wykrywanie ruchu. Do tego nawet AVR by wystarczył.
    Mam nawet pomysł jak wykryć ruch.
    Odejmujesz od siebie dwie klatki i robisz transformatę DCT. Jak gdzieś będzie bardzo dużo współczynników niskoczęstotliwościowych to znaczy że tam nastąpił ruch.
  • Computer Controls
  • #3
    Sphinx_pl
    Level 10  
    Chodzi mi o śledzenie ruchu ale nie konkretnego obiektu, raczej takiego gdzie ruch ten był największy, przykładowo człowiek stojący przed kamerą lekko się porusza ale gdy machnie ręką aby kamera podążyła za tą ręką. Pomysł z odejmowaniem klatek wydaje się bardzo sensowny
  • #5
    Sphinx_pl
    Level 10  
    Niestety nie mam doświadczenia, sam nic nie robiłem, a na uczelni tez za dużo nie ma. Ale mam na to bardzo dużo czasu.
  • #7
    Sphinx_pl
    Level 10  
    Praca magisterska, mam jeszcze półtorej roku, chciałem zrobić coś co mnie zainteresuje i czegoś nauczy zamiast pisać referat:P
  • #8
    atom1477
    Level 43  
    Wiesz co? Przypomniałem sobie że kilka miesięcy temu w internecie widziałem coś podobnego na sensorze optycznym z myszki.
    Było to chyba na procesorze AVR.
    Trzeba by poszukać wpisując w google "AVR" + "Optical Mouse".

    No to w rok może coś się działa ;) I zostanie pół na udoskonalanie.

    Dodano po 15 [minuty]:

    http://www.opensourcemouse.org/wiki/Mouse_Hacks
    http://www.instructables.com/id/Mouse-Cam/
    http://spritesmods.com/?art=mouseeye

    Chiałeś małą rozdzielczość no to masz ;)
  • #9
    Sphinx_pl
    Level 10  
    Faktycznie da się przerobić sensor optyczny z myszki na skaner, ale z tego co piszą rozdzielczość to tylko 18 na 18 pikseli. To chyba zbyt mało.. i nie wiadomo jak z zasięgiem

    Convert Your Old Optical Mouse CCD into a Scanner
  • #10
    d.d
    Level 20  
    Znalazłem coś takiego , nie zagłębiałem się w szczegóły ale może znajdziesz tu coś ciekawego.
    Link
    Link


  • #11
    Sphinx_pl
    Level 10  
    Dokładnie o coś takiego mi chodzi, tylko bez kółek:)
  • #12
    d.d
    Level 20  
    Właśnie trafiłem na ten film.



    Zastosowano to Kamerę C3088 (do kupienia w USA )i UC AtMega8 .
    Poczytaj o AVRcam : AVRcam Manual PDF , jrobot lub CMUcam.
    Zobacz jeszcze co piszą w tym temacie https://www.elektroda.pl/rtvforum/topic501711.html .

    I jeszcze odnośnie wspomnianej kamery MCA-25 niedawno robiłem testy i po wysłaniu kamerze takich prędkości :(1200,2400,4800,9600,19200,38400,57600,460800,921600) , kamera odpowiedziała
    AT+IPR=921600.
    Przy tej prędkości w trybie podglądu da się wyciągnąć z 12 fps albo i więcej (jak sprawdzę to dam znać).
  • #13
    atom1477
    Level 43  
    921600? Tego nie wiedziałem.

    12fps ale chyba tylko w trybie podglądu 60x80pixeli.
    Co akurat tutaj mogło by być wystarczające.
    Co do kolorów. Sphinx_pl mówi że chce kamerę monochromatyczną.
    Ale kolorowa będzie lepsza. Uprości program. Bo mając kolory o wiele łatwiej wykryć ruch a jeszcze łatwiej obiekty. Więc będzie mniej filtrowania sygnałów.
    W dodatku kupienie monochromatycznej kamery będzie dość trudne ;)

    Dodano po 3 [minuty]:

    A co ją tak trzęsie?
  • #14
    Sphinx_pl
    Level 10  
    czas zabrac sie do roboty, chcialbym zakupic czesci, prosze o pomoc, idac za podpowiedza atoma zdecydowalbym sie na kamere http://www.maritex.com.pl/pl/shop/productInfo...1/backurl/shop%2Fspecial%3Fid%3D11%26page%3D1 .
    Mikroprocesor wolalbym jednak AVR, z ARMem sobie nie poradze, a da sie to zrobic na AVR (https://www.elektroda.pl/rtvforum/topic1587273.html)
    Prosze o pomoc który procesor najlepiej by sie nadawał do tego celu (musi takze sterowac jednym lub dwoma silnikami) i w jaki sposob połaczyc go z kamerka, co oprocz programatora i wczesniej wymienionych czesci musze kupic
  • #15
    Sphinx_pl
    Level 10  
    sprecyzuje pytanie, wybrana kamera działa na: Clock Frequency 24 MHz, a procesory ATmega mają maksymalnie 20 MHz. Czy możliwe jest zatem sprawne działanie takiego układu? Jest też jakaś nowa rodzina uc ATxmega (http://www.atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=part_no&Direction=ASC) o maksymalnym taktowaniu 32 MHz, ale to jeszce ciągle nowość..