Wstęp
W całym obszarze interakcji człowiek-maszyna (HMI) rośnie zapotrzebowanie na intuicyjne i efektywne środowiska interaktywne. Liczne branże w coraz większym stopniu polegają na HMI, takie jak: robotyka rehabilitacyjna, przemysł motoryzacyjny, produkcja metali, maszyny pakujące, farmaceutyka, branża spożywcza, napojowa oraz energetyka i wodociągi. Technologie stosowane w tych branżach obejmują: terminale wyświetlające, komputery osobiste oraz oprogramowanie HMI. Technologie te mogą być łączone w celu realizacji nieograniczonej liczby funkcji.
Roboty mogą być wykorzystywane do ułatwienia bezpośredniej interakcji z użytkownikami, na przykład jako instruktorzy muzyki. Przykładowo, badacze z Uniwersytetu Waseda stworzyli robota grającego na saksofonie, aby uczyć ludzi gry oraz zrozumieć interakcję między uczniem a nauczycielem 1. Inni badacze robotyki opracowali latającego robota opartego na systemie wizyjnym, aby ustalić, w jaki sposób sztuczna inteligencja może ewoluować w stronę inteligentnych interakcji z otoczeniem 2. Szczególna koncentracja niniejszej pracy skupia się na robotyce rehabilitacyjnej.
W obszarze badań i przemysłu tempo zmian w zakresie nowych produktów i wymagań użytkowników stale rośnie. Potrzeby te stawiają większe wyzwania w kwestii skalowalności. W związku z tym projektowanie kodu stało się integralnym elementem zaspokajania potrzeb tych podmiotów w odpowiednim czasie. Zatem cechą wysokiej jakości projektu architektonicznego byłaby łatwa wymienność systemów graficzno-robotycznych obejmująca wsparcie sterowników. Architektura H3DAPI spełnia te potrzeby, dlatego stworzono klasę opakowującą (wrapper). Co więcej, H3D jest zaprojektowany dla środowisk rzeczywistości wirtualnej, takich jak te wymagane w robotyce rehabilitacyjnej.
Robotyka w rehabilitacji neurologicznej dąży do wykorzystania robotów w celu wspierania specjalistów rehabilitacji. Pomoc świadczona przez te roboty przyjmuje formę pola sił. Badacze komend motorycznych, tacy jak Shadmehr i Mussa-Ivaldi, wykorzystywali pola sił do stymulowania adaptacji motorycznej i stwierdzili, że 1) adaptacja do zewnętrznie przyłożonego pola sił zachodzi w przypadku różnych klas ruchów, w tym między innymi ruchów sięgania, oraz 2) adaptacja generalizuje się w odniesieniu do różnych ruchów przebiegających przez te same obszary zewnętrznego pola3. Badania inżynierów biomechanicznych nad progresywną terapią robotyczną opartą na wynikach (Performance-Based Progressive Robot-Assisted therapy) wykazują, że powtarzalna, specyficzna dla zadania i ukierunkowana na cel terapia wspomagana robotycznie jest skuteczna w redukcji zaburzeń motorycznych w dotkniętej udarem kończynie górnej4, jednak dokładne efekty terapeutyczne i parametry pozostają przedmiotem badań.
Sprzężenie zwrotne sensoryczne wpływa na uczenie się i adaptację. W związku z tym kolejnym logicznym pytaniem jest to, czy sztuczne zwiększenie amplitudy takiego sprzężenia zwrotnego sprzyjałoby szybszemu lub pełniejszemu uczeniu się i adaptacji. Niektórzy badacze stwierdzili, że zastosowanie większych sił sprzężenia zwrotnego sensorycznego lub wskazówek wizualnych w celu uwydatnienia błędów może dostarczyć odpowiedniego bodźca neurologicznego, który sprzyja wyższemu poziomowi adaptacji i uczenia się5,6. Zjawisko to jest znane jako „augmentacja błędu”. Może ono wynikać z faktu, że gdy wyniki działania kontroli motorycznej odbiegają od ideału, nasz model wewnętrzny dostosowuje się samodzielnie zgodnie z wielkością błędu. W konsekwencji, w miarę jak nasz model wewnętrzny upodabnia się do środowiska zewnętrznego, błąd w wykonaniu zadania ulega zmniejszeniu.
Badania nadal potwierdzają, że długotrwałe ćwiczenie czynności istotnych funkcjonalnie sprzyja przywróceniu sprawności, mimo że wiele obecnych polityk opieki zdrowotnej ogranicza czas, jaki pacjenci mogą spędzić z terapeutami. Kluczowym pytaniem jest to, czy te nowe zastosowania technologii mogą wyjść poza zwykłe zwiększenie dawki obecnego standardu opieki. Badania nad interakcją człowiek-maszyna ujawniły nowe perspektywy w obszarze uczenia motorycznego i w niektórych przypadkach mogą przynieść dodatkową wartość w procesie terapeutycznym. Specjalistyczne urządzenia robotyczne w połączeniu z wyświetlaczami komputerowymi mogą zwiększać informację zwrotną o błędach, aby przyspieszyć, usprawnić lub zainicjować ponowne uczenie motoryczne. Niniejsza praca przedstawi metodologię wykorzystania opracowanego systemu w interwencji klinicznej jako jeden z przykładów zastosowania tej technologii.
1. Tworzenie klasy opakowującej HAPI dla robota
- Utwórz program pośredniczący (wrapper) dla biblioteki haptycznej HAPI, tworząc własny plik .cpp oraz plik nagłówka. Przykładowo, użyjemy nazw HAPIWAM.cpp oraz HAPIWAM.h.
- Umieść plik HAPIWAM.cpp w katalogu źródłowym: HAPI/src
- Umieść plik HAPIWAM.h w katalogu plików nagłówkowych: HAPI/include/HAPI
- W górnej części pliku HAPIWAM.h dołącz główne pliki nagłówkowe swojego robota; w przypadku robota Barrett WAM będą to:
extern "C" {
#include
}
#include
Uwaga: użycie extern "C" jest wymagane w celu rozwiązania problemu mangle’owania nazw przez kompilator, ponieważ dołączona biblioteka jest napisana w języku C, a H3DAPI w C++.
- W pliku HAPIWAM.h utwórz swoją klasę i zamieść w niej następujące 4 funkcje
bool initHapticsDevice(int);
bool zwolnijUrządzenieHaptyczne();
void updateDeviceValues(DeviceValues &dv, HAPITime dt);
void sendOutput(HAPIHapticsDevice::DeviceOutput &d, HAPI Czas t);
- Upewnij się, że Twoja klasa publicznie dziedziczy po klasie HAPIhapticsdevice.
- Utwórz strażnik nagłówka (header guard) dla swojej klasy.
- Utwórz statyczne atrybuty DeviceOutput oraz statyczne HapticsDeviceRegistration w ramach klasy HAPIWAM.
- Utwórz statyczne funkcje członkowskie dla funkcji zwrotnych (callbacks).
- Zdefiniuj konstruktor i destruktor w pliku HAPIWAM.cpp.
- Zarejestruj swoje urządzenie w pliku HAPIWAM.cpp.
- Zdefiniuj 4 dziedziczone funkcje oraz funkcje zwrotne w pliku HAPIWAM.cpp.
2. Tworzenie biblioteki HAPI
- Po utworzeniu klasy opakowującej HAPI należy włączyć to opakowanie do biblioteki HAPI. WAM zależy od niektórych bibliotek, od których H3DAPI w swojej podstawowej formie nie zależy, dlatego biblioteki te muszą zostać dodane do HAPI. Przejdź do katalogu HAPI/HAPI/build i edytuj plik CMakeLists.txt. Dodaj zależne biblioteki po linii o treści 'SET(OptionalLibs)'.
- Otwórz konsolę poleceń, przejdź do katalogu HAPI/HAPI/build i wpisz kolejno następujące 3 polecenia:
cmake .
sudo make
sudo make install
3. Klasa obudowy (wrapper) H3D
- Aby utworzyć klasę opakowującą (wrapper class) dla biblioteki H3D z Twoim HAPIWAM, najpierw utwórz plik WAMDevice.cpp w katalogu źródłowym: H3DAPI/src
- Umieść plik WAMDevice.h w katalogu plików nagłówkowych: H3DAPI/include/H3D
- Plik WAMDevice.h powinien zawierać standardowy plik nagłówkowy dla wszystkich urządzeń H3DAPI, z nazwą zmienioną według uznania.
- Plik WAMDevice.cpp powinien zawierać standardowy kod źródłowy dla wszystkich urządzeń H3DAPI, z nazwą zmienioną według uznania.
- Po utworzeniu klasy opakowującej przebuduj bibliotekę H3DAPI. Zrób to, edytując plik CMakeLists.txt w taki sam sposób, jak w kroku 2.1, ale w katalogu: H3DAPI/build.
- Przebuduj bibliotekę H3DAPI w katalogu H3DAPI/build
cmake .
sudo make
sudo make install
4. Automat skończony
- Każdy program ukierunkowanego sięgania wymaga stworzenia automatu skończonego do sterowania protokołem eksperymentalnym lub schematem ćwiczeń. Typowe stany automatu obejmują: Początek próby, Start, Kontakt z celem oraz Koniec próby. Poniżej przedstawiono przykład funkcji każdego stanu oraz kryteria przejścia między stanami.
- Stan Początek próby wymaga wyznaczenia celu. Położenia celów mogą być ustawiane losowo dla każdej próby lub wczytywane z pliku. Początek próby kończy się w momencie, gdy użytkownik wykona ruch w stronę celu z prędkością przekraczającą próg prędkości, zazwyczaj 0.06 meters per second.
- Stan Start następuje po rozpoczęciu próby. Stan ten kończy się w momencie, gdy użytkownik dotknie celu lub pozostanie w obszarze celu przez określony czas. Dotknięcie celu aktywuje stan Kontakt z celem.
- Kontakt z celem następuje w trakcie stanu Start. Może on zakończyć się natychmiast po dotknięciu celu lub po pozostaniu badanego w obszarze celu przez określony czas. Po upływie tego czasu aktywowany zostaje stan Koniec próby.
- Stan Koniec próby powinien wysłać sygnał do oprogramowania do zbierania danych, aby oznaczyło ono plik danych – zgodnie z formatowaniem przyjętym przez programistę – w celu wyznaczenia końca każdej próby. Jeśli ostatnia próba nie została jeszcze zakończona, wyjście ze stanu Koniec próby aktywuje stan Początek próby.
5. Zastosowanie: rehabilitacja pacjenta po udarze
- Interfejs robotyczny został zaprojektowany tak, aby wykorzystać wiedzę terapeuty, jednocześnie używając robota do umożliwienia działań, które w inny sposób nie byłyby możliwe. Technologia ta umożliwiła zastosowanie (opisane szczegółowo poniżej) augmentacji błędów, która powiększała błędy postrzegane przez pacjenta, co z kilku znanych przyczyn usprawnia proces ponownego uczenia się (rys 1).
- Trójwymiarowy system haptyczno-graficzny o nazwie Virtual Reality Robotic and Optical Operations Machine (VRROOM). System ten, zaprezentowany wcześniej6, łączył renderowanie stereo z śledzeniem głowy na wyświetlaczu z nakładką w postaci lustra półprzezroczystego z systemem robotycznym, który rejestrował pozycję nadgarstka i generował wektor siły (rys 2).
- Cyfrowy projektor klasy kinowej (Christie Mirage 300 DLP) wyświetlał obrazy na ekranie o szerokości pięciu stóp i rozdzielczości 1280x1024 pikseli, co skutkowało kątem widzenia wynoszącym 10°. Emitery podczerwieni synchronizowały oddzielne obrazy dla lewego i prawego oka za pomocą okularów z migawkami LCD (Stereographics, Inc). Magnetyczne elementy Ascension Flock of Birds śledziły ruchy głowy, dzięki czemu obraz wizualny był renderowany z odpowiednią perspektywą centrowaną na głowie.
- Po zakwalifikowaniu do badania, zdolności funkcjonalne każdego uczestnika były oceniane przez oślepionego recenzenta na początku i na koniec każdego paradygmatu leczenia, z kontrolą po jednym tygodniu po każdym z nich oraz ogólną oceną kontrolną po 45 dniach. Każda ocena obejmowała badanie zakresu ruchu (ROM) przeprowadzone w VRROOM, a także pomiary kliniczne, w tym: Box and Blocks Assessment, Wolf Motor Function Test (WMFT), Arm Motor Section of the Fugl-Meyer (AMFM) oraz Assessment of Simple Functional Reach (ASFR).
- Do pomocy w zachowaniu neutralnego ustawienia nadgarstka i dłoni wykorzystano rękawicę exotendon ze szyną nadgarstkową. Środek uchwytu robota przymocowany do przedramienia został umieszczony tylnie względem stawu promieniowo-nadgarstkowego, tak aby jego siły działały na nadgarstek, ale pozwalały na ruch dłoni.
- Ciężar ramienia pacjenta został zmniejszony przy użyciu ortozy zrównoważonej grawitacyjnie Wilmington Robotic Exoskeleton (WREX) napędzanej sprężyną. Zadaniem pacjenta było śledzenie kursora wyświetlanego przed nim, który był poruszany za pomocą urządzenia śledzącego w dłoni terapeuty (teleoperacja terapeuty).
- Pacjenci ćwiczyli trzy razy w tygodniu przez około 40-60 minut, przy czym pacjent, terapeuta i robot pracowali razem w trio. Podmiot i terapeuta siedzieli obok siebie, a podmiot był połączony z robotem w nadgarstku.
- Każda sesja rozpoczynała się od pięciu minut ćwiczeń biernego zakresu ruchu (PROM) z terapeutą, po czym następowało około dziesięciu minut pozycjonowania pacjenta w maszynie. Następnie podmiot wykonywał sześć bloków treningu ruchowego trwających po pięć minut każdy, z dwuminutowymi przerwami między blokami.
- Podczas treningu uczestnicy widzieli dwa kursory na wyświetlaczu stereo. Terapeuta prowadzący manipulował jednym kursorem, podczas gdy uczestnik kontrolował drugi. Pacjenci otrzymali instrukcję naśladowania dokładnej ścieżki kursora terapeuty podczas jego ruchu w przestrzeni roboczej.
- Augmentacja błędów była realizowana zarówno wizualnie, jak i poprzez siły generowane przez robota. Gdy uczestnicy odchylali się od kursora terapeuty, ustalano natychmiastowy wektor błędu e jako różnicę w pozycji między kursorem terapeuty a dłonią uczestnika. Błąd był powiększony wizualnie przez współczynnik 1,5e (m) jako część augmentacji błędu. Dodatkowo zastosowano siłę augmentującą błąd o wartości 10e (N/m), która została zaprogramowana tak, aby ze względów bezpieczeństwa nasycać się przy maksymalnej wartości 4 N.
- Co drugi blok terapeutyczny składał się ze specyficznych, ustandaryzowanych ruchów, które były takie same dla każdej sesji. Pozostałe bloki pozwalały terapeucie na dostosowanie treningu do konkretnych obszarów słabości w oparciu o wiedzę terapeuty i jego obserwacje. Protokół leczenia obejmował ćwiczenie konkretnych ruchów dla wszystkich uczestników, w tym sięganie do przodu i na boki, sprzężenie barkowo-łokciowe oraz diagonalne sięganie przez ciało.
- Podczas ćwiczeń mierzono dzienną medianę błędu jako jeden z wyników treningu. Szczególną uwagę poświęcono blokom ustandaryzowanych ruchów, które były identyczne w każdej sesji. Porównywano je z poprzednimi dniami, aby ustalić, czy można zaobserwować jakąkolwiek stopniową poprawę z dnia na dzień, co może być raportowane pacjentowi, terapeucie i opiekunom (rys 3).
- Główne wskaźniki wyników mierzono co tydzień, 1 tydzień po zakończeniu leczenia oraz 45 dni po jego zakończeniu, aby ocenić trwałość korzyści. Kluczowymi wynikami były punkty oceny zdolności motorycznej Fugl-Meyer oraz nasz spersonalizowany test zasięgu ramienia mierzący zakres ruchu.
6. Reprezentatywne wyniki:
W przypadku prawidłowego wykonania protokołu, po załadowaniu węzła do H3DViewer lub H3DLoad, urządzenie WAM powinno zostać rozpoznane i zainicjowane. Gdyby WAM został zastąpiony innym robotem, sam kod nie wymagałby zmian.

Rycina 1. Badany siedzący przy aparaturze haptyczno-graficznej.

Rycina 2. Badany siedzący przy aparaturze haptyczno-graficznej z fizjoterapeutą.

Rycina 3. Konfiguracja rehabilitacji pacjenta po udarze mózgu. A) badany i terapeuta współpracujący ze sobą, siedzący i korzystający z haptycznego wyświetlacza graficznego z dużym obszarem roboczym w celu ćwiczenia ruchu. Terapeuta przekazuje badanemu wskazówkę i może dostosować warunki do potrzeb pacjenta. Robot generuje siły odpychające kończynę od celu, a system informacji zwrotnej wizualnej zwiększa błąd kursora. B) Typowa poprawa stanu pacjenta z przewlekłym udarem mózgu z dnia na dzień. Każda kropka reprezentuje medianę błędu zmierzonego dla 2-minutowego bloku stereotypowego ruchu funkcjonalnego. Choć pacjent wykazuje postępy w ciągu 2-tygodniowego okresu i ogólną poprawę, osoba ta nie zawsze odnotowywała progres każdego dnia.