Noszony zestaw modułów inercyjnych DIY

Noszony zestaw modułów inercyjnych DIY
Pobierz PDF Download icon
Digitalizacja ruchów ludzkiego ciała jest niezwykle ważna m.in. w systemach rzeczywistości wirtualnej czy rozszerzonej. Przeniesienie informacji o naturalnych ruchach np. dłoni do komputera, w czasie rzeczywistym, pozwala na zastosowanie tych informacji na przykład do sterowania oprogramowaniem. Pomysł ten nie jest nowy, a systemy pozwalające na śledzenie ruchów są już dostępne na rynku, jednakże daleko im do doskonałości. Większość z nich wykorzystuje ruchome, mechaniczne przetworniki do digitalizacji ruchów (np. czujniki potencjometryczne umieszczone w stawach) - stawiają one pewien mechaniczny opór podczas ruchu i działają na ogół tylko w jednej osi, a znakomita większość ludzkich stawów skręca się, przynajmniej w pewnym stopniu, w dwóch lub więcej osiach. Problem ten rozwiązują moduły inercyjne (IMU). Pozwalają one na śledzenie ruchu obiektu w trójwymiarowej przestrzeni i nie mają wad sensorów mechanicznych.

Rysunek 1. Przykładowa aplikacja modułów IMU - zamontowane na nadgarstkach, pozwalają śledzić ruchy rąk

W poniższym artykule przedstawimy ciekawy projekt modułu do śledzenia ruchów ciała z wykorzystaniem zestawu noszonych jednostek inercyjnych. Tego rodzaju system pozwala w łatwy sposób śledzić ruch całej postaci i przekazywać go do komputera. System taki w żaden sposób nie wpływa na sam ruch - przyczepione do kończyn sensory nie utrudniają ruchu ani nie ograniczają go do, na przykład, tylko jednego kierunku skrętu. Na fotografii 1 widzimy zestaw dwóch modułów IMU umieszczonych w nadgarstkach.

Prezentowany w artykule zestaw stworzony został przez Michaela Stengla, doktoranta na politechnice w niemieckim Brunszwiku. Jest on od dawna zafascynowany rzeczywistością wirtualną i rozszerzoną, do której systemy digitalizacji ruchu - motion capture - są krytyczne. Inspiracją do stworzenia opisywanego poniżej systemu były analogiczne urządzenia, stosowane m. in. w kinematografii - są one dużo droższe niż przedstawiony poniżej system, jednakże, jak zaznacza sam autor konstrukcji, również o wiele precyzyjniejsze. Wynika to głównie z ogromnego nakładu sił i środków na zaawansowaną kalibrację tego systemu, co pozwala uzyskiwać o wiele więcej z porównywalnych sensorów IMU. Gorsze parametry opisywanego poniżej systemu nie sprawiają jednak, że nie jest on również użyteczny. Mimo mniejszej precyzji i np. braku aktywnej eliminacji dryfu modułów IMU, prezentowany projekt ma wiele ciekawych zastosowań.

Aplikacje

Motion Capture Prezentowane noszone czujniki zapewniają kompletne dane o swojej orientacji, które mogą być rejestrowane i następnie wykorzystywane np. do animowania modelu ciała. Jednakże do pełnego przechwycenia ruchów ciała w przestrzeni 3D konieczne są także dane pozycyjne. Można je zapewnić za pomocą dodatkowego, skalibrowanego czujnika zewnętrznego, np. Microsoft Kinect lub korzystać z zewnętrznych kamer i znaczników umieszczonych na postaci.

Animacja awatara dla VR w czasie rzeczywistym W przypadku animacji awatara w czasie rzeczywistym w systemie rzeczywistości wirtualnej (VR) zestaw noszonych czujników zapewnia informację na temat orientacji ciała. W pozycji siedzącej nie są wymagane żadne inne dane, ponieważ w systemach VR zmiany pozycyjne nie są potrzebne. Jeżeli w danym systemie wymagane byłyby, z jakiegoś powodu, także dane pozycyjne, to wystarczy system noszonych IMU uzupełnić pojedynczym punktem, śledzącym pozycję ciała - na przykład kamerą, śledzącą ruch otoczenia.

Urządzenie interakcji 3D: mapowanie orientacji i pozycji Czujnik może być używany jako urządzenie do sterowania interakcją z komputerem. Orientację czujnika można zmapować z dłoni do na przykład menu w komputerze. Względna zmiana pozycji dłoni (uzyskiwana z dwukrotnego całkowania przyspieszenia) mogłaby pozwolić na intuicyjną kontrolę prostych i złożonych interfejsów. Dzięki swojej wielowymiarowości (IMU działa w trzech wymiarach) może pozwolić na zmianę wielu parametrów w aplikacjach takich jak systemy modelowania 3D czy stacje robocze audio.

Proste gesty do obsługi komputera Czujnik IMU może być również urządzeniem wskazującym (jak wskaźnik laserowy), można go użyć zamiast na przykład myszy lub klawiatury. Proste gesty wykonywane np. dłonią mogą wywoływać zaprogramowane funkcje, co pozwoli na intuicyjną obsługę komputera.

Monitorowanie aktywności sportowej Za pomocą prezentowanego czujnika można również monitorować ruchy ciała, aby poprawiać jakość treningów sportowych, wykonywać poprawnie ćwiczenia etc. Monitorowanie sposobu poruszania się ciała podczas wykonywania ćwiczeń pozwoli poprawić ich wydajność i uniknąć kontuzji. Dane z czujników mogą być rejestrowane, monitorowane i analizowane w czasie rzeczywistym. Autor samodzielnie zaimplementował na przykład symulator wioślarstwa, który wykorzystuje dane z IMU do animowania wioseł w łodzi. Prezentowany tutaj moduł nie jest wodoodporny, więc nie do końca nadaje się do monitorowania aktywności w ramach tej dziedziny sportu, jednakże doskonale oddaje możliwości tego systemu.

Stabilizacja wideo i robienie zdjęć panoramicznych Algorytmy stabilizacji filmów wideo bardzo często wykorzystują analizę obrazu do estymacji położenia kamery. W przypadku obrazów niewyraźnych lub z małą ilością szczegółów ocena ułożenia aparatu może się nie powieść. Dane na temat przyspieszenia i orientacji aparatu z sensora IMU mogą zapewnić wsparcie dla tego rodzaju algorytmów, zwiększając ich niezawodność i prędkość działania.

Inną aplikacją, która wymaga estymacji położenia aparatu, jest robienie zdjęć panoramicznych. Istnieją już aplikacje korzystające z danych IMU ze smartfona. Większość nowoczesnych telefonów wyposażonych jest w funkcję zdjęć panoramicznych. Czujnik IMU i dowolny aparat mogą pozwolić na podobne działanie.

Sztuka i performance Rysowanie linii w przestrzeni 3D za pomocą własnych ruchów ciała jest bardzo ekspresyjną metodą malowania, która nie jest możliwa w przypadku tradycyjnych form sztuki. Czujniki IMU stanowią skuteczne, nowatorskie narzędzie do tworzenia fascynującej sztuki w przestrzeni i czasie. To zupełnie nowe wykorzystanie tego rodzaju technologii, które daje niemalże nieograniczone możliwości.

Budowa sensorów

Aby zmontować samodzielnie taki sensor, najpierw zgromadzić trzeba potrzebne komponenty - moduły, które po połączeniu i oprogramowaniu przesyłać będą do komputera dane z czujnika IMU. Potrzebne są:

  • moduł MPU-6050 z akcelerometrem i żyroskopem,
  • moduł HC-05 z transceiverem Bluetooth,
  • Arduino Pro Mini,
  • ogniwo litowo-jonowe 3,7 V,
  • przełącznik, gniazdko do podłączania ładowarki do ogniwa i (najlepiej kolorowe) kable do połączenia modułów ze sobą,
  • gumka z rzepem do mocowania modułu,
  • klej na ciepło i śrubki do montażu wszystkich elementów.

Montaż i oprogramowanie urządzenia podzielić można na kilka etapów:

  1. Konfiguracja płytki z transceiverem Bluetooth
  2. Programowanie Arduino Pro Mini
  3. Przygotowanie obudowy - druk 3D i montaż pasków
  4. Montaż elementów w obudowie i lutowanie połączeń między nimi.

 

Konfiguracja transceivera Bluetooth HC-05

W pierwszej kolejności, przed podłączeniem modułu do systemu, musimy go skonfigurować i nadać mu zrozumiałą dla systemu nazwę. Dokonujemy tego, podłączając się do modułu poprzez interfejs UART. Możemy podłączyć do HC-05 konwerter USB-UART TTL albo wykorzystać inny moduł Arduino. Autor skorzystał z drugiej opcji i podłączył do modułu Arduino UNO z odpowiednim szkicem (programem).

Przed skonfigurowaniem HC-05 musimy poznać adres sprzętowy naszego modułu. Możemy w tym celu posłużyć się telefonem komórkowym lub laptopem z Bluetooth i we właściwościach widzianego przez urządzenie sprzętu odnaleźć moduł i sprawdzić adres sprzętowy. W przypadku modułu autora adres sprzętowy to 00:14:01:03:55:35. Musimy zapisać adres, a następnie skonfigurować Arduino.

Do modułu Arduino UNO ładujemy przykładowy szkic w Arduino IDE pod nazwą SoftwareSerialExample, ustawiamy w metodzie mySerial.begin() prędkość komunikacji na 38400 a następnie kompilujemy szkic w Arduino IDE i ładujemy go do pamięci Arduino UNO. Możemy teraz odłączyć Arduino od USB i podłączyć je do modułu Bluetooth zgodnie z połączeniami zapisanymi w tabeli 1.

Fotografia 2. Wydrukowana obudowa dla modułów

Fotografia 3. Elektronika modułu IMU zamontowana w obudowie

Teraz podłączamy Arduino UNO do USB i w Arduino IDE otwieramy terminal monitora portu szeregowego (prędkość 9600 bodów), gdzie możemy wysyłać komendy poprzez port szeregowy do modułu Bluetooth. Aby przetestować komunikację, wysyłamy „AT”, na co odpowiedzią powinno być „OK”. Jeśli tak nie jest, upewnijmy się, że wszystko poprawnie skonfigurowaliśmy i połączyliśmy i spróbujmy ponownie. Następnie, musimy skonfigurować moduł - w pierwszej kolejności podać mu jego adres sprzętowy, uważając na format podawania adresu (uwaga na przecinki):

W Arduino IDE wprowadzić musimy szkic, który kontrolować będzie działanie modułu. Szkic zaprezentowany jest na listingu 1. Po skompilowaniu i wgraniu programu moduł jest gotowy do działania. Możemy więc przystąpić do finalnego montażu całego urządzenia.

Przygotowanie obudowy i montaż elementów

Pierwszym krokiem podczas montażu jest przygotowanie obudowy. Wykonana została ona techniką druku 3D. Pliki STL można pobrać na stronie autora lub z repozytorium na GitHubie. Gotowe wydruki pokazane są na fotografii 2. W górnej części obudowy wklejona zostaje elektronika (patrz fotografia 3), a przez dolną przewlekana jest gumka z doszytymi rzepami, która pozwoli na instalację urządzenia np. na ręce. Gumka jednocześnie mocuje baterie.

Po przygotowaniu obudowy w górną, pokazaną na rysunku 3 część wklejane są poszczególne moduły. Następnie trzeba je ze sobą połączyć zgodnie z opisem w tabeli 3. Połączenia te najlepiej wykonać, lutując pomiędzy poszczególnymi polami w modułach krótkie odcinki kolorowych kabli. Kolory pomogą z czytelnością połączeń, na wypadek gdybyśmy chcieli coś później zmieniać bądź też debugowali później gotowy układ.

Rysunek 4. Wykres kwaternionów w funkcji czasu, zebranych z modułów IMU zaprezentowany w MATLAB-ie

Rysunek 5. Zrzut ekranu programu do testowania modułu IMU z wykorzystaniem Unreal Engine

Po podłączeniu całości (baterię podpinamy jako ostatnią) system jest gotowy do działania. Dobrze jest podłączyć baterię poprzez przełącznik. Dzięki temu będziemy w stanie wygodnie włączać i wyłączać urządzenie podczas korzystania z niego.

Podsumowanie

Po uruchomieniu układu i sparowaniu naszego nowego urządzenia z np. komputerem możemy rozpocząć odbieranie danych z modułu. Autor wykorzystał dwa narzędzia do przetestowania - MATLAB oraz program oparty na Unreal Engine. Prostszy do prześledzenia jest skrypt MATLAB-a, który pokazano na listingu 2, wyświetla on wykres prezentujący kwaterniony pozycji w czasie. Przykładowy wykres z MATLAB-a zamieszczono na rysunku 4. Z kolei na rysunku 5 zaprezentowano zrzut ekranu z aplikacji napisanej z wykorzystaniem Unreal Engine, gdzie sześcian na ekranie śledzi ruchy modułu IMU w przestrzeni. Oba przykłady są do pobrania z repozytorium autora na Githubie.

Nikodem Czechowski

http://bit.ly/2FkkOxM
http://bit.ly/2RnFMAy

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2019
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje lipiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich lipiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów