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

Rękawica wirtualna na BlueTooth - projekt

crazy_phisic 03 Cze 2007 23:35 23409 59
  • Rękawica wirtualna na BlueTooth - projekt
    Dzisiaj miałem przyjemność razem z kolegą Sebastianem Żurkiem przedstawić szerszej publiczności skonstruowane przez nas rękawice wirtualne. Skoro "zwykłych zjadaczy chleba" bardzo zainteresowało nasze rozwiązanie, tym bardziej liczę na odzew ze strony Koleżanek i Kolegów ;).

    W rękawicach znajdują się akcelerometry mierzące przyspieszenie w każdej z osi (XYZ) oraz liniowe czujniki Halla odpowiedzialne za detekcję zgięcia palców. Nad przetwarzaniem i wysyłaniem danych czuwa TINY26. Komunikacja odbywa się drogą radiową (poprzez moduły Bluetooth).

    Oprogramowanie na PC (autorstwa Sebastiana) pracuje na bazie połączenia serwer-klient. Gdzie serwer odpowiada za odbiór i analizę danych, natomiast klienci realizują już określone funkcje czerpiąc "przerobione" dane z serwera. Taki zabieg pozwala na uruchamianie wielu aplikacji równolegle: w czasie pokazów równocześnie pracowały programy symulujące wirtualna rękę, odtwarzające dźwięki modulowane przez ruch w każdej z osi jak również rysując wirtualne rysunki.
    Ponadto nie ma żadnego ograniczenia na to gdzie uruchomiony jest serwer a gdzie klient - możemy sterować ręką w jednym miejscu a rezultaty otrzymywać w dowolnym zakątku na świecie (jeśli jest oczywiście możliwość przesłania tam danych ;) )

    Projekt i wykonanie PCB:
    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt

    Prototyp w czasie testów:
    Zasilanie czujników Halla odbywa się przez oddzielny stabilizator (5V) posiadający wejście sterujące ON/OFF podpięte do mikrokontrolera.
    Rękawica wirtualna na BlueTooth - projekt

    Rozmiary zewnętrzne.
    Rękawica wirtualna na BlueTooth - projekt

    Na pierwszym planie akcelerometr.
    Rękawica wirtualna na BlueTooth - projekt

    Dla porównania inny moduł akcelerometrów wykonany przeze mnie (standardowa obudowa od IRDY)
    Rękawica wirtualna na BlueTooth - projekt

    W czasie pokazów:
    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt

    Rękawica wirtualna na BlueTooth - projekt
    Rękawica wirtualna na BlueTooth - projekt

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    crazy_phisic
    VIP Zasłużony dla elektroda
    Offline 
    Archiwizacja danych, interfejsy pomiarowe. Projektowanie i montaż urządzeń elektronicznych (krótkie serie, prototypy).
    crazy_phisic napisał 2244 postów o ocenie 94, pomógł 278 razy. Mieszka w mieście Zielona Góra. Jest z nami od 2003 roku.
  • OptexOptex
  • #2
    ghost666
    Tłumacz Redaktor
  • OptexOptex
  • #3
    crazy_phisic
    VIP Zasłużony dla elektroda
    Akcelerometr - LIS3L02
    Czujnik Halla - SS49
    Oba układy mają zwykłe wyjście napięciowe które można bezpośrednio podłączyć do przetwornika ADC mikrokontrolera.
  • #4
    Morg
    Poziom 13  
    Wow, spadłem z krzesła z wrażenia, wygląda naprawdę profesjonalnie - może jeszcze wrzuciłbyś jakieś video ??
    Dawno nie widziałem tak ciekawego projektu w tym dziale.
  • #5
    ciapciok
    Poziom 20  
    Uff, nareszcie jakiś porządny projekt. Czy to jest jakaś praca zaliczeniowa ? Jakie zastosowaliście moduły BT ?

    Pozdrawiam
  • #6
    crazy_phisic
    VIP Zasłużony dla elektroda
    :arrow: Morg, postaram się jeszcze dzisiaj umieścić film.

    :arrow: ciapciok, to nie żadna praca zaliczeniowa ;) tylko przykład wykorzystania podstawowych zjawisk fizycznych (siła grawitacji, bezwładność, efekt Halla itd.) w codziennym życiu.
    Moduł bluetooth - CCC-BT-240
  • #7
    ghost666
    Tłumacz Redaktor
  • #8
    crazy_phisic
    VIP Zasłużony dla elektroda
    :arrow: ghost666, jak już pisałem, czujniki pola magnetycznego odpowiadają za detekcję położenia palców. Oczywiście żeby działały one prawidłowo potrzebne jest pole magnetyczne ;), dlatego też w rękawice zostały wszyte magnesy. Bez dodatkowego wzmocnienia można wykryć już niewielkie ugięcie palców.
  • #9
    rockyr14
    Poziom 10  
    WOW naprawde niezły projekt mam pytanie czy ruch ręki też jest odczytywany ?? ( tzn np zgięciem łokcia nie ruszając nadgarstkiem :) )
  • #10
    mirekk36
    Poziom 42  
    crazy_phisic - NIESAMOWITE ;)

    a przy okazji moje pytanko tym razem nie o czujniki i procki - tylko o program na PC - pisaliście go sami czy jakiś gotowiec? choć wątpię czy gotowiec, a jeśli sami? to w czym?

    pozdrówka i powodzenia nad dalszym udoskonalaniem wynalazku ;)
  • #11
    gsm_pce
    Poziom 11  
    ciapciok napisał:
    Uff, nareszcie jakiś porządny projekt.

    Pozdrawiam

    Mysle ze na elektrodzie musza byc rozne projekty zarówno te mniej jak i bardziej zaawansowane ( oprócz klimatyzatorów ) :)
    Według mnie ta rękawica jest swietna, perfekcyjne wykonanie i jeszcze ta płytka PCB. Chciałbym kiedyś sprawdzić jak w rzeczywistości działa. Dla mnie 11/10 , az sie skala skonczyla :)
  • #12
    michal2666
    Poziom 20  
    Brak mi słów !! też chciałbym umieć wykorzystywać potęgę mikroprocesorów do tego stopnia by tworzyć takie cudeńka. SUPER wykonanie - bardzo lubię estetycznie wykonane projekty !!!. Moja ocena to 10/10 !!!
  • #13
    tomeeh
    Poziom 24  
    Crazy_phisic, bardzo dobra rzecz, gratuluję.
    Możesz powiedzieć 2 słowa więcej o sposobie przesyłu danych modułów bluetooth z µC? Czy wykorzystaliście po prostu RS-232 od strony µC, a całą resztą zajmuje się sam moduł BT?
    I jeszcze małe pytanie co do działania akcelerometrów. Czy w momencie startu programu rękawica musi znajdować się w określonej pozycji? Tzn. akcelerometr zmierzy tylko przyspieszenie, a więc zmianę prędkości w czasie, czy zatem pozycja wyjściowa musi być znana? Chodzi mi o to, czy to nie jest tak, że urządzenie reaguje na zmiany położenia, a więc w takim przypadku pozycja wyjściowa musi być ściśle określona?
    A może jest tak, że akcelerometr mierzy bez problemu przyciąganie ziemskie, i wówczas określanie pozycji wyjściowej jest zbędne?
  • #14
    dreki.eldheitur
    Poziom 11  
    Myślałeś o napisaniu programu w którym rękawica działa jak myszka tzn. określonemu położeniu palców odpowiada przycisk myszki lub jakiś ruch np. wskazanie palcem oznacza klikniecie a otwarta dłoń w zależności od kąta oznaczałby kierunek podążania kursora.
    No i czy w dalszej przyszłości myslałeś nad wszyciem w całe ubranko magnesów i wprowadzwnia całego człowieka do świata wirtualnego co by pozwoliło na pisanie programów nadzorujących i analizujących ruchy człowieka np. jakiś wirtualny trener :D
    Może trochę mnie poniosło ale myślę że byłbyś w stanie to zrobić. Tylko jeżeli zrobisz nie zapomnij wykupić patentu bo już na Ciebie czychają ogromne koncerny.
  • #15
    Li3R
    Poziom 11  
    wow jestem pod wrażeniem umiejętności i wiedzy. Konstrukcja iście z filmu Johny Mnemonic, przychylam się do pytania tomeeh o działanie akceleratorów?
  • #16
    KowalD
    Poziom 17  
    Ja jeszcze odnośnie tych czujników Halla... czy możliwa jest "detekcja" kąta zgięcia palców, czy program rozpoznaje tylko dwa stany (wyprostowane, zgięte)??
  • #17
    ferdu
    Poziom 13  
    konkretne. nadaje sie ;]
    ciekawe jak by sie tym w quaka gralo :P porbowaliscie odpalac ta rekawice na jakis grach czy jeszcze zabardzo nie ma mozliwosci ?
  • #18
    crazy_phisic
    VIP Zasłużony dla elektroda
    :arrow: rockyr14, czujniki analizują trzy składowe wektora przyspieszenia, wektor zdefiniowany jest w bazie związanej z osiami akcelerometru. Każda zmiana ruchu związana jest z przyspieszeniem, dlatego zgięcie łokcia zmieni mierzone wartości.

    :arrow: mirekk36, aplikacja to dzieło Sebastiana ;) i powstała od podstaw, napisana została w Pythonie i korzysta z kilku bibliotek (VPython, pySerial, Snack, numpy), jutro zamieszczę dokładne wyjaśnienia co, gdzie i jak.

    :arrow: tomeeh, Bluetooth to tylko medium, całe urządzenie pracuje na wirtualnym łączu szeregowym.
    W tej chwili zajmujmy sie tylko rotacją (bez translacji) więc punk początkowy jest na sztywno ustawiony.

    :arrow: dreki.eldheitur, już "łączymy" ruchy z Berylem ;).

    :arrow: KowalD, czujniki sa analogowe, więc dostaje na ich wyjściu napięcie proporcjonalne do pola magnetycznego.

    :arrow: ferdu, mamy sporo innych, znacznie ciekawszych zastosowań niż gry ;).
  • #19
    Maticool
    Poziom 20  
    Witam.

    Bardzo profesjonalny projekt, naprawdę, jak fabryczny. Mam tylko jedno pytanie:
    Rozumiem, że detekcja zmian położenia odbywa się jako obliczanie drugiej całki przyspieszenia po czasie? Jeżeli tak to powiedz jaka jest dokładność takiego systemu tzn. czy rękawica nie rozkalibrowuje się po pewnym czasie albo po bardzo szybkim ruchu?
  • #20
    crazy_phisic
    VIP Zasłużony dla elektroda
    :arrow: Maticool, zmierzone przyśpieszenie "ląduje" po prostu w równaniach ruchu, przy czym założenie jest takie że przy starcie programu położenie i prędkość początkowa jest zerowa. Natomiast interwał czasowy pochodzi od zegara systemowego PC.
  • #21
    Tomer
    Poziom 15  
    Super. Wyglada jak profesjonalny gotowy produkt.

    Pytanie mam takie: Czy 3 akcelerometry pozwalaja w jakis sposob okreslic kąt zgiecia nadgarstka lub skrecenia reki? W skrajnym przypadku bez tego ruch palcami moze sie odbywac np. w plaszczyznie poziomej zamiast pionowej. Jezeli nie, to czy dalo by sie zastosowac zyroskop zamontowany np. do górnej częsci dłoni?
    I jeszcze moze napisz cos o szacunkowych kosztach całosci

    Pozdrawiam
  • #22
    Pittt
    Poziom 31  
    Świetny projekt. Czy mógłbyś opisać rozmieszczenie czujników na rękawicy ? Najbardziej ciekawi mnie detekcja zginania palców. Czy czujniki i magnesy są mocowane na wewnętrznej czy zewnętrznej stronie dłoni/palców czy może jeszcze inaczej ? Ile stawów jest tak kontrolowanych ?
    Życzę powodzenia
  • #23
    KowalD
    Poziom 17  
    crazy_phisic napisał:

    :arrow: KowalD, czujniki sa analogowe, więc dostaje na ich wyjściu napięcie proporcjonalne do pola magnetycznego.

    no własnie... chodzi mi o to, czy program odwzorowuje to napięcie na jakis konretny kąt zgięcia palców??
  • #24
    artur00
    Poziom 25  
    Witam
    crazy_phisic: bardzo ciekawe urządzenie, gratuluje wykonania.
    I jedno moje pytanie, do odczytu danych z każdej osi XYZ są zastosowane te same podzespoły, więć rozdzielczość każdej osi jest taka sama. A więc jaka ?, na ile precyzyjna jest rękawica ? No może jeszcze jedno pytanie: jakie występuje opóźnienie względem "rękawicy" a odczytów już na systemie klienckim ?
    Pozdrawiam
    artur
  • #25
    MODI
    Poziom 17  
    Projekt świetny (do tego dwie rękawice L-P) 10/10
    Zastanawialiście sie czy można tym odczytać język migowy? Jeśli tak to można sporą kasę na takim patencie zrobić.
    Zastanawia mnie jak odczytujecie dane z akcelerometrów. Z tego co wiem to strasznie szumią.

    Pozdro życzę sukcesów
  • #26
    crazy_phisic
    VIP Zasłużony dla elektroda
    :arrow: Tomer, akcelerometry z zasady swojego działania mierzą "odstępstwo" swojego układu odniesienia od układu związanego z ziemią. Dlatego każda zmiana kąta jest rejestrowana.
    Koszt uwarunkowany jest ceną akcelerometrów, na uczelni ten problem rozwiązują władze ;), dlatego trudno mi ocenić ile kosztuje w Polsce (o ile jest oczywiście dostępny model trójosiowy). Pozostałe wydatki to moduł BT (~100zł), rękawice (~30zł), akumulator + pozostałe podzespoły (100zł).

    :arrow: Pitt, zdjęcie powinno rozwiać wątpliwości, w chwili obecnej odczytywany jest stan trzech palcy (czujniki Halla w tej roli to nasz patent ;) dlatego jeszcze pracujemy nad optymalnym rozmieszczeniem i czujników i magnesów)

    Rękawica wirtualna na BlueTooth - projekt

    :arrow: KowalD, wskazania czujników nie są liniową funkcją odległości (wynika to z zastosowania pola magnetycznego które w tym rozwiązaniu jest silnie niejednorodne, ale stałe dla określonej odległości od magnesu).
    Program odczytuje aktualną wartość pola i wrzuca do funkcji przeliczającej to na odpowiedni kąt, tutaj należy się małe sprostowanie (które dokładnie opisze Sebastian) ponieważ każdy palec to kilka połączonych obiektów które poruszają się w taki sposób aby w miarę realistycznie odwzorować ruch palców. Dlatego aktualna wartość pola odwzorowywana jest na odchylenie każdego ze składowych elementów palca.

    :arrow: artur00, akcelerometr ma wyjście napięciowe dla każdej osi, wystarczy podać to na ADC i wynik gotowy ;). Rozdzielczość przetwornika zaszytego w TINY26 to 10bitów.
    Co do opóźnień, przy uśrednianiu pomiarów dla symulatora ręki opóźnienie wynosi ~600ms. Przy czym tak duże opóźnienie to konsekwencja "chamskiego" wysyłania niekodowanych danych z niewielką prędkością (19200bps).

    :arrow: MODI, język migowy, rehabilitacja osób niepełnosprawnych, terapia ruchowa to tylko kropla w morzu potencjalnych zastosowań, pomijam tak oczywiste kwestie jak kontrolery gier, wszelkiego rodzaju zdalne manipulatory itd.
    Sygnał jest bardzo "spokojny" (nie widać tego na zdjęciach, ale płytka jest dwustronna, warstwa spodnia oprócz skutecznego ekranowania wpływa na usztywnienie całej konstrukcji), jedyne obserwowane "szumienie" to oczywisty błąd kwantyzacji (pomijam stały błąd związany z budową ADC).
  • #27
    McRancor
    VIP Zasłużony dla elektroda
    Gratuluję, jak poradziłeś sobie z filtracją danych z akcelerometru? Co zrobiłeś z szumami? Stosowałeś jakieś zaawansowane filtry - może Kalmana?

    Całkowanie prostokątne czy trapezowe?
  • #28
    prezesjasko
    Poziom 11  
    Rozumię, że akcelerometry mierzące statyczne przyspieszenia (grawitacja) można wykorzystać do obserwacji zmian kąta położenia obiektów w przestrzeni roboczej takiej rękawicy. A co z przemieszczeniem się dłoni? Jak wykryć, że delikwent nie zmieniając nachylenia dłoni ruszył ręką w prawo, czy lewo? Jak wiadomo stosuje się tu metodę całkowania. Ale ta bez wspomnainych w powyższych postach zaawansowanych filtracji szumów (np Kalman i nie tylko) jest kompletnie bez użyteczna. Do tego dochodzą siły odśrodkowe w trakcie ruchu ręką, a kąty nachylenia nie wystarczy wykrywać przy pomocy samych akcelerometrów (zwykle dorzuca sie żyroskopy). Czy wasz projekt rozwiązuje tą kwestię?? A na zdjęciu to MMA7260 (Freescale)?
  • #29
    remzibi
    Poziom 24  
    McRancor napisał:
    Gratuluję, jak poradziłeś sobie z filtracją danych z akcelerometru? Co zrobiłeś z szumami? Stosowałeś jakieś zaawansowane filtry - może Kalmana?

    Całkowanie prostokątne czy trapezowe?


    Moze nic nie wniose do tematu ale dokladnie o to samo chcialem spytac , plus - i jezeli stosujesz filtry to upchales je do procka czy do softu w PC ?
  • #30
    KuchateK
    Poziom 11  
    A ja ponawiam pytanie Maticool'a, gdyz nie padla na nie odpowiedz.

    Jak jest z dokladnoscia rekawicy przy dluzszym uzytkowaniu? Czy po pewnym czasie (zalozmy nieprzekraczanie zakresu akcelerometru, bo to z pewnoscia wysle calosc "w buraki") nadal wraca w to polozenie w jakim zostala wystartowana? Jaki jest uzyteczny czas pracy po ktorym trzeba resetowac uklad?

    Jak duza jest swoboda ruchow? Czy trzeba ograniczac normalne ludzkie wymachiwanie, czy sprzet nie ma z nim problemow?