Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Skaner przestrzeni 3D

genetix 20 Jun 2004 15:31 46908 127
Tespol
  • #1
    genetix
    Level 24  
    Kiedyś w którejś z gazet (EP lub EdW) był zamieszczony artykuł na temat "wzroku" robota. Autor przedstawił tam bardzo ciekawą koncepcję skanowania przestrzeni 3D przed robotem.

    W telegraficznym skrócie wyglądało to tak:
    robot wyświetla przed sobą poprzeczną linię (np. laserem lub LED) i obserwuje ją pod innym kątem niż kąt padania (np. z kamery umieszczonej powyżej źródła światła):
    - na idealnie płaskiej powierzchni będzie widział poziomą, poprzeczną linię (nazwijmy ją umownie poziomem "zero").
    - na powierzchni opadającej będzie widział poziomą linię, ale niżej niż na poziomie zero)
    - analogicznie zauważy linię wyżej, gdy podjedzie do pochylni w górę
    - dojazd do przeszkody z lewej strony (np. leżącego pudełka) zaobserwuje jako podniesienie linii po lewej stronie. co ciekawe: im wyżej linia - tym bliżej przeszkoda.

    PROBLEM: trzeba skonstruować układ do analizy położenia linii.

    1. jak wykonać "rzutnik" linii? pomysłem jest puszczenie wiązki laserowej na obracające się lusterko umieszczone lekko pod kątem do osi silnika. a może jakaś optyka a'la skaner kodów kreskowych?
    2. co wykorzystać w charakterze "kamery"? kamere, np USB? detektor z myszki optycznej? matrycę elementów typu fototranzystor?


    uważam, że problem jest arcyciekawy i proszę o propozycje i sugestie.

    PS. jak ktoś nie czai tej koncepcji to zamieszczę rysunek, ale to potrwa!
  • Tespol
  • #2
    kaldachar
    Level 14  
    Cześć

    Pomysł jest rzeczywiście ciekawy . Ale jak chcesz rozwiązać pomysł z tym lusterkiem ( odręczny szkic pomoże mojej wyobraźni ) . Co do samego czujnika w gre wchodzi raczej układ zbudowany z fofdiod . Koszty i oprogramowanie takiego odbiornika są proste . Jeżeli pojazd ma być autonomiczny to raczej ciężko będzie użyć procesora do obróbki wizji . Wydaje mi się że odpowiednio dobrana optyka i diody powinny załatwić sprawę :-)

    Pozdrawiam
  • #3
    genetix
    Level 24  
    :arrow: kaldachar
    przyjrzyj się skanerom kodów kreskowych w hipermarketach (tylko tym wbudowanym w ladę). Właśnie tam strumień lasera jest "rozrzucany" przez wirujące lusterko (wirujące albo drgające).
  • #4
    kaldachar
    Level 14  
    Rozumiem zasadę działania :-) . Moim zdaniem jest to trochę wrażliwy system jak na zastosowanie w robocie . Nie znam założeń robota i jego środowiska pracy , ale lustro jest mało odporne mechanicznie i łatwo go uszkodzić . Dodatkowo jeżeli robot będzie wystawiony na zmienne warunki środowiskowe to istniej szansa na zaparowanie lustra i wtedy będzie ciekawie :-) . Ale jako zabawka to powinno się sprawdzić .

    Pozdrawiam
  • Tespol
  • #5
    genetix
    Level 24  
    kaldachar wrote:
    (...) jeżeli robot będzie wystawiony na zmienne warunki środowiskowe to istniej szansa na zaparowanie lustra (...)


    zgadza się - ale na razie jesteśmy na etapie budowy prototypu. a w końcowym egzemplarzu można całość zamknąć w puszce z szybką :wink:
    Była to tylko jedna z propozycji - najlepiej będzie użyć kilku superjasnych diod LED - mają one dość szeroki kąt świecenia, więc wystarczy tylko zbudować osłonę (maskę) formującą strumień światła w linię. Dodatkową zaletą będzie łatwiejsze sterowanie diodami - powinny migać z określoną częstotliwością aby trudniej było przypadkowo oszukać czujnik innym źródłem światła.
  • #6
    kaldachar
    Level 14  
    Jak sobie teoretyzujemy , to można by zastosować zamiast lustra odpowiedni kolimator . Zadaniem kolimatora było by właśnie uformowanie wiązki prostopadłej do podłoża . Fajny byłby też efekt optyczny :-) . Wchodząc w sfere z pogranicza fantastyki ( jeżeli chodzi o wykonanie amatorskie ) to dobrym rozwiązaniem było by zastosowanie dwóch kamer sprzęgniętych ze sobą ( coś na wzór naszych oczu ) i na podstawie uzyskanego z nich obrazu stworzyć trójwymiarową mapę terenu . Następnie oprogramowanie szukało by drogi ( lub przeszkód ) :-) . Już widzę moc obliczeniową tego robota :-) . Ale pomarzyć zawsze można ...

    Pozdrawiam
  • #7
    ucy74
    Level 20  
    Poszukajcie sobie ogólnie o skanerach 3D. Problem zaczyna się gdy trzeba napisać soft do analizowania danych z kamerki video, tego nikt nie chce zamieścić ;-))

    A co do robienia linijki z kropki lasera to wystarczy przepuścić promień przez pręcik szklany - robi "ładną" kreskę, choć słabnącą im dalej od osi promiena lasera.
  • #8
    milik
    Level 23  
    Oglądałem kiedyś program na ten temat. A wnim konstruktorzy włożyli takie coś do modelu śmigłowca i wypucili go w teren. Mógł on się orjętować w tym terenie i rozpoznawać nowe obiekty i też było to zrobione na laserze
  • #9
    tszewc
    Level 16  
    Skanery tego typu ma w swojej ofercie SICK. Z tego co wiem są to niestety drogie urządzenia :(
    Zasada działania polega na odbiciu promienia lasera od wirującego z dużą prędkością lustra.
    Produkt specjalizowany: http://www.sick.pl/pl/oferta/katalogue/safety/opto/skanery/pl.html
    Tego typu skanery są wykorzystywane do pomiarów 2D i 3D w różnych aplikacjach.

    Chcąc zrobić skaner tego typu potrzeba (moim zdaniem) silnika synchronicznego do obrotu lustra, lasera małej mocy i wykorzystując np. zjawisko Dopplera mamy pomiar odległości. Wiedząc w którym aktualnie jesteśmy położeniu kątowym mamy skaner 2D.
    Skaner 3D będzie chyba ciut bardziej skomplikowany... ;)
  • #10
    kaldachar
    Level 14  
    Być może nie jestem mocny w fizyce :-) , ale nie mam pojęcia jak zrobić pomiar odległości w oparciu o prawo Dopplera . Czy mógłby kolega wyjaśnić tą metodę ??

    Pozdrawiam
  • #11
    morph13
    Level 25  
    genetix wrote:
    Kiedyś w którejś z gazet (EP lub EdW) był zamieszczony artykuł na temat "wzroku" robota. Autor przedstawił tam bardzo ciekawą koncepcję skanowania przestrzeni 3D przed robotem.


    Taka metodę analizay zamierzam zastosować w "oku robota" z zastosowaniem optyki i scalaka z myszy optycznej.
  • #12
    tszewc
    Level 16  
    OK, z Dopplerem to nie tutaj ;)
    Myślałem o prędkości...
    Niemniej jednak wiązka laserowa wykorzystywana jest do pomiaru odległości. Może mierzony jest czas przelotu? Niestety nie wgłębiałem się nigdy w szczegóły budowy takiego urządzenia.
  • #14
    ucy74
    Level 20  
    Skaner 3D jest zbudowany wg. zasady:

    1. Znana odległość i kąt pomiędzy osiami optycznymi lasera i kamery.
    2. Prążek rzucany przez laser zniekształca się na skanowanej powierzchni.
    3. Kamera widzi prążek, a na podstawie jego deformacji, program przelicza płaski obraz z kamery na siatkę punktów w przestrzeni.

    Zamiast pojedyńczego prążka lasera może być światło strukturalne (pionowe lub poziome paski, kolejno w kilku grubościach) z rzutnika LCD. W tym wypadku rzuca się jednorazowo na skanowany obiekt, wiele prążków, więc pomiar jest dokładniejszy.

    Tak jak pisałem, jest problem z free softem analizującym obraz z kamery.
  • #15
    genetix
    Level 24  
    Trzebaby poszukać formatu transmisji danych z kamerki internetowej na porcie USB. Odpadnie cały problem z analizą analogowego sygnału wizji.

    :?: Czy popularne kamerki internetowe można konfigurować software'owo w zakresie zmiany rozdzielczości?
  • #16
    mag32
    Level 19  
    Myślę [ ;) ], że do amatorskiej zabawki wystarczy skaner z myszki, jego rozdzielczość jest w tym przypadku wystarczsająca, a w necie są opisy protokołów transmisji tych modułów. Jeśli chodzi o analize punktów to mamy tam tylko jest albo nie ma czyli true/false a to nie powinno być aż takie skomplikowane dla atmela na przykład.
  • #17
    genetix
    Level 24  
    W notach katalogowych znalazłem przykładowe "screeny" z kamerki i nie są one dwukolorowe. Kamera rozróżnia kilka poziomów szarości - inaczej nie miałoby to zastosowania w detekcji przesunięcia myszy.

    Zastosowanie tej kamerki do skanowania przestrzeni 3D przed robotem wymaga obserwacji obszaru ok. 10-20cm - czyli niezbędna będzie optyka, gdyż normalnie przetwornik z myszy działa może na 2cm2. Dlatego podsunąłem pomysł zastosowania kamery USB i "obcięcia" jej rozdzielczości.
  • #18
    ucy74
    Level 20  
    genetix wrote:
    Dlatego podsunąłem pomysł zastosowania kamery USB i "obcięcia" jej rozdzielczości.


    Niestety - im większa rozdzielczość kamerki (lub aparatu cyfrowego) tym bardziej dokładny model przestrzenny. Tak więc, raczej nie należy nic obcinać.

    Przy okazji: Problem z softem do skanerów 3D nie leży w odbiorze strumienia wideo. Chodzi o soft, który na podstawie rejestrowanych kamerą załamań prążka z lasera, wylicza położenie punktów w przestrzeni. Czyli taki, który interpretuje odebrany obraz.
  • #19
    genetix
    Level 24  
    Zgodzę się, ale prostemu robotowi nie jest do niczego potrzebne rozróżnianie, czy na podłodze leży pantofel czy kalosz - tak czy inaczej jest to dla niego przeszkoda, którą trzena ominąć. A obcięcie rozdzielczości z np 800x600 na 240x320 zredukuje ogromnie ilość obliczeń potrzebnych do stworzenia modelu przestrzeni.

    Myślę, że wystarczyłaby rozdzielczość rzędu 120x120 czyli przy sensownym polu skanowania (np. 12x12cm) daje i tak dużą dokładność 10px2/cm2
  • #20
    ucy74
    Level 20  
    genetix wrote:
    prostemu robotowi nie jest do niczego potrzebne rozróżnianie, czy na podłodze leży pantofel czy kalosz


    Wszystko fajnie - prostemu robotowi do takich rzeczy wystarczy podczerwień. Skaner przyda się wtedy, gdy podłoga jest ogólnie "niepłaska" - usłana pantoflami, kapciami, kaloszami i krzesłami. Tutaj wszystko jest przeszkodą i trzeba wybierać która droga jest mniej kłopotliwa.
  • #22
    mag32
    Level 19  
    W kwestii rozdzielczości kamerki, napisł ktoś wcześniej, ż lepiej większa rozdzielczość bo dokładniejszy odczyt. Zasadniczo tak. Ale weźmy pod uwagę że wtedy potrzebujemy więkrzej mocy obliczeniowej dla procesora a tym samym więcej czasu i energii. Więc trzeba się zastanowić jaka dokładność jest nam niezbędna i zastosować do tego odpowiedni sprzęt. Jeśli chcemy faktyczie wykożystać durzą rozdzielczość to lepiej zbudować osoby moduł który będzie analizował tylko przestrzeń widzianą z kamerki i podawał gotowe wyliczenia do głównego procesora sterującego całym urządzeniem, zaoszczędzimy przynajmniej czas.
  • #23
    genetix
    Level 24  
    :arrow: mag32
    zgadzam się z Tobą, ale chyba lepiej dać tanią kamerę internetową (np. z allegro) np. na USB i softwareowo obcinać rozdzielczość aby dopasować ją do mocy obliczeniowej procka. Czy ktoś już coś takiego robił?
  • #24
    unitral
    User under supervision
    Witam, a ja mam takie male pytanko, czy skanowanie tereny moglo by odbywac sie poprzez radar dopplera? chodzi mi o ruchoma wiezyczke z umieszczonymi mikrofonami i prockiem ktowy wysyla fale w danym polozeniu wiezyczki, odczytuje odleglosci do najblizszej przeszkody i tak wkolko, tworzac w pamieci mape terenu?
    Czy cos takiego ma wogole sens?
    Pozdrawiam
  • #25
    rafels
    Level 25  
    CzeSC
    Dala robota poruszającego się po płaskiej dwuwymiarowej powierzchni zbędne wydaje się określenie trzeciego wymiaru. Ważne jest za to określenie odległości od przeszkód występujących na jego drodze.
    Najprościej wykonać taki pomiar za pomocą wiązki laserowej skanującej drogę przed robotem. Wiązka powinna poruszać się równolegle do podłoża. Pomiar odległości można wykonać za pomocą fotodetektora skierowanego dzięki optyce(lunetka) w tym samym kierunku co promień. Różnica intensywności odbitego światła można określić odległość od przeszkody. Sprawdzi się to jedynie w przypadku przedmiotów jednakowego koloru.
    Żeby uniknąć tego ograniczenia można skrzyżowąć osie optyczne wiązki lasera i detektora w pewnym punkcie przed robotem. Do odczytu odległości trzeba wykorzystać detektor liniowy w postaci linijki fotodiod(i odpowiedniej optyki). Przedmiot umieszczony bliższej odległości od punktu przecięcia osi da punkt świetlny położony bliżej lasera. Przedmiot umieszczony dalej da punkt bliżej detektora. Zmiany te powinna wykryć linka fotodetektorów dzięki odpowiedniej soczewce. Laser i detektor powinny się zgodnie poruszać badając potrzebny obszar. Odpowiednią selektywność fotodetektorów da użycie filtrów przepuszczających jedynie światło koloru lasera. Zapewni to pewność w różnych warunkach oświetleniowych.
    Oko tego rodzaju sprawdzi się jedynie w przypadku robota niezdolnego do poruszania się w trzecim wymiarze(pokonywanie schodów itp).
    Pozdrawiam.
  • #26
    muwie
    Level 14  
    a po co "obcinac" rozdzielczosc kamerki internetowej. Przeciez niektóży robią roboty współpracujące z kompem. I wtedy można cos takiego zrobic.
    kamera---------------------kompute----------------------robot
  • #27
    ucy74
    Level 20  
    muwie wrote:
    a po co "obcinac" rozdzielczosc kamerki internetowej...

    Chodzi o to, by do analizy obrazu używać mikrokontrolera 10 MIPS, a nie komputera 1000 PLN.

    muwie wrote:
    kamera---------------------kompute----------------------robot

    Mógłbyś podać jakieś konkretne, dostępne dla hobbystów, aplikacje?
  • #28
    stormblast
    Level 14  
    Jest taka dziedzina wiedzy jak fotogrametria. Jej przedmiotem jest zdalne rozpoznawanie terenu. Studiuję geodezję i robiliśmy na ćwiczeniach numeryczny model terenu z dwóch panchromatycznych zdjęć lotniczych, przy zastosowaniu specjalnego oprogramowania.

    Żeby zastosować takie coś w robocie, potrzebne są dwie skalibrowane kamery (wyznaczone ogniskowe, współrzędne środków rzutów) umieszczone w pewnej odległości (baza). Istnieją zakłady które się zajmują kalibracją. Ale do zastosowań amatorskich można byłoby zrobic to samemu.

    Poza tym potrzebny byłby soft do fotogrametrii w czasie rzeczywistym (takie oprogramowanie jest stosowane np. w obrabiarkach i amerykańskich rakietach bojowych). No, ale chyba trzebaby było napisać ten soft własnoręcznie, są książki np: "Fotogrametria Analityczna" w uczelnianych bibliotekach, w których jest dobrze pokazane podejście matematyczne do przetwarzania zdjęć.

    (W tym sofcie jest duzo obliczeń i transformacji pomiędzy układami współrzędnych: kamery, zdjęcia i terenu. Wszystko to liczy się z pomocą rachunku macierzowego i tam jest to wszystko opisane.)

    Do tego dobry jest skrypt "Fotogrametria" Butowtta i Kaczyńskiego (WAT). Jest tam super rozdział: fotogrametria naziemna bliskiego zasięgu, i tam jest wytłumaczone z rysunkami jak obliczać współrzędne przestrzenne ze zdjęć naziemnych. (a propo- dlatego nie wolno fotografować obiektów wojskowych). :P Myślę że dałoby sie to zrobić, ale największym problemem jest wykombinowanie tego softu.

    Pozdrawiam

    aha, i nie wiem czy mikrokontroler 89C1051 temu podoła . :wink:
  • #30
    stormblast
    Level 14  
    Na razie napisałem ze skryptu WAT o fotogrametrii naziemnej jak skalibrować kamerę, oraz w jaki sposób korzystając z 3 prostackich wzorów obliczyć współrzędne przestrzenne. Jak będę miał tylko czas popatrzę po tych linkach co je UCY74 podał.

    Doszedłem do wniosku że to wcale nie jest aż takie skomplikowane jak wcześniej pisałem. To da się zrobić! Więcej napiszę jak tylko będę miał więcej czasu.

    Pozdrawiam