8 sierpnia 2011
W ostatnim czasie pojawiło się wiele perspektyw dla interaktywnych systemów człowiek-robot. W niniejszym artykule opisujemy integrację nowego urządzenia robotycznego z oprogramowaniem open source, które pozwala na szybkie stworzenie biblioteki funkcji interaktywnych. Następnie przedstawiamy zastosowanie kliniczne w ramach neurorehabilitacji.
Ogólnym celem niniejszej procedury jest zintegrowanie robota z biblioteką środowiska wirtualnego, a następnie wykorzystanie go w terapii poudarowej. Realizuje się to poprzez stworzenie klasy opakowującej (wrapper class) w celu rozszerzenia biblioteki haptycznej, a następnie zintegrowanie tej klasy z wspomnianą biblioteką. Kolejnym krokiem, po ukończeniu prac nad klasami opakowującymi, jest stworzenie klasy opakowującej rozszerzającej bibliotekę graficzną i zintegrowanie jej z tą biblioteką.
Interfejs H 3D API służy do konfiguracji maszyny stanów skończonych w celu badania pacjentów po udarach. Zintegrowany robot jest następnie wykorzystywany do wspomagania rehabilitacji tych pacjentów. Główną zaletą tej techniki jest to, że nie trzeba już pisać oddzielnej aplikacji oprogramowania dla każdego robota.
Ponadto aplikacje te mogą być uruchamiane przez naukowców na całym świecie, niezależnie od tego, jakiego robota wykorzystuje ich laboratorium. Metoda ta może pomóc w odpowiedzi na kluczowe pytania z dziedziny rehabilitacji, robotyki i kontroli motorycznej, takie jak stopień, w jakim nasz układ nerwowy może odnieść korzyści z augmentacji błędów. Metoda ta może dostarczyć wiedzy na temat dysfunkcji po udarze mózgu, a także pogłębić nasze rozumienie prawidłowego funkcjonowania organizmu.
Zazwyczaj pacjenci po udarze, którzy rozpoczynają rehabilitację robotyczną, muszą pokonać pewne trudności, takie jak nauka chwytania uchwytu. Pomysł na tę metodę pojawił się, gdy zdaliśmy sobie sprawę, że potrzebujemy robota z dużym obszarem roboczym z kompensacją grawitacji. Chcieliśmy również zminimalizować konieczność ponownego pisania oprogramowania, aby przyszli studenci studiów doktoranckich mogli korzystać z dorobku swoich poprzedników bez konieczności powtarzania tych samych prac.
Niniejszy film zawiera instrukcje dotyczące integracji robota do manipulacji całym ramieniem (WHAM) z kodem open source dostępnym na stronie www.hthreedpi.org. Aby zintegrować nowego robota z biblioteką haptyczną, pierwszym krokiem jest napisanie klasy wrappera dla HAP, silnika renderowania haptycznego używanego do sterowania ruchem robota WHAM. Należy rozpocząć od utworzenia pliku CPP oraz pliku nagłówkowego.
Nazwy plików użyte w tym przykładzie to happy, wham, cpp oraz happy wham h. Umieść plik happy wham cpp w katalogu źródłowym. Happy slash source, a następnie umieść happy.
Przenieś plik wham.h do katalogu plików nagłówkowych. happy/include/happy. Na początku pliku wham.h dołącz główne pliki nagłówkowe robota.
Należy pamiętać, że wymagane jest użycie extern C w celu rozwiązania problemu manglingu kompilatora, ponieważ dołączona biblioteka jest napisana w języku C, a H 3D API w języku c plus plus. W pliku happy wham h należy utworzyć klasę dla robota i zawrzeć w niej cztery funkcje: Haptics device release, haptics device, update device values oraz send output. Należy upewnić się, że klasa dziedziczy publicznie po klasie happy haptics device.
Następnie utwórz strażnik nagłówka (header guard) dla klasy. Potem utwórz statyczne atrybuty wyjścia urządzenia oraz rejestracji urządzenia haptycznego w klasie happy WHAM. Następnie utwórz statyczne funkcje członkowskie dla funkcji zwrotnych (callbacks) specyficznych dla Twojego robota.
W przypadku robota WHAM funkcja callback jest wykorzystywana w funkcji urządzenia haptycznego bull. Po zdefiniowaniu prototypów w pliku nagłówkowym, otwórz plik happy_wham.cpp i dołącz odpowiednie pliki nagłówkowe oraz przestrzeń nazw. Następnie zdefiniuj konstruktor i destruktor w pliku happy_wham.cpp.
Następnie zarejestruj urządzenie w Happy Wam cpp. Teraz zdefiniuj cztery funkcje dziedziczone oraz funkcje zwrotne (callbacks) w happy Wam cpp. Funkcja aktualizacji wartości urządzenia (update device values) informuje komputer o położeniu ramienia robota oraz o sile, jaką robot wywiera na otoczenie.
Po utworzeniu klasy Happy Wrapper kolejnym krokiem jest zbudowanie powłoki (wrap) w bibliotece Happy. WAM zależy od niektórych bibliotek, od których H 3D API w swojej surowej formie nie zależy. W związku z tym biblioteki te muszą zostać dodane do happy.
Przejdź do katalogu H 3D 2.1/happy/build i edytuj plik CMakeLists.txt. Dodaj zależności bibliotek po linii o treści Set optional libs. Otwórz konsolę poleceń, przejdź do folderu H 3D 2.1/happy/build i wpisz po kolei: cmake ., make oraz sudo make install, aby zakończyć integrację nowego robota z otwartoźródłowym kodem H 3D.
Należy napisać drugą klasę opakowującą dla grafu sceny. Interfejs API nazywa się H 3D API. W tym przykładzie wykorzystano klasę opakowującą o nazwie wam device.
Przejdź do katalogu źródłowego, H 3D AP I/source, a następnie utwórz plik CPP urządzenia WAM: wam_device.cpp. Dodaj standardowy kod źródłowy dla wszystkich urządzeń H 3D PI. Następnie umieść nagłówek Wam_device.h w katalogu plików nagłówkowych.
Plik urządzenia H powinien zawierać standardowy plik nagłówka dla wszystkich urządzeń H 3D API. Po utworzeniu klasy opakowującej należy przebudować bibliotekę H 3D PI, edytując plik C make lists text w katalogu H three DPI slash build. Na koniec w katalogu H 3D PI slash build.
Przebuduj bibliotekę H 3D API, korzystając z poleceń CMake, pseudo make oraz pseudo make install. Nowe klasy opakowujące są teraz gotowe do użycia z robotem. Po zainstalowaniu odpowiednich klas opakowujących tworzony jest automat skończony w celu sterowania protokołem eksperymentalnym dla zadania celowanego sięgania, realizowanego za pomocą robota Barrett WHAM. Stanami automatu są: start próby, kontakt z celem oraz koniec próby.
Stan rozpoczęcia próby zaczyna się od przydzielenia celu. Położenia celu mogą być ustalane losowo dla każdej próby lub wczytywane z pliku. Stan rozpoczęcia próby kończy się, a rozpoczyna stan startu.
Gdy dłoń badanego zostanie wyrzucona w stronę celu z prędkością przekraczającą próg prędkości, zazwyczaj 0,06 m/s, stan wyrzutu kończy się, a gdy kursor pacjenta dotknie celu, rozpoczyna się stan kontaktu z celem. Po nawiązaniu kontaktu cel znika, stan kontaktu z celem kończy się i rozpoczyna stan zakończenia próby.
Zakończenie stanu próby sygnalizuje oprogramowaniu do zbierania danych, aby oznaczyć plik danych separatorem końca próby. Jeśli ostatnia próba nie została jeszcze ukończona, wyjście ze stanu końca próby umożliwia przejście do stanu rozpoczęcia próby i przypisanie nowego celu. W tej sekcji zaprezentowano innego robota o nazwie phantom, wykorzystywanego w rehabilitacji pacjentów po udarach.
Poprzez podstawienie kodu klasy opakowania fantomu do odpowiednich bibliotek, nowy robot może zostać zintegrowany ze środowiskiem wirtualnym; zastosowano tutaj trójwymiarowy graficzny system haptyczny nazywany maszyną lub pomieszczeniem do robotycznych i optycznych operacji w rzeczywistości wirtualnej (virtual reality Robotic and optical operations machine or room). System ten łączy renderowanie stereo z śledzeniem głowy, wyświetlane na ekranie z półsrebrnym lustrem nakładkowym, z systemem robotycznym, który potrafi rejestrować pozycję nadgarstka i generować wektor siły. Cyfrowy projektor kinowej jakości wyświetla obrazy na ekranie o szerokości pięciu stóp, co zapewnia kąt widzenia wynoszący 110 stopni.
Emitery podczerwieni synchronizują oddzielne obrazy dla lewego i prawego oka za pomocą okularów z migawką LCD. Ruchy głowy są śledzone za pomocą magnetycznych elementów systemu ascension flock of birds, dzięki czemu wyświetlany obraz jest renderowany z odpowiednią perspektywą wycentrowaną na głowie. Rękawica exo tendon z szyną nadgarstkową pomaga w utrzymaniu neutralnego ułożenia nadgarstka i dłoni.
Środek uchwytu robota umieszcza się na przedramieniu, za stawem promieniowo-nadgarstkowym. Pozwala to siłom działać na nadgarstek, zapewniając jednocześnie swobodny ruch dłoni. Ciężar ramienia pacjenta jest redukowany za pomocą sprężynowej ortozy równoważącej grawitację z egzoszkieletu robotycznego Wilmington.
Terapeuta siedzący obok pacjenta używa urządzenia śledzącego do przesuwania kursora po ekranie. Pacjent ma za zadanie podążać za kursorem za pomocą uchwytu robota. Wzmocnienie błędu jest realizowane zarówno wizualnie, jak i poprzez siły generowane przez robota.
Gdy kursor pacjenta odchyla się od kursora terapeuty i powstaje chwilowy błąd, wektor E jest definiowany jako różnica pozycji między kursorem terapeuty a ręką pacjenta. Błąd jest powiększany wizualnie przez współczynnik 1,5 E w ramach augmentacji błędu. Dodatkowo do ramienia pacjenta przyłożona jest siła augmentująca błąd o wartości 100 E, której zaprogramowano nasycenie przy maksymalnej wartości czterech niutonów.
Ze względów bezpieczeństwa augmentacja błędów powiększa błędy postrzegane przez pacjenta, co usprawnia proces ponownego uczenia się. Protokół terapeutyczny wymaga od pacjenta ćwiczenia kilku specyficznych ruchów, w tym wysuwania ramienia do przodu i na boki z jednoczesnym sprzężeniem ruchu barku i łokcia oraz diagonalnego sięgania w poprzek ciała. W kolejnej demonstracji zmieniono kod klasy górnej i wykorzystano robota Barrett WHAM.
Celem następnego zadania jest złapanie przez zdrowych ochotników lub pacjentów po udarze wirtualnego pocisku wewnątrz półprzezroczystej zielonej sfery. Jeśli dłoń pacjenta znajdzie się poza sferą, sfera zmienia kolor na czerwony, a ramię pacjenta otrzymuje z robota informację zwrotną w postaci augmentacji błędu. Gdy pacjent pomyślnie złapie pocisk wewnątrz wyznaczonej przestrzeni, sfera pozostaje zielona.
Rysunek ten przedstawia medianę błędu dotarcia. Każda kropka reprezentuje medianę błędu zmierzoną dla dwuminutowego bloku stereotypowych ruchów funkcjonalnych. Choć pacjenci wykazują postępy w okresie dwóch tygodni, nie każdego dnia odnotowano poprawę.
Rysunek ten przedstawia korzyści wynikające z augmentacji błędów w selektywnym redukowaniu zmienności między ruchami. Górne wykresy przedstawiają dane z grupy kontrolnej, a dolne wykresy dane z grupy badawczej. Każdy kolor reprezentuje innego badanego.
Dwie poziome linie wskazują położenie granic zadania. Celem badanego było przechwycenie wirtualnego pocisku w obrębie tych granic. Położenie kropki wskazuje miejsce, w którym dany badany znalazł się najbliżej punktu kontaktu.
Na rzucie niebieskie półprzezroczyste histogramy nałożone na surowe dane przedstawiają rozkład ruchu grupy. Wzdłuż osi przedniej pacjenci po udarze wykonali 600 prób zadania chwytania; w pierwszych 200 próbach stosowano wzmocnienie błędu, natomiast od próby 201 do 400 nie podawano informacji zwrotnej w postaci wzmocnienia błędu. Robot dostarczał pacjentowi informację zwrotną w formie wzmocnienia błędu, co doprowadziło do znaczącej poprawy zdolności pacjenta do chwytania celu w określonych granicach.
Po zastosowaniu tej procedury nadal można wykonywać tradycyjne metody rehabilitacji, jednak dzięki robotowi jesteśmy w stanie ilościowo określić położenie dłoni pacjenta w każdym momencie w trakcie wielu powtarzalnych prób. Technika ta utorowała drogę do nowych badań w dziedzinie inżynierii neuronauki, w ramach których możemy badać symulowane sięganie w obrębie określonego obszaru, co pozwala na wypracowanie wielu możliwych rozwiązań. Po obejrzeniu tego filmu powinieneś zrozumieć, jak rozszerzyć bibliotekę H 3D API dla wybranego robota rehabilitacyjnego oraz jak zastosować różnorodne haptyczne interfejsy graficzne w celu oceny i leczenia pacjentów po udarze.
Praca z robotami może być potencjalnie niebezpieczna, dlatego przy wyborze robota do interakcji z ludźmi należy zachować szczególną ostrożność. Do naszego najnowszego projektu wybraliśmy robota Barrett WHAM, ponieważ jest on bardziej wydajny i posiada funkcję back-drivability. Oznacza to, że przy odpowiednim zaprogramowaniu może on stawiać niemal zerowy opór, a jednocześnie jest jedną z najbezpieczniejszych dostępnych opcji w zakresie interakcji człowiek-maszyna.
Osobny komputer nadzorujący (watchdog) monitoruje główny komputer i może wyłączyć system w przypadku wystąpienia jakichkolwiek nieprawidłowości, natomiast hamowanie dynamiczne zapewnia, że system działa jako tłumik w stanach nieaktywnych. Choć wiele robotów wykazuje odmienną charakterystykę działania, wiele z ich funkcji się pokrywa. Zatem przenaszalność naszych technik między robotami może sprzyjać nowym formom współpracy między laboratoriami.
Klarownym jest, że metody treningowe, takie jak te zaprezentowane w niniejszym badaniu, dostarczają obiecujących dowodów na możliwość przywrócenia sprawności pacjentom, a także usprawnienia treningu sportowego, pilotażu teleoperacyjnego, wykonań muzycznych, technik chirurgicznych oraz każdego innego zadania wymagającego powtarzalnej praktyki.
Niniejszy artykuł omawia integrację urządzenia robotycznego z oprogramowaniem o otwartym kodzie źródłowym w zastosowaniach neurorehabilitacyjnych, ze szczególnym uwzględnieniem terapii po udarze mózgu. Podejście to umożliwia wykorzystanie biblioteki interaktywnych funkcjonalności w środowisku wirtualnym.
Niniejsza praca odnosi się do kluczowego wąskiego gardła w neuronauce translacyjnej i inżynierii rehabilitacyjnej: braku interoperacyjności oprogramowania pomiędzy platformami robotycznymi. Poprzez umożliwienie pojedynczej bazy kodu interfejsowania z różnorodnymi urządzeniami haptycznymi, podejście to redukuje nakłady na rozwój i wspiera odtwarzalną ewaluację przedkliniczną interwencji w zakresie uczenia motorycznego. Zdolność ta zwiększa pewność predykcyjną we wczesnym etapie walidacji celów dla terapii neurorehabilitacyjnych poprzez standaryzację odczytów behawioralnych pomiędzy laboratoriami.
Metoda ta wpisuje się w kontinuum od etapu odkrywania do badań przedklinicznych, przekształcając systemy robotyczne w standaryzowane narzędzia fenotypowania do modulacji obwodów ruchowych, co ma bezpośrednie zastosowanie w identyfikacji związków wiodących w rozwoju leków do neurorehabilitacji.