Robot poruszający się w przestrzeni musi wiedzieć, czy przyspiesza, obraca się, przechyla albo traci równowagę. Jednym z najważniejszych czujników dostarczających takich informacji jest IMU, czyli inercyjna jednostka pomiarowa. Urządzenie to znajduje zastosowanie między innymi w robotach mobilnych, humanoidalnych, czworonożnych, dronach, manipulatorach oraz autonomicznych platformach badawczych.
Typowy moduł IMU łączy trójosiowy akcelerometr i trójosiowy żyroskop. Akcelerometr rejestruje przyspieszenia działające wzdłuż trzech osi, w tym wpływ grawitacji, natomiast żyroskop mierzy prędkość kątową, czyli szybkość obrotu urządzenia. Niektóre systemy wykorzystują dodatkowo magnetometr, który dostarcza informacji o kierunku pola magnetycznego.
Dane z pojedynczego czujnika nie wystarczają zwykle do stabilnego określania orientacji robota. Oprogramowanie łączy więc pomiary akcelerometru, żyroskopu, a czasami również magnetometru, kamery, LiDAR-u i enkoderów. Proces ten nazywany jest fuzją sensorów.
W tym artykule wyjaśniamy, jak działa IMU w robotyce, jakie informacje przekazują akcelerometr i żyroskop, czym różnią się moduły 6- i 9-osiowe oraz dlaczego dryft, drgania, temperatura i kalibracja mają tak duże znaczenie. Pokażemy również, jak dane IMU są wykorzystywane w ROS 2, SLAM-ie, autonomicznej nawigacji i stabilizacji ruchu robota.
Typowy współczesny moduł IMU zawiera trójosiowy akcelerometr i trójosiowy żyroskop, natomiast standardowa wiadomość sensor_msgs/msg/Imu w ROS 2 może przenosić orientację, prędkość kątową i przyspieszenie liniowe wraz z macierzami kowariancji.
Czym jest IMU?
IMU, czyli Inertial Measurement Unit, jest zespołem czujników służących do pomiaru ruchu urządzenia. Moduł nie obserwuje otoczenia tak jak kamera 3D lub LiDAR. Rejestruje natomiast zjawiska zachodzące bezpośrednio w poruszającym się robocie, takie jak przyspieszenie i obrót.
Najczęściej spotykana jednostka IMU zawiera trójosiowy akcelerometr oraz trójosiowy żyroskop. Taki układ dostarcza sześciu kanałów pomiarowych i jest określany jako IMU 6-osiowe. Liczby tej nie należy mylić ze stopniami swobody przegubów robota ani z sześcioma stopniami swobody opisującymi położenie i orientację bryły w przestrzeni.
Robot może posiadać znacznie więcej stopni swobody niż liczba osi jego IMU. Przykładowo robot humanoidalny może mieć kilkadziesiąt niezależnie sterowanych przegubów, mimo że zamontowany w jego korpusie moduł IMU nadal wykorzystuje trójosiowy akcelerometr i trójosiowy żyroskop.
Szczególnie istotnym problemem jest narastanie błędu w czasie. Nawet niewielki błąd żyroskopu, wielokrotnie sumowany podczas obliczania kąta obrotu, może prowadzić do stopniowego odchylenia wyniku od rzeczywistej orientacji. Zjawisko to nazywane jest dryftem i stanowi jeden z głównych powodów stosowania fuzji sensorów.
Czujniki inercyjne są w praktyce oparte przede wszystkim na akcelerometrach i żyroskopach, a kompletne moduły MEMS IMU często integrują oba trójosiowe układy w jednej obudowie.
Jakie elementy zawiera moduł IMU?
Moduł IMU nie jest pojedynczym czujnikiem. Najczęściej integruje kilka układów pomiarowych oraz elektronikę odpowiedzialną za przetwarzanie, synchronizację i przesyłanie danych. Podstawę stanowią trójosiowy akcelerometr i trójosiowy żyroskop, ale bardziej rozbudowane urządzenia mogą zawierać również magnetometr, czujnik temperatury, procesor ruchu oraz układy cyfrowego filtrowania.
Dokładna konstrukcja zależy od przeznaczenia urządzenia. Niewielki układ MEMS może udostępniać głównie surowe pomiary, natomiast przemysłowy moduł inercyjny może dodatkowo wykonywać kompensację temperaturową, synchronizację czasu, kalibrację i wstępną fuzję danych.
Nie każdy moduł określany jako IMU zawiera magnetometr lub procesor wykonujący fuzję danych. Typowy czujnik 6-osiowy łączy trójosiowy akcelerometr z trójosiowym żyroskopem. Rozwiązania nazywane 9-osiowymi dodają trzy kanały magnetometru, choć magnetometr może znajdować się w osobnym układzie scalonym. Oficjalne opisy współczesnych czujników TDK i Bosch potwierdzają taką konstrukcję układów 6-osiowych, natomiast rozwiązania 9-osiowe mogą integrować dodatkowo trójosiowy kompas i procesor ruchu.
Wewnętrzny czujnik temperatury służy przede wszystkim do kontroli i kompensowania zachowania samego układu pomiarowego. Nie powinien być traktowany jako precyzyjny termometr mierzący temperaturę otoczenia robota. Nowoczesne IMU mogą również zawierać programowalne filtry cyfrowe, bufor danych i mechanizmy ograniczające wpływ temperatury na wyniki żyroskopu oraz akcelerometru.
Jak działa akcelerometr?
Akcelerometr jest czujnikiem mierzącym przyspieszenie właściwe działające wzdłuż jednej lub kilku osi. W typowym module IMU stosuje się akcelerometr trójosiowy, który dostarcza osobne wyniki dla osi X, Y i Z związanych z obudową czujnika.
W robotyce akcelerometr pozwala wykrywać przyspieszanie, hamowanie, przechylenie, drgania, uderzenia i gwałtowne zmiany ruchu. Może również służyć do określania orientacji względem kierunku grawitacji, szczególnie gdy robot pozostaje nieruchomy albo porusza się powoli.
Większość współczesnych akcelerometrów stosowanych w robotach wykorzystuje technologię MEMS, czyli mikroukłady elektromechaniczne. Wewnątrz niewielkiego układu znajduje się mikroskopijna masa zawieszona na sprężystych elementach. Pod wpływem przyspieszenia masa przemieszcza się względem obudowy, a elektronika mierzy powstałą zmianę, najczęściej metodą pojemnościową.
Jak akcelerometr MEMS zamienia ruch na sygnał?
Zasada ta przypomina zachowanie niewielkiego ciężarka zawieszonego na sprężynach wewnątrz obudowy. Gdy obudowa przyspiesza, masa chwilowo pozostaje w tyle i zmienia swoje położenie. W rzeczywistym układzie MEMS przemieszczenie jest bardzo małe, ale może zostać precyzyjnie wykryte przez układ pomiarowy.
Akcelerometry MEMS wykorzystują mikroskopijne elementy mechaniczne oraz zintegrowane obwody elektroniczne. W wielu konstrukcjach położenie masy pomiarowej jest rozpoznawane przez zmianę pojemności elektrycznej, a wynik zostaje przekształcony w sygnał cyfrowy
Co właściwie mierzy akcelerometr?
W potocznym uproszczeniu mówi się, że akcelerometr mierzy przyspieszenie i grawitację. Dokładniej czujnik mierzy jednak przyspieszenie właściwe, czyli oddziaływanie sił niegrawitacyjnych na jego masę pomiarową. Z tego powodu nieruchomy akcelerometr leżący na stole nie wskazuje zera, lecz wartość zbliżoną do 1 g w osi skierowanej przeciwnie do grawitacji.
Stół podtrzymuje czujnik i wywiera na niego siłę, która odkształca wewnętrzną strukturę pomiarową. Gdyby czujnik znajdował się w idealnym swobodnym spadku, jego wskazania zbliżyłyby się do zera, mimo że cały układ przyspieszałby w kierunku Ziemi.
Ta właściwość pozwala określać przechylenie nieruchomego robota. Wektor o wartości około 1 g rozkłada się pomiędzy osie X, Y i Z zależnie od orientacji czujnika. Na tej podstawie można oszacować kąty roll i pitch. Sam akcelerometr nie zapewnia jednak stabilnej informacji o kącie yaw, ponieważ obrót wokół osi zgodnej z kierunkiem grawitacji nie zmienia rozkładu tego wektora. Akcelerometry mogą mierzyć zarówno składową statyczną związaną z podparciem względem grawitacji, jak i przyspieszenia dynamiczne wynikające z ruchu, drgań lub uderzeń.
Jak zachowują się wskazania akcelerometru?
Jednostką przyspieszenia w układzie SI jest metr na sekundę do kwadratu, czyli m/s². Producenci akcelerometrów często podają jednak wyniki i zakres pomiarowy w jednostkach g. Standardowe przyspieszenie ziemskie wynosi około 9,81 m/s².
Typowy czujnik może pracować na przykład w zakresie ±2 g, ±4 g, ±8 g lub ±16 g. Węższy zakres zazwyczaj pozwala dokładniej rejestrować niewielkie zmiany, natomiast szerszy zakres jest potrzebny w robotach narażonych na gwałtowne ruchy, uderzenia i intensywne drgania.
Dlaczego sam akcelerometr nie wystarcza do określania orientacji?
Akcelerometr może dobrze wskazywać kierunek grawitacji, gdy robot pozostaje nieruchomy. Podczas ruchu wynik zawiera jednak jednocześnie wpływ przechylenia, przyspieszenia liniowego, drgań i uderzeń. Oprogramowanie nie może na podstawie pojedynczej próbki jednoznacznie ustalić, która część sygnału wynika z grawitacji, a która z ruchu robota.
Przykładowo robot przyspieszający do przodu może wygenerować wskazania podobne do wskazań robota przechylonego do tyłu. Dopiero połączenie danych z żyroskopem, enkoderami, kamerą albo innym źródłem informacji pozwala prawidłowo rozróżnić te sytuacje.
Z tego powodu akcelerometr jest bardzo dobrym źródłem długoterminowego odniesienia dla kierunku grawitacji, ale słabszym źródłem informacji o szybkich zmianach orientacji. Żyroskop zachowuje się odwrotnie: dobrze śledzi krótkotrwałe obroty, lecz jego wynik stopniowo obciąża dryft. Połączenie obu czujników stanowi podstawę estymacji orientacji w typowym module IMU.
Jak działa żyroskop?
Żyroskop jest czujnikiem mierzącym prędkość kątową, czyli szybkość obrotu urządzenia wokół określonej osi. Trójosiowy żyroskop znajdujący się w typowym module IMU dostarcza osobne pomiary obrotu wokół osi X, Y i Z.
W robotyce żyroskop pozwala wykrywać obrót korpusu, przechylenie, zmianę kierunku jazdy oraz szybkość ruchu kątowego poszczególnych elementów konstrukcji. Dane te są szczególnie ważne w robotach humanoidalnych, czworonożnych i dronach, ponieważ umożliwiają szybkie rozpoznawanie zmian orientacji oraz wspierają utrzymywanie równowagi.
Żyroskop nie mierzy jednak bezpośrednio kąta ani absolutnej orientacji robota. Dostarcza informację, jak szybko i w którą stronę zmienia się orientacja. Aby obliczyć kąt obrotu, oprogramowanie musi całkować kolejne pomiary prędkości kątowej w czasie.
Współczesne moduły IMU wykorzystują najczęściej żyroskopy MEMS. W ich wnętrzu znajdują się mikroskopijne struktury wprawiane w kontrolowane drgania. Gdy czujnik obraca się, na poruszającą się masę działa efekt Coriolisa, powodujący niewielkie przemieszczenie w kierunku prostopadłym do pierwotnego ruchu. Elektronika mierzy to przemieszczenie i przelicza je na prędkość kątową.
Jak żyroskop MEMS zamienia obrót na sygnał?
W żyroskopie MEMS nie znajduje się klasyczny wirujący krążek znany z dawnych żyroskopów mechanicznych. Zamiast niego wykorzystywane są mikroskopijne struktury rezonansowe wykonujące szybkie drgania. Obrót całego czujnika powoduje powstanie dodatkowego ruchu wynikającego z efektu Coriolisa.
Przemieszczenie struktur jest bardzo niewielkie, dlatego musi zostać wykryte przez precyzyjny układ pojemnościowy. Analog Devices opisuje tę zasadę jako pomiar przemieszczenia drgającej masy wywołanego przyspieszeniem Coriolisa.
Co właściwie mierzy żyroskop?
Żyroskop mierzy prędkość kątową, a nie sam kąt obrotu. Wynik informuje, jak szybko orientacja czujnika zmienia się wokół danej osi. Najczęściej jest podawany w stopniach na sekundę, oznaczanych jako °/s lub dps, albo w radianach na sekundę, czyli rad/s.
Przykładowo wartość 90°/s oznacza, że przy utrzymaniu takiej prędkości urządzenie obróciłoby się o 90 stopni w ciągu jednej sekundy. Wartość 360°/s odpowiada jednemu pełnemu obrotowi na sekundę.
Aby oszacować zmianę kąta, oprogramowanie mnoży prędkość kątową przez czas, który upłynął pomiędzy pomiarami. Dla zmiennego ruchu wykonywane jest numeryczne całkowanie kolejnych próbek:
zmiana kąta ≈ prędkość kątowa × czas
Jeżeli robot obraca się ze stałą prędkością 30°/s przez dwie sekundy, obliczona zmiana orientacji wyniesie około 60°. W praktyce wynik zawiera jednak również offset, szum, niedokładność skali i błędy znaczników czasu.
Jak interpretować osie żyroskopu?
Każdy z trzech kanałów żyroskopu opisuje obrót wokół jednej osi związanej z obudową czujnika. Przypisanie osi do ruchów roll, pitch i yaw zależy od sposobu zamontowania IMU oraz przyjętej konwencji układu współrzędnych.
W typowym układzie robota oś X może być skierowana do przodu, Y w bok, a Z do góry. W takim przypadku obrót wokół osi X odpowiada zmianie roll, obrót wokół osi Y zmianie pitch, a obrót wokół osi Z zmianie yaw. Nie jest to jednak reguła uniwersalna — orientację osi zawsze należy sprawdzić w dokumentacji konkretnego czujnika i modelu robota
Znak dodatni i ujemny zależy od orientacji osi czujnika oraz przyjętej reguły prawej dłoni. Dlatego przed wykorzystaniem danych należy sprawdzić, jak moduł IMU został zamontowany w robocie i czy jego układ współrzędnych jest zgodny z układem korpusu.
W ROS 2 układy współrzędnych stosowane w robotach powinny być zgodne z konwencjami REP-103. Nieprawidłowe przypisanie osi może powodować, że robot będzie interpretował obrót w prawo jako obrót w lewo albo mylił przechylenie boczne z pochyleniem do przodu.
Zakres pomiarowy żyroskopu
Żyroskopy mogą pracować w różnych zakresach pomiarowych, na przykład ±125°/s, ±250°/s, ±500°/s, ±1000°/s lub ±2000°/s. Wybrany zakres określa największą prędkość kątową, jaką czujnik może poprawnie zmierzyć.
Węższy zakres pozwala zazwyczaj uzyskać większą czułość dla powolnych ruchów, ale szybki obrót może przekroczyć możliwości czujnika. W takim przypadku wynik zostanie ograniczony do wartości maksymalnej, co określa się jako nasycenie.
Szerszy zakres umożliwia rejestrowanie gwałtownych ruchów, ale pojedyncza jednostka cyfrowego wyniku odpowiada większej zmianie prędkości kątowej. Dobór zakresu powinien więc uwzględniać dynamikę konkretnego robota.
Przykładowe współczesne układy IMU udostępniają programowalne zakresy żyroskopu, między innymi od ±250°/s do ±2000°/s.
Dlaczego żyroskop powoduje dryft orientacji?
Idealny żyroskop pozostający nieruchomo powinien przez cały czas wskazywać dokładnie 0°/s. Rzeczywisty czujnik generuje jednak niewielki offset oraz szum. Przykładowo zamiast zera może wskazywać stałą wartość 0,1°/s.
Pojedynczy błąd wydaje się niewielki, ale jest wielokrotnie dodawany podczas całkowania. Jeżeli nie zostanie skorygowany, po jednej minucie może spowodować błąd orientacji wynoszący około sześciu stopni. Zmiany temperatury, drgania i niestabilność offsetu mogą dodatkowo zmieniać tempo narastania błędu.
Dryft nie oznacza, że robot rzeczywiście się obraca. Jest błędem oszacowania powstającym dlatego, że oprogramowanie interpretuje niewielkie niezerowe wskazania jako ciągły ruch.
Z tego powodu żyroskop jest bardzo dobrym źródłem informacji o szybkich i krótkotrwałych zmianach orientacji, ale nie zapewnia samodzielnie stabilnego odniesienia długoterminowego. Nawet niewielka niestabilność wartości zerowej prowadzi do narastania błędu po całkowaniu sygnału.
Dlaczego sam żyroskop nie wystarcza?
Żyroskop nie posiada bezwzględnego odniesienia dla orientacji. Po uruchomieniu może bardzo dokładnie śledzić krótkotrwałe zmiany obrotu, ale nie wie samodzielnie, gdzie znajduje się kierunek pionowy, północ ani początkowa orientacja robota.
Akcelerometr może korygować kąty roll i pitch na podstawie kierunku grawitacji. Magnetometr może dostarczać odniesienia dla kierunku yaw, chociaż jego pomiary są podatne na zakłócenia magnetyczne. Kamera, LiDAR, enkodery i system SLAM mogą natomiast korygować orientację na podstawie ruchu względem otoczenia.
Połączenie krótkoterminowej stabilności żyroskopu z długoterminowym odniesieniem innych czujników jest podstawą fuzji sensorów. W praktyce wykorzystuje się do tego między innymi filtr komplementarny, rozszerzony filtr Kalmana oraz algorytmy optymalizacyjne.
Czym są roll, pitch i yaw?
Roll, pitch i yaw to trzy składowe opisujące orientację bryły w przestrzeni. W robotyce mogą przedstawiać przechylenie korpusu, pochylenie do przodu lub do tyłu oraz zmianę kierunku, w którym zwrócony jest robot.
Pojęć tych nie należy mylić ze stopniami swobody przegubów robota. Humanoid może posiadać kilkadziesiąt niezależnie sterowanych stawów, natomiast orientacja jego korpusu nadal może być opisana za pomocą trzech składowych obrotu: roll, pitch i yaw.
W typowej konwencji robotycznej roll oznacza obrót wokół osi X, pitch obrót wokół osi Y, a yaw obrót wokół osi Z. Znaczenie tych ruchów zależy jednak od sposobu zdefiniowania układu współrzędnych oraz zamontowania czujnika IMU.
W standardowej konwencji ROS dla korpusu robota oś X jest skierowana do przodu, Y w lewo, a Z do góry. Jest to prawoskrętny układ współrzędnych, a dodatnie kierunki obrotów wynikają z reguły prawej dłoni.
Jakie ruchy opisują roll, pitch i yaw?
Przypisanie roll do osi X, pitch do osi Y i yaw do osi Z odpowiada konwencji RPY opisanej w ROS REP-103.
Przykład orientacji robota
Załóżmy, że robot mobilny stoi na poziomym podłożu i jest skierowany na wprost. Jego orientację można umownie opisać jako:
roll = 0°, pitch = 0°, yaw = 0°
Jeżeli robot przechyli się o 10° na bok, zmieni się przede wszystkim wartość roll. Jeżeli zacznie wjeżdżać na pochyłą rampę, zmieni się pitch. Gdy skręci na skrzyżowaniu o 90°, zmianie ulegnie yaw.
W rzeczywistym systemie wszystkie trzy składowe mogą zmieniać się jednocześnie. Robot czworonożny poruszający się po nierównym terenie może jednocześnie przechylać się na bok, pochylać korpus oraz zmieniać kierunek marszu.
Jak działa reguła prawej dłoni?
Reguła prawej dłoni określa dodatni kierunek obrotu wokół osi. Jest stosowana w prawoskrętnych układach współrzędnych, takich jak standardowy układ ROS.
Aby wyznaczyć dodatni kierunek obrotu, należy skierować kciuk prawej dłoni zgodnie z dodatnim zwrotem wybranej osi. Kierunek, w którym zawijają się pozostałe palce, wskazuje dodatni kierunek obrotu.
Dla osi Z skierowanej do góry dodatni yaw oznacza obrót przeciwny do ruchu wskazówek zegara, gdy patrzymy na robota z góry. Robot skręcający w lewo zwiększa wtedy wartość yaw, a skręcający w prawo ją zmniejsza.
Znaki mogą wyglądać inaczej w urządzeniu wykorzystującym inny układ osi, dlatego zawsze należy sprawdzić dokumentację IMU i transformację pomiędzy układem czujnika a układem korpusu robota.
Dlaczego układ współrzędnych czujnika ma znaczenie?
IMU mierzy przyspieszenie i prędkość kątową we własnym układzie współrzędnych. Jeżeli moduł zostanie zamontowany bokiem, odwrócony albo pod kątem, jego osie nie będą pokrywać się z osiami korpusu robota.
Przykładowo obrót robota wokół osi Z może zostać zarejestrowany przez inną oś żyroskopu, jeżeli płytka IMU została zamontowana w nietypowej orientacji. Bez odpowiedniej transformacji oprogramowanie mogłoby pomylić zmianę yaw z roll albo pitch.
W systemie robotycznym należy więc znać relację pomiędzy układem czujnika a układem bazowym robota. W ROS 2 relacja ta jest zwykle opisywana przez transformację tf2. Dane mogą następnie zostać przeliczone do wspólnego układu współrzędnych wykorzystywanego przez sterowanie, lokalizację i nawigację.
Konwencje sterowników IMU w ROS wymagają, aby publikowane dane były odpowiednio powiązane z układem czujnika, a orientacja układu względem robota została opisana za pomocą transformacji.
Dlaczego kolejność obrotów ma znaczenie?
Obroty w przestrzeni nie są przemienne. Oznacza to, że wykonanie najpierw roll, a następnie pitch może prowadzić do innej orientacji końcowej niż wykonanie najpierw pitch, a później roll.
Dlatego zapis trzech kątów musi określać również kolejność osi i rodzaj obrotów. Można obracać obiekt wokół osi nieruchomego układu odniesienia albo wokół osi związanych z poruszającą się bryłą. Są to odpowiednio obroty zewnętrzne i wewnętrzne.
W dokumentacji oraz bibliotekach matematycznych można spotkać między innymi sekwencje XYZ, ZYX i inne kombinacje osi. Sam zestaw trzech liczb nie wystarcza więc do jednoznacznego odtworzenia orientacji bez znajomości zastosowanej konwencji. Dokumentacja SciPy rozróżnia obroty wewnętrzne, wykonywane wokół osi poruszającego się obiektu, oraz zewnętrzne, wykonywane wokół osi nieruchomego układu odniesienia.
Czym jest gimbal lock?
Kąty roll, pitch i yaw są intuicyjne dla człowieka, ale posiadają ograniczenie matematyczne określane jako gimbal lock. W określonych orientacjach dwie osie obrotu mogą się pokryć, przez co reprezentacja traci możliwość niezależnego rozróżniania części ruchów.
W często stosowanej reprezentacji RPY problem pojawia się, gdy pitch zbliża się do ±90°. Nie oznacza to, że robot fizycznie traci możliwość wykonania ruchu. Ograniczenie dotyczy wyłącznie sposobu zapisania orientacji za pomocą trzech kolejnych kątów Eulera.
Z tego powodu oprogramowanie robotyczne często przechowuje i przetwarza orientację w postaci kwaternionu. Kąty roll, pitch i yaw są następnie obliczane głównie na potrzeby prezentacji danych, diagnostyki albo konfiguracji systemu.
Biblioteka tf2 w ROS 2 udostępnia kwaterniony oraz funkcje pozwalające tworzyć orientację z wartości roll, pitch i yaw albo ponownie odczytywać z kwaternionu kąty Eulera.
Czy IMU bezpośrednio mierzy roll, pitch i yaw?
Podstawowy akcelerometr i żyroskop nie mierzą bezpośrednio gotowych wartości roll, pitch i yaw. Akcelerometr dostarcza składowe przyspieszenia właściwego, a żyroskop prędkości kątowe wokół trzech osi.
Orientacja jest wyznaczana przez algorytm na podstawie kolejnych pomiarów. Roll i pitch mogą być długoterminowo korygowane za pomocą kierunku grawitacji obserwowanego przez akcelerometr. Yaw nie może zostać ustalony na podstawie samej grawitacji, ponieważ obrót wokół osi pionowej nie zmienia jej kierunku względem czujnika.
Do uzyskania bezwzględnego odniesienia dla yaw można wykorzystać magnetometr albo zewnętrzne źródło informacji, takie jak kamera, LiDAR, GNSS lub system SLAM. ROS REP-145 wskazuje, że IMU pozbawione bezwzględnego odniesienia kierunku może wyrównać orientację względem świata w roll i pitch dzięki grawitacji, natomiast orientacja wokół osi Z pozostaje arbitralna.
Jak działa magnetometr?
Magnetometr jest czujnikiem mierzącym wektor pola magnetycznego wzdłuż trzech osi. Dostarcza osobne wartości dla osi X, Y i Z, dzięki czemu system może określić kierunek pola magnetycznego względem obudowy urządzenia.
W module IMU magnetometr pełni funkcję elektronicznego kompasu. Pole magnetyczne Ziemi może stanowić zewnętrzne odniesienie dla orientacji wokół osi pionowej, czyli kąta yaw. Pozwala to ograniczać dryft kierunku, którego nie można skorygować na podstawie samego akcelerometru i grawitacji.
Magnetometr nie mierzy jednak gotowego kąta yaw. Rejestruje pole magnetyczne pochodzące ze wszystkich źródeł znajdujących się w jego otoczeniu. Oprócz pola Ziemi wpływają na niego silniki, przewody zasilające, magnesy, stalowa konstrukcja robota i urządzenia elektryczne. Dopiero po kalibracji, kompensacji przechylenia i połączeniu z innymi czujnikami można obliczyć użyteczny kierunek.
System określany jako 9-osiowy łączy zwykle trzy osie akcelerometru, trzy osie żyroskopu oraz trzy osie magnetometru. Liczba dziewięć oznacza więc kanały pomiarowe, a nie dziewięć stopni swobody przegubów robota. Współczesne rozwiązania mogą integrować wszystkie czujniki w jednym układzie albo łączyć 6-osiowe IMU z osobnym magnetometrem
Jak magnetometr zamienia pole magnetyczne na sygnał?
W magnetometrach stosuje się różne technologie pomiarowe, między innymi efekt Halla oraz rozwiązania magnetorezystancyjne, takie jak AMR, GMR i TMR. Niezależnie od konstrukcji ich zadaniem jest wykrycie wpływu pola magnetycznego na element pomiarowy i przekształcenie go w sygnał elektryczny.
Trzy elementy pomiarowe lub odpowiednio zaprojektowana struktura czujnika pozwalają mierzyć składowe pola w trzech prostopadłych kierunkach. Na podstawie tych wartości oprogramowanie może odtworzyć kierunek i wartość wektora pola magnetycznego.
Magnetometr działa również wtedy, gdy robot pozostaje nieruchomy, ponieważ mierzy istniejące w otoczeniu pole magnetyczne. Pod tym względem różni się od żyroskopu, który dostarcza sygnał przede wszystkim podczas zmiany orientacji.
Pomiar nie rozróżnia jednak automatycznie pola Ziemi od pola generowanego przez robot. Czujnik reaguje na ich sumę, dlatego jego wskazanie może być poprawne na stole testowym, ale zmienić się po zamontowaniu obok silników, przewodów zasilających albo stalowych elementów konstrukcyjnych.
Co właściwie mierzy magnetometr?
Magnetometr mierzy składowe wektora indukcji magnetycznej. W układzie SI jednostką jest tesla, ale ze względu na niewielkie wartości pola otoczenia wyniki czujników są najczęściej podawane w mikroteslach, oznaczanych jako µT.
Trzy liczby reprezentujące osie X, Y i Z nie są jeszcze kierunkiem kompasowym. Aby obliczyć azymut, trzeba uwzględnić orientację czujnika, kalibrację oraz przechylenie robota. Prosty wzór wykorzystujący wyłącznie dwie poziome składowe działa poprawnie tylko wtedy, gdy magnetometr pozostaje poziomo.
W robocie pochylającym się lub przechylającym należy zastosować kompensację przechylenia. Oprogramowanie wykorzystuje wtedy orientację wyznaczoną z akcelerometru i żyroskopu, aby prawidłowo zrzutować wektor pola na płaszczyznę poziomą. Oprogramowanie eCompass firmy NXP również łączy dane akcelerometru i magnetometru oraz uwzględnia kalibrację zakłóceń magnetycznych.
Jak magnetometr pomaga określić yaw?
Jeżeli urządzenie nie ma magnetometru ani innego bezwzględnego odniesienia kierunku, orientacja może zostać wyrównana względem grawitacji w roll i pitch, ale początkowy kierunek yaw pozostaje arbitralny i może stopniowo dryfować. Takie rozróżnienie opisuje również konwencja ROS REP-145.
Magnetometr nie musi być jedynym sposobem korygowania yaw. W wielu robotach przemysłowych i mobilnych jego pomiar jest zastępowany albo uzupełniany przez lokalizację wizyjną, LiDAR SLAM, enkodery, GNSS lub zewnętrzne systemy pozycjonowania.
Północ magnetyczna a północ geograficzna
Magnetometr wskazuje kierunek związany z lokalnym polem magnetycznym Ziemi, czyli północ magnetyczną. Nie jest ona dokładnie tym samym kierunkiem co północ geograficzna wyznaczona przez oś obrotu Ziemi.
Kąt pomiędzy północą magnetyczną i geograficzną nazywa się deklinacją magnetyczną. Jego wartość zależy od miejsca i czasu. Jeżeli robot ma podawać kierunek względem północy geograficznej, system powinien zastosować odpowiednią korektę deklinacji.
Wewnątrz budynku błąd wywołany lokalną konstrukcją stalową lub instalacją elektryczną może być jednak większy niż sama deklinacja. Dlatego w autonomicznej nawigacji wewnętrznej magnetometr często pełni jedynie funkcję pomocniczą, a nie główne źródło kierunku.
Co zakłóca pomiary magnetometru?
Zakłócenia mogą być stałe względem czujnika albo zmieniać się podczas pracy. Stały magnes zamontowany w obudowie może powodować względnie powtarzalny błąd, który da się częściowo uwzględnić w kalibracji. Pole silnika zmieniające się wraz z prądem i ruchem robota jest trudniejsze do skorygowania.
Z tego powodu magnetometr powinien być umieszczany możliwie daleko od silników, przewodów dużego prądu, magnesów i elementów ferromagnetycznych. Ostateczną ocenę należy wykonać po zmontowaniu robota i podczas pracy napędów.
Czym są błędy hard iron i soft iron?
Zakłócenia związane z konstrukcją urządzenia są często dzielone na błędy typu hard iron i soft iron. Nie odnoszą się one bezpośrednio do twardości materiału, lecz do sposobu, w jaki otoczenie wpływa na wyniki magnetometru.
Błąd hard iron działa jak dodatkowe, w przybliżeniu stałe pole związane z urządzeniem. Powoduje przesunięcie wszystkich pomiarów o określoną wartość. Źródłem może być między innymi magnes trwały albo namagnesowany element konstrukcyjny.
Błąd soft iron wynika ze zniekształcania pola przez materiały ferromagnetyczne. Może powodować różną czułość w poszczególnych kierunkach oraz wzajemne mieszanie składowych osi. Zbiór pomiarów, który idealnie powinien tworzyć kulę, zostaje wtedy rozciągnięty i obrócony do postaci elipsoidy.
Dokumentacja kalibracyjna NXP opisuje osobną korekcję przesunięcia hard iron oraz macierzową kompensację deformacji soft iron.
Jak przebiega kalibracja magnetometru?
Kalibracja wymaga zebrania pomiarów przy wielu różnych orientacjach czujnika. Celem jest obserwacja pola magnetycznego z możliwie wszystkich kierunków i wyznaczenie parametrów opisujących przesunięcie oraz deformację wyników.
Popularny ruch przypominający cyfrę osiem może być wystarczający w prostych urządzeniach konsumenckich, ale dokładna kalibracja trójosiowa powinna obejmować zróżnicowane obroty w przestrzeni. Robot lub jego moduł należy poruszać tak, aby wszystkie osie magnetometru zmieniały orientację względem pola.
Algorytmy mogą dopasować do zebranych punktów kulę albo elipsoidę, a następnie obliczyć offset hard iron i macierz kompensacji soft iron. NXP opisuje kalibrację opartą na zbiorze trójwymiarowych pomiarów i wyznaczaniu obu rodzajów korekcji.
Kalibrację należy wykonać po zamontowaniu czujnika w gotowym urządzeniu. Przeniesienie płytki, wymiana przewodów, akumulatora, silnika albo metalowej obudowy może zmienić lokalne pole i unieważnić wcześniejsze współczynniki.
Kalibracja nie usuwa wszystkich zakłóceń. Parametry wyznaczone dla nieruchomych silników mogą nie kompensować pola pojawiającego się podczas dużego obciążenia napędów. System powinien więc kontrolować wiarygodność pomiaru również podczas normalnej pracy.
Kiedy nie należy ufać magnetometrowi?
Algorytm fuzji nie powinien bezwarunkowo korygować orientacji na podstawie każdego pomiaru magnetometru. Może sprawdzać wartość pola, tempo jego zmian oraz zgodność kierunku z innymi czujnikami. Pomiar uznany za niewiarygodny powinien otrzymać mniejszą wagę albo zostać tymczasowo odrzucony.
W środowisku przemysłowym magnetometr może być mniej użyteczny niż w otwartej przestrzeni. Nie oznacza to, że całe IMU przestaje działać. Akcelerometr i żyroskop nadal mogą dostarczać wartościowych danych, natomiast yaw jest korygowany przez kamerę, LiDAR, enkodery, GNSS lub system lokalizacji.
Jak magnetometr jest publikowany w ROS 2?
Dane magnetometru są publikowane oddzielnie od standardowej wiadomości sensor_msgs/msg/Imu. Wiadomość Imu zawiera orientację, prędkość kątową i przyspieszenie liniowe, ale nie posiada pola przeznaczonego na surowy pomiar magnetyczny.
Do publikowania trójosiowego pola magnetycznego służy wiadomość sensor_msgs/msg/MagneticField. Typowy temat może mieć nazwę imu/mag, zgodnie z konwencją REP-145. Wiadomość zawiera wektor pola oraz macierz kowariancji opisującą niepewność pomiaru.
Sterownik powinien jasno określać, czy dane są surowe, czy zostały już skorygowane o bias i współczynniki kalibracyjne. Przed użyciem pomiaru w fuzji należy również sprawdzić układ współrzędnych, jednostki, znacznik czasu oraz transformację czujnika względem korpusu robota.
Czym różni się IMU 6-osiowe od 9-osiowego?
Określenia IMU 6-osiowe i 9-osiowe odnoszą się do liczby kanałów pomiarowych udostępnianych przez zestaw czujników. Nie opisują liczby przegubów robota ani liczby stopni swobody jego konstrukcji.
IMU 6-osiowe łączy trójosiowy akcelerometr i trójosiowy żyroskop. Czujnik udostępnia więc trzy składowe przyspieszenia właściwego oraz trzy składowe prędkości kątowej. Taka konfiguracja jest podstawą większości systemów inercyjnych stosowanych w robotyce. Przykładowe współczesne układy Bosch integrują właśnie trójosiowy akcelerometr i trójosiowy żyroskop
System 9-osiowy rozszerza ten zestaw o trójosiowy magnetometr. Otrzymujemy wtedy trzy osie akcelerometru, trzy osie żyroskopu i trzy osie pomiaru pola magnetycznego. Magnetometr może znajdować się w tej samej obudowie albo być osobnym układem współpracującym z 6-osiowym IMU. TDK oferuje zarówno zintegrowane czujniki 9-osiowe, jak i rozwiązania dwukomponentowe łączące IMU z zewnętrznym magnetometrem.
Ściśle technicznie magnetometr nie jest czujnikiem inercyjnym, ponieważ mierzy zewnętrzne pole magnetyczne. Mimo to określenie „9-osiowe IMU” jest powszechnie stosowane w dokumentacji producentów i opisach gotowych modułów. Można również spotkać określenie MARG, czyli Magnetic, Angular Rate and Gravity.
Porównanie IMU 6-osiowego i 9-osiowego
W systemie 6-osiowym akcelerometr umożliwia długoterminową korekcję orientacji względem grawitacji, ale nie dostarcza odniesienia dla obrotu wokół osi pionowej. Bez magnetometru lub innego zewnętrznego źródła początkowy yaw może być dowolny, a później stopniowo dryfować. Takie zachowanie opisuje również konwencja sterowników IMU w ROS.
System 9-osiowy może ograniczać ten problem, ale tylko wtedy, gdy pole magnetyczne jest prawidłowo zmierzone. W pobliżu napędów, stalowych konstrukcji, falowników i przewodów dużego prądu magnetometr może pogorszyć wynik zamiast go poprawić.
Czy IMU 9-osiowe jest zawsze lepsze?
Większa liczba kanałów pomiarowych nie oznacza automatycznie większej dokładności całego systemu. Magnetometr dostarcza dodatkowej informacji, ale jest również kolejnym źródłem błędów, które trzeba prawidłowo skalibrować i kontrolować.
W otwartej przestrzeni, z dala od dużych elementów metalowych i silnych pól elektrycznych, magnetometr może skutecznie stabilizować kierunek. W hali produkcyjnej, wewnątrz stalowego robota lub obok napędów jego wskazania mogą być zmienne i niewiarygodne.
Nowoczesny robot może osiągnąć bardzo dobrą estymację orientacji przy użyciu IMU 6-osiowego, jeżeli yaw jest korygowany przez kamerę, LiDAR, enkodery, GNSS albo system SLAM. W takim rozwiązaniu rezygnacja z magnetometru może być świadomą decyzją konstrukcyjną, a nie ograniczeniem technologicznym.
Kiedy wybrać IMU 6-osiowe?
Kiedy rozważyć system 9-osiowy?
Przed wyborem należy analizować jakość konkretnych czujników, a nie tylko liczbę osi. Dobre IMU 6-osiowe o niskim szumie, stabilnym offsecie i poprawnej synchronizacji może zapewnić lepsze wyniki niż przeciętny system 9-osiowy pracujący w zakłóconym środowisku.
Ważne są również częstotliwość próbkowania, opóźnienie, stabilność temperaturowa, zakres pomiarowy, sposób montażu i algorytm fuzji. Liczba osi jest tylko jednym z parametrów całego systemu estymacji ruchu.
Jak z danych IMU wyznaczana jest orientacja robota?
Podstawowe czujniki IMU nie mierzą bezpośrednio gotowej orientacji robota. Akcelerometr dostarcza trzy składowe przyspieszenia właściwego, żyroskop trzy składowe prędkości kątowej, a opcjonalny magnetometr trzy składowe pola magnetycznego. Dopiero algorytm estymacji łączy te pomiary i oblicza orientację czujnika względem przyjętego układu odniesienia.
Żyroskop bardzo dobrze rejestruje szybkie zmiany orientacji. Jego pomiary są całkowane w czasie, dzięki czemu system może na bieżąco aktualizować obrót robota. Nawet niewielki offset żyroskopu powoduje jednak narastający dryft.
Akcelerometr dostarcza długoterminowego odniesienia dla kierunku grawitacji, dlatego pomaga korygować roll i pitch. Podczas przyspieszania, hamowania, drgań lub uderzeń jego wynik nie przedstawia jednak wyłącznie kierunku pionowego. Algorytm musi wtedy zmniejszyć wagę tego pomiaru albo wykorzystać dodatkowe źródła informacji.
Magnetometr może dostarczyć odniesienia dla yaw, ale tylko wtedy, gdy lokalne pole magnetyczne jest wystarczająco stabilne. W robotach pracujących obok silników i stalowych konstrukcji korekcja kierunku może zamiast poprawy powodować dodatkowy błąd.
Pakiet ROS 2 imu_filter_madgwick łączy prędkości kątowe, przyspieszenia oraz opcjonalne pomiary magnetyczne w estymację orientacji. Oprogramowanie fuzji sensorów może zwracać wynik między innymi jako kwaternion albo kąty Eulera.
Jak przebiega estymacja orientacji?
Etap wykorzystujący żyroskop jest często określany jako przewidywanie lub propagacja stanu. Na podstawie wcześniejszej orientacji, prędkości kątowej i czasu między próbkami obliczana jest przewidywana orientacja w kolejnym momencie.
Akcelerometr i magnetometr są następnie wykorzystywane do korekcji. Ich pomiary zapewniają odniesienia zewnętrzne, których nie ma sam żyroskop. Algorytm nie powinien jednak traktować wszystkich pomiarów jako jednakowo wiarygodnych.
Gdy robot gwałtownie przyspiesza, długość wektora akcelerometru może znacząco odbiegać od wartości związanej z samą grawitacją. Podobnie nagła zmiana pola magnetycznego może wskazywać na zakłócenie magnetometru. Dobrze zaprojektowany system powinien wykrywać takie sytuacje i czasowo ograniczać wpływ niepewnego czujnika.
Jaką rolę pełnią poszczególne czujniki?
IMU zapewnia wysoką częstotliwość pomiarów i bardzo szybko reaguje na ruch. Kamera, LiDAR, enkodery i GNSS mogą działać wolniej, ale dostarczają informacji pozwalających ograniczać narastający błąd estymacji.
Połączenie szybkiego przewidywania z IMU i okresowej korekcji pochodzącej z innych czujników jest podstawą wielu systemów lokalizacji robotów. Pakiet robot_localization w ROS 2 może łączyć wiele źródeł danych, w tym wiadomości sensor_msgs/Imu, odometrię oraz pomiary pozycji i orientacji.
Orientacja względna i orientacja bezwzględna
Orientacja względna opisuje zmianę względem przyjętego stanu początkowego. Po uruchomieniu robota system może przyjąć aktualny kierunek jako yaw równy zero, a następnie śledzić wszystkie późniejsze obroty względem tego ustawienia.
Orientacja bezwzględna jest odniesiona do zewnętrznego układu świata, na przykład kierunku północy, mapy budynku albo układu współrzędnych stanowiska. Jej wyznaczenie wymaga zewnętrznego odniesienia, takiego jak magnetometr, kamera, LiDAR, GNSS albo system lokalizacji.
IMU 6-osiowe może wykorzystać grawitację do wyznaczenia pionu i początkowych wartości roll oraz pitch. Nie posiada jednak samodzielnego bezwzględnego odniesienia dla yaw. Dlatego po uruchomieniu kierunek wokół osi Z może zostać przyjęty umownie, a później stopniowo dryfować.
Rozróżnienie to jest szczególnie ważne podczas integrowania kilku systemów. Orientacja publikowana przez sterownik IMU może opisywać obrót względem chwili uruchomienia, podczas gdy lokalizacja SLAM przedstawia orientację względem utworzonej mapy.
Dlaczego orientacja jest zwykle zapisywana jako kwaternion?
Kąty roll, pitch i yaw są łatwe do zrozumienia, ale nie są najlepszą reprezentacją do wykonywania kolejnych obliczeń. Ich wynik zależy od kolejności obrotów, a w określonych konfiguracjach występuje problem gimbal lock.
Kwaternion opisujący orientację składa się z czterech wartości oznaczanych najczęściej jako x, y, z i w. Pozwala wykonywać złożenia obrotów i płynnie aktualizować orientację bez osobliwości charakterystycznych dla kątów Eulera.
Algorytm może więc przechowywać aktualną orientację jako kwaternion, a roll, pitch i yaw obliczać dopiero wtedy, gdy wartości mają zostać przedstawione człowiekowi, zapisane w konfiguracji lub wykorzystane przez konkretny element oprogramowania.
Oprogramowanie Bosch do fuzji sensorów może udostępniać orientację zarówno w postaci kwaternionu, jak i kątów Eulera. Podobnie pakiet ROS 2 imu_filter_madgwick oblicza orientację na podstawie danych inercyjnych i opcjonalnych pomiarów magnetycznych.
Dlaczego dokładny czas pomiaru jest tak ważny?
Orientacja obliczana z żyroskopu zależy bezpośrednio od czasu pomiędzy kolejnymi próbkami. Nawet poprawny pomiar prędkości kątowej da błędny wynik, jeżeli algorytm użyje niewłaściwego odstępu czasu.
Opóźnienie, nieregularna częstotliwość odczytu albo błędne znaczniki czasu mogą powodować nieprawidłowe całkowanie obrotu. Problem staje się szczególnie widoczny podczas szybkiego ruchu robota.
Synchronizacja jest również potrzebna podczas łączenia IMU z kamerą albo LiDAR-em. Pomiar orientacji musi odpowiadać dokładnie tej chwili, w której został zarejestrowany obraz lub skan. Kilkanaście milisekund różnicy może powodować zauważalne przesunięcie danych podczas dynamicznego ruchu.
Z tego powodu zaawansowane moduły mogą wykorzystywać sprzętowe znaczniki czasu, sygnały synchronizujące, bufory FIFO oraz wspólny zegar dla kilku czujników. Częstotliwość publikowania danych nie jest jedynym istotnym parametrem — równie ważne są stabilność opóźnienia i poprawność czasu każdej próbki.
Czym jest fuzja sensorów w systemie IMU?
Fuzja sensorów to proces łączenia pomiarów pochodzących z kilku czujników w celu uzyskania dokładniejszej, stabilniejszej i bardziej kompletnej informacji o ruchu robota. W przypadku IMU podstawowym zadaniem jest połączenie danych akcelerometru i żyroskopu, a w systemie 9-osiowym również magnetometru.
Każdy z tych czujników posiada inne właściwości. Żyroskop szybko reaguje na obrót, ale jego niewielkie błędy prowadzą do narastającego dryftu. Akcelerometr zapewnia odniesienie do kierunku grawitacji, lecz podczas ruchu rejestruje również przyspieszenia liniowe, drgania i uderzenia. Magnetometr może stabilizować yaw, ale jest podatny na zakłócenia generowane przez konstrukcję i napędy robota.
Fuzja nie polega na prostym obliczeniu średniej z pomiarów. Algorytm wykorzystuje model ruchu, znaczniki czasu, kalibrację oraz informacje o niepewności poszczególnych czujników. Najczęściej żyroskop służy do szybkiego przewidywania zmian orientacji, a akcelerometr, magnetometr lub zewnętrzne systemy lokalizacji wykonują okresową korekcję wyniku.
Należy odróżnić fuzję wykonywaną wewnątrz modułu IMU od fuzji całego systemu robotycznego. Pierwsza łączy przede wszystkim akcelerometr, żyroskop i opcjonalny magnetometr w estymację orientacji. Druga może dodatkowo wykorzystywać enkodery, kamerę, LiDAR, GNSS, odometrię oraz lokalizację względem mapy.
W ROS 2 pakiet imu_complementary_filter łączy prędkości kątowe, przyspieszenia i opcjonalne dane magnetyczne w kwaternion orientacji. Pakiet imu_filter_madgwick realizuje podobne zadanie za pomocą filtra Madgwicka. Z kolei robot_localization może łączyć dowolną liczbę źródeł, w tym wiadomości sensor_msgs/Imu, odometrię i pomiary pozycji, wykorzystując estymator EKF albo UKF.
Dlaczego dane z jednego czujnika nie wystarczają?
Czujniki uzupełniają się przede wszystkim dlatego, że ich błędy mają inny charakter. Żyroskop jest bardzo użyteczny w krótkim przedziale czasu, natomiast akcelerometr i zewnętrzne źródła lokalizacji zapobiegają nieograniczonemu narastaniu błędu.
Algorytm fuzji może wykorzystywać szybkie pomiary IMU pomiędzy wolniejszymi aktualizacjami kamery lub LiDAR-u. Dzięki temu robot zachowuje płynną estymację ruchu również wtedy, gdy bardziej złożony czujnik chwilowo nie dostarcza nowego wyniku.
Jak przebiega fuzja danych krok po kroku?
W wielu algorytmach proces jest dzielony na dwa główne etapy: przewidywanie i korekcję. Podczas przewidywania model ruchu oraz dane IMU określają, jak powinien zmienić się stan robota. Podczas korekcji wynik jest porównywany z kolejnymi obserwacjami.
Korekcja nie powinna być równie silna w każdej sytuacji. Gdy robot porusza się gwałtownie, przyspieszenie zmierzone przez akcelerometr może nie reprezentować kierunku grawitacji. Gdy robot przejeżdża obok silnika lub stalowej konstrukcji, magnetometr może nie przedstawiać prawidłowego kierunku. Algorytm powinien wtedy ograniczyć wpływ takiego pomiaru.
Najczęściej stosowane metody fuzji danych
Wybór metody zależy od tego, jaki stan ma zostać oszacowany. Filtr komplementarny lub Madgwicka może wystarczyć do wyznaczania samej orientacji modułu IMU. Estymacja pełnej pozycji, prędkości i orientacji robota zwykle wymaga jednak połączenia IMU z odometrią, kamerą, LiDAR-em lub GNSS.
ROS 2 udostępnia gotowy filtr komplementarny łączący prędkości kątowe, przyspieszenia i opcjonalne dane magnetyczne w kwaternion orientacji. Pakiet robot_localization zawiera natomiast węzły ekf_localization_node i ukf_localization_node, które mogą łączyć wiele źródeł stanu robota.
Jak działa filtr komplementarny?
Filtr komplementarny wykorzystuje fakt, że żyroskop i akcelerometr są użyteczne w różnych zakresach czasu. Żyroskop dobrze opisuje szybkie zmiany orientacji, ale jego długoterminowy wynik obciąża dryft. Akcelerometr zapewnia odniesienie do grawitacji, lecz jego krótkotrwałe pomiary są zakłócane przez ruch i drgania.
W uproszczonym ujęciu filtr przepuszcza szybkie zmiany pochodzące z żyroskopu oraz wolniejsze, długoterminowe odniesienie z akcelerometru. Wyniki są następnie łączone w jedną estymację orientacji.
Siłę korekcji określa parametr nazywany często wzmocnieniem lub wagą. Zbyt mała korekcja powoduje szybkie narastanie dryftu. Zbyt duża może sprawić, że orientacja będzie reagowała na każde drganie i przyspieszenie liniowe.
Implementacja ROS 2 imu_complementary_filter może łączyć prędkość kątową, przyspieszenie i opcjonalne dane magnetyczne w kwaternion. Udostępnia również mechanizmy estymowania biasu żyroskopu i adaptacyjnej zmiany wzmocnienia.
Jak działa filtr Madgwicka?
Filtr Madgwicka również wykorzystuje żyroskop do przewidywania zmian orientacji, ale korekcję wyznacza za pomocą algorytmu gradientowego. Przewidywany kierunek grawitacji i opcjonalnie pola magnetycznego jest porównywany z rzeczywistymi pomiarami czujników.
Różnica pomiędzy przewidywaniem i obserwacją służy do wyznaczenia korekty kwaternionu. W ten sposób filtr ogranicza dryft żyroskopu, zachowując jednocześnie szybką reakcję na obrót.
Istotnym parametrem jest współczynnik określający siłę korekcji. Zbyt mała wartość powoduje wolne usuwanie dryftu, natomiast zbyt duża może zwiększyć wpływ szumu i dynamicznych przyspieszeń.
Filtr może działać w konfiguracji IMU, wykorzystującej akcelerometr i żyroskop, albo MARG, obejmującej również magnetometr. Oryginalne opracowanie Madgwicka opisuje estymację orientacji w postaci kwaternionu z zastosowaniem korekcji gradientowej, a pakiet ROS 2 imu_filter_madgwick udostępnia tę metodę dla typowych danych IMU.
Jak działa rozszerzony filtr Kalmana?
Rozszerzony filtr Kalmana, czyli EKF, może estymować znacznie więcej niż samą orientację. Stan może obejmować pozycję, orientację, prędkości liniowe, prędkości kątowe, przyspieszenia oraz biasy czujników.
Najpierw model ruchu przewiduje, jak stan robota powinien zmienić się w czasie. Przewidywana jest również niepewność tego wyniku. Po pojawieniu się nowego pomiaru filtr oblicza różnicę pomiędzy obserwacją i przewidywaniem, a następnie wykonuje korekcję.
Siła korekcji zależy od niepewności przewidywania i niepewności pomiaru. Jeżeli czujnik jest uznawany za dokładny, jego wynik wywiera większy wpływ na stan. Jeżeli posiada wysoki poziom szumu albo niewielką wiarygodność, korekcja jest słabsza.
EKF rozszerza klasyczny filtr Kalmana na modele nieliniowe, stosując lokalną linearyzację. UKF wykorzystuje natomiast zestaw punktów sigma, które są przekształcane przez model nieliniowy. Pakiet ROS 2 robot_localization udostępnia oba rodzaje estymatorów i może przetwarzać wiadomości Odometry, Imu, PoseWithCovarianceStamped oraz TwistWithCovarianceStamped.
Co oznacza niepewność i kowariancja pomiaru?
Każdy pomiar posiada pewien poziom niepewności. Nawet nieruchomy żyroskop nie zwraca idealnie stałego zera, a kolejne próbki akcelerometru różnią się pod wpływem szumu, drgań i temperatury.
Kowariancja jest matematycznym opisem niepewności oraz zależności pomiędzy poszczególnymi składowymi pomiaru. Mała wartość wariancji oznacza zwykle większe zaufanie do danego kanału, natomiast duża informuje filtr, że wynik może znacząco odbiegać od rzeczywistości.
Nieprawidłowe ustawienie kowariancji może prowadzić do złej fuzji. Zbyt mała wartość sprawia, że filtr nadmiernie ufa czujnikowi. Zbyt duża może praktycznie wyłączyć jego wpływ na estymację.
W wiadomości sensor_msgs/msg/Imu osobne macierze kowariancji są przewidziane dla orientacji, prędkości kątowej i przyspieszenia liniowego. Pozwalają one przekazywać kolejnym komponentom systemu informację nie tylko o wartości pomiaru, ale także o jego przewidywanej jakości.
Kowariancje powinny wynikać z dokumentacji czujnika, pomiarów wykonanych na nieruchomym urządzeniu oraz testów w rzeczywistych warunkach pracy. Wartości dobrane przypadkowo mogą sprawić, że filtr będzie matematycznie działał, ale wynik nie będzie odpowiadał rzeczywistemu ruchowi robota.
Fuzja orientacji a estymacja pełnego stanu robota
Filtr orientacji i filtr lokalizacji wykonują powiązane, ale nieidentyczne zadania. Filtr orientacji wykorzystujący dane IMU może zwracać kwaternion opisujący obrót czujnika. Nie musi jednak znać pozycji robota ani jego prędkości względem mapy.
Estymator pełnego stanu łączy znacznie więcej informacji. Może uwzględniać położenie X, Y i Z, orientację, prędkość liniową, prędkość kątową oraz przyspieszenie. W tym przypadku IMU jest tylko jednym z wielu źródeł.
Pakiet robot_localization śledzi stan obejmujący pozycję, orientację, prędkości liniowe i kątowe oraz przyspieszenia liniowe. Może przyjmować dowolną liczbę źródeł i pozwala określić, które składowe poszczególnych wiadomości mają być wykorzystywane.
Gotowa orientacja opublikowana przez sterownik IMU może zostać następnie przekazana do kolejnego filtra razem z odometrią, pozycją GNSS albo wynikiem SLAM. Należy jednak uważać, aby nie łączyć wielokrotnie tych samych informacji w sposób powodujący sztuczne zwiększenie zaufania.
Przykładowo orientacja obliczona wewnątrz kamery Visual-Inertial może już wykorzystywać to samo IMU, które publikowane jest oddzielnie. Traktowanie obu wyników jako całkowicie niezależnych pomiarów może prowadzić do nieprawidłowej oceny niepewności.
Czym jest dryft IMU i skąd biorą się błędy pomiarowe?
Dryft IMU to stopniowe odchodzenie obliczonej orientacji, prędkości lub pozycji od rzeczywistego stanu robota. Czujnik może pozostawać nieruchomy, a mimo to oprogramowanie po pewnym czasie zacznie wskazywać niewielki obrót, zmianę prędkości albo przesunięcie.
Dryft nie jest pojedynczym rodzajem błędu. Powstaje wskutek łącznego wpływu offsetu, niestabilności biasu, szumu, temperatury, drgań, niedokładności skali, nieprawidłowego ustawienia osi oraz błędów synchronizacji czasu. Ponieważ pomiary żyroskopu i akcelerometru są całkowane, nawet niewielkie odchylenia mogą narastać wraz z czasem.
W żyroskopie istotne znaczenie mają między innymi niestabilność biasu i szum określany przez parametr angular random walk. Analog Devices wskazuje te dwa zjawiska jako podstawowe składniki dryftu powstającego podczas całkowania prędkości kątowej.
W przypadku akcelerometru błąd jest szczególnie dotkliwy podczas obliczania pozycji. Przyspieszenie trzeba najpierw scałkować do prędkości, a następnie drugi raz do położenia. Powoduje to szybkie narastanie nawet niewielkiego offsetu, szumu lub błędu orientacji.
Czym różnią się offset, szum i dryft?
Stały offset można częściowo wyznaczyć podczas postoju i odjąć od kolejnych pomiarów. Nie usuwa to jednak niestabilności biasu, szumu ani zmian powodowanych temperaturą. Dlatego kalibracja początkowa zmniejsza dryft, ale zwykle nie eliminuje go całkowicie.
W dokumentacji precyzyjnych modułów IMU osobno podawane są między innymi: powtarzalność biasu, stabilność biasu podczas pracy, szum, angular random walk, błąd skali, nieprostopadłość osi oraz wpływ przyspieszeń i drgań na żyroskop.
Jak błędy narastają podczas całkowania?
Żyroskop mierzy prędkość kątową. Aby obliczyć zmianę orientacji, oprogramowanie całkuje pomiary w czasie. Jeżeli wynik zawiera stały bias, błąd kąta rośnie w przybliżeniu liniowo.
Błąd orientacji ≈ bias żyroskopu × czas
Jeżeli nieruchomy żyroskop błędnie wskazuje 0,1°/s, po minucie całkowania błąd orientacji może osiągnąć około 6°. W rzeczywistym czujniku bias nie musi być stały, dlatego tempo dryftu może zmieniać się podczas pracy.
Akcelerometr jest wykorzystywany do obliczania prędkości i pozycji. Stały błąd przyspieszenia powoduje liniowo narastający błąd prędkości, a błąd pozycji rośnie w przybliżeniu proporcjonalnie do kwadratu czasu:
Błąd prędkości ≈ bias akcelerometru × czas
Błąd pozycji ≈ ½ × bias akcelerometru × czas²
Zależności te są uproszczone, ale dobrze pokazują, dlaczego samodzielne wyznaczanie pozycji z niewielkiego IMU szybko staje się niedokładne.
Szczególnie niebezpieczny jest błąd orientacji. Aby uzyskać przyspieszenie ruchu robota, system musi prawidłowo odjąć wpływ grawitacji. Jeżeli orientacja jest wyznaczona niepoprawnie, część wektora grawitacji zostaje potraktowana jako rzeczywiste przyspieszenie liniowe.
Oznacza to, że niewielki błąd roll lub pitch może wygenerować pozorne przyspieszenie poziome. Po dwukrotnym całkowaniu prowadzi ono do szybko narastającego błędu pozycji, nawet gdy właściwy akcelerometr ma stosunkowo niewielki offset.
Najważniejsze źródła błędów IMU
Precyzyjne moduły IMU są charakteryzowane osobno pod względem stabilności biasu, angular random walk, błędu skali, nieprostopadłości osi, wpływu przyspieszenia liniowego oraz błędu wywołanego drganiami. Parametry te mogą znacząco różnić się pomiędzy niewielkim czujnikiem konsumenckim a przemysłowym modułem inercyjnym.
Jak temperatura wpływa na IMU?
Elementy MEMS zmieniają swoje właściwości wraz z temperaturą. Podczas uruchamiania robota układ elektroniczny oraz czujniki stopniowo się nagrzewają, dlatego offset obserwowany bezpośrednio po włączeniu może różnić się od wartości po kilku lub kilkunastu minutach pracy.
Zmianie mogą ulegać między innymi wartość zerowa, czułość oraz wzajemne zachowanie poszczególnych osi. Jednorazowa kalibracja wykonana w temperaturze pokojowej nie musi więc zapewnić odpowiedniej dokładności podczas pracy na mrozie, w nasłonecznionej obudowie albo w pobliżu rozgrzanych napędów.
Bardziej zaawansowane moduły są fabrycznie kalibrowane w szerokim zakresie temperatur i posiadają wewnętrzne modele kompensacyjne. Nie oznacza to jednak całkowitego braku wpływu temperatury. Dokumentacje precyzyjnych IMU nadal podają osobne błędy czułości, biasu i ustawienia osi w funkcji temperatury.
Jak drgania wpływają na pomiary IMU?
Drgania są jednym z najważniejszych problemów podczas montowania IMU w robocie. Źródłem mogą być silniki, przekładnie, pompy, śmigła, uderzenia nóg o podłoże, nierówności nawierzchni albo rezonanse elementów konstrukcyjnych.
Część drgań jest widoczna jako szybkozmienny szum, który można ograniczać filtrem dolnoprzepustowym. Nie wszystkie błędy można jednak usunąć przez proste uśrednianie. Nieliniowość elementu MEMS może powodować vibration rectification error, czyli niezerowy błąd średni powstający pod wpływem drgań o średniej zbliżonej do zera.
Żyroskop może również reagować na przyspieszenia liniowe, co określa się jako g-sensitivity. Podczas uderzenia albo dynamicznego ruchu nóg robot może więc odczytać pozorną prędkość kątową, mimo że część sygnału wynika z przyspieszenia, a nie rzeczywistego obrotu.
Producenci precyzyjnych IMU podają parametry opisujące wpływ przyspieszenia liniowego i drgań na bias żyroskopu, ponieważ zjawiska te mogą mieć istotne znaczenie w dynamicznych platformach.
Jak ocenia się stabilność IMU?
Najprostszym testem jest pozostawienie nieruchomego czujnika i obserwowanie jego wskazań przez określony czas. Pozwala to oszacować średni offset, odchylenie standardowe próbek, zmianę biasu podczas nagrzewania oraz tempo narastania błędu po całkowaniu.
Bardziej zaawansowaną metodą jest analiza wariancji lub odchylenia Allana. Polega ona na analizowaniu stabilności średnich pomiarów dla różnych długości przedziałów czasu. Kształt wykresu pozwala rozróżnić niektóre rodzaje szumu i wyznaczyć parametry takie jak angular random walk oraz in-run bias stability.
Analiza Allana nie zastępuje testów dynamicznych ani temperaturowych. Czujnik może zachowywać się bardzo dobrze na nieruchomym stole, a znacznie gorzej po zamontowaniu w drgającym robocie. Jest jednak przydatnym narzędziem do porównywania czujników i konfigurowania modeli szumu. Analog Devices wskazuje metodę Allana jako sposób oceny stabilności biasu i angle random walk żyroskopów.
Dlaczego IMU nie wyznacza samodzielnie dokładnej pozycji przez długi czas?
Teoretycznie pozycję można obliczyć wyłącznie z akcelerometru. Wymaga to prawidłowego wyznaczenia orientacji, odjęcia grawitacji, przeliczenia przyspieszenia do układu świata oraz dwukrotnego całkowania w czasie.
W praktyce każda z tych operacji wprowadza błędy. Niewielki offset akcelerometru powoduje narastający błąd prędkości i pozycji. Błąd orientacji prowadzi do nieprawidłowego odjęcia grawitacji, a szum po całkowaniu zamienia się w losowe błądzenie wyniku.
Z tego powodu niedrogie IMU MEMS nie zapewnia samodzielnie stabilnej, długoterminowej pozycji robota. Może bardzo dobrze opisywać szybkie zmiany ruchu pomiędzy kolejnymi aktualizacjami innych czujników, ale wymaga okresowej korekcji.
Źródłem korekcji mogą być enkodery, kamera, LiDAR, GNSS, znaczniki wizyjne, system motion capture albo lokalizacja względem mapy. IMU zwiększa częstotliwość i płynność estymacji, natomiast czujniki obserwujące otoczenie ograniczają jej długoterminowy dryft.
Jak ograniczyć dryft IMU?
Ograniczanie dryftu jest zadaniem całego systemu, a nie wyłącznie samego czujnika. Nawet bardzo dobre IMU wymaga właściwego montażu, czasu, kalibracji, filtracji oraz wiarygodnego zewnętrznego odniesienia.
Różnice pomiędzy modułami mogą być bardzo duże. W dokumentacji przemysłowych IMU spotyka się osobno określone wartości stabilności biasu, angular random walk, błędu temperaturowego i odporności na drgania. Parametry te są bardziej miarodajne niż samo określenie „6-osiowe” lub „9-osiowe”.
Jak kalibruje się IMU?
Kalibracja IMU polega na wyznaczeniu i skorygowaniu przewidywalnych błędów akcelerometru, żyroskopu oraz ewentualnego magnetometru. Obejmuje między innymi offset, współczynniki skali, nieprostopadłość osi, wpływ temperatury oraz ustawienie czujnika względem konstrukcji robota.
Nie każda kalibracja oznacza to samo. Producent może wykonać kalibrację fabryczną samego układu, projektant urządzenia kalibrację po zamontowaniu płytki, a oprogramowanie robota dodatkową korekcję wykonywaną po uruchomieniu lub w czasie pracy.
Nawet dobrze skalibrowany fabrycznie moduł może wymagać sprawdzenia po montażu. Lutowanie, naprężenia płytki, tolerancje mocowania i niewielkie odchylenie obudowy względem osi robota mogą zmienić końcowe zachowanie systemu. Analog Devices wskazuje, że dokładność ustawienia zależy zarówno od błędów samego IMU, jak i od mechanicznego sposobu jego zamontowania.
Jakie rodzaje kalibracji można wyróżnić?
Rozbudowane przemysłowe moduły IMU mogą być fabrycznie kalibrowane indywidualnie dla każdego egzemplarza. Korekcja obejmuje wtedy między innymi bias, czułość, ustawienie osi i zachowanie w szerokim zakresie temperatur. W prostszych układach część tych zadań musi zostać wykonana po zmontowaniu urządzenia.
Kalibracja fabryczna nie zawsze uwzględnia błędy całego robota. Nawet poprawny czujnik może zostać zamontowany pod niewielkim kątem albo pracować na odkształconej płytce. Dlatego należy rozróżniać kalibrację wewnętrzną IMU od kalibracji jego położenia względem korpusu robota.
Jak przebiega kalibracja IMU krok po kroku?
Procedura powinna być przeprowadzona po zamontowaniu IMU, ponieważ naprężenia płytki, tolerancje mechaniczne oraz ustawienie obudowy mogą powodować dodatkowe błędy offsetu i osi. Część błędów po montażu może zostać zmniejszona przez kalibrację programową, ale nie wszystkie zmiany starzeniowe, temperaturowe i mechaniczne dają się całkowicie usunąć.
Jak kalibruje się offset żyroskopu?
Najprostszą kalibrację żyroskopu wykonuje się podczas całkowitego postoju urządzenia. W idealnym przypadku wszystkie trzy osie powinny wtedy wskazywać 0 rad/s albo 0°/s. Rzeczywisty czujnik zwraca jednak niewielkie wartości różne od zera.
Oprogramowanie zbiera serię próbek, oblicza średnią dla każdej osi i zapisuje ją jako bieżący bias. Wartość ta jest następnie odejmowana od kolejnych pomiarów.
Im dłuższy i stabilniejszy jest okres pomiarowy, tym lepiej można oszacować średni offset. Czujnik musi jednak rzeczywiście pozostawać nieruchomy. Drgania konstrukcji, praca wentylatora, silników albo dotykanie robota mogą zniekształcić wynik.
Analog Devices wskazuje, że stały błąd żyroskopu można oszacować przez uśrednianie wyników w czasie, gdy urządzenie nie obraca się. Znane okresy postoju mogą być również wykorzystywane do ponownego zerowania prędkości kątowej podczas pracy.
Kalibracja statyczna koryguje przede wszystkim bieżący offset zerowy. Nie wyznacza dokładnie współczynnika skali ani zachowania czujnika podczas obrotu. Do pełnej kalibracji żyroskopu potrzebne są znane prędkości kątowe, zwykle generowane przez precyzyjny stół obrotowy.
Offset może również zmienić się po ponownym uruchomieniu i w wyniku temperatury. Dlatego wiele systemów wykonuje krótką kalibrację przy każdym starcie albo estymuje bias żyroskopu w filtrze podczas pracy.
Jak kalibruje się akcelerometr metodą sześciu położeń?
Akcelerometr można kalibrować z wykorzystaniem znanego kierunku i wartości grawitacji. W czasie postoju każda oś jest kolejno ustawiana zgodnie i przeciwnie do kierunku pionowego. Otrzymujemy sześć podstawowych położeń: +X, −X, +Y, −Y, +Z i −Z.
Gdy wybrana oś jest skierowana pionowo, powinna wskazywać wartość zbliżoną do +1 g albo −1 g, zależnie od orientacji i przyjętej konwencji. Pozostałe dwie osie powinny wskazywać wartości zbliżone do zera.
Na podstawie wyników można wyznaczyć offset i czułość każdej osi. Bardziej rozbudowany model pozwala dodatkowo oszacować błędy wzajemnego ustawienia i wpływ jednej osi na pozostałe.
STMicroelectronics opisuje kalibrację sześciopołożeniową jako metodę umożliwiającą wyznaczenie offsetów, wzmocnień i wpływów między osiami trójosiowego czujnika.
Znaki w tabeli mogą być odwrócone zależnie od konwencji wyjścia danego czujnika. Najważniejsze jest ustawienie każdej osi w dwóch przeciwnych kierunkach i znajomość oczekiwanej wartości.
Podczas każdego położenia urządzenie powinno pozostawać nieruchomo przez kilka sekund. Zebrane próbki należy uśrednić, ponieważ pojedynczy pomiar zawiera szum i może zostać zakłócony przez niewielki ruch.
Sześć położeń musi być ustawionych możliwie dokładnie. Jeżeli nie można zapewnić precyzyjnej orientacji, można zebrać większą liczbę nieruchomych pomiarów w różnych ustawieniach i zastosować dopasowanie kuli albo elipsoidy. STMicroelectronics wskazuje, że dokładność takiej kalibracji poprawia równomierne rozmieszczenie punktów w przestrzeni.
Jak kalibruje się ustawienie IMU względem robota?
Wewnętrzne osie czujnika nie muszą idealnie pokrywać się z osiami korpusu robota. Przyczyną może być sposób ustawienia płytki, tolerancja otworów montażowych, nierówna powierzchnia, lutowanie albo celowe zamontowanie modułu pod kątem.
Kalibracja ustawienia polega na wyznaczeniu obrotu pomiędzy układem IMU i układem robota. Korekcja może zostać zapisana jako macierz obrotu, kwaternion albo stała transformacja.
Jeżeli moduł został zamontowany dokładnie pod znanym kątem, wystarczy zastosować transformację wynikającą z projektu mechanicznego. W systemach wymagających większej dokładności ustawienie należy zweryfikować pomiarem względem znanego ruchu albo zewnętrznego systemu referencyjnego.
Błąd ustawienia powoduje również mieszanie kanałów. Przykładowo obrót robota wyłącznie wokół osi Z może pojawić się częściowo w kanałach X i Y żyroskopu. Elektroniczna macierz korekcyjna może ograniczyć taki błąd, o ile wzajemne ustawienie zostało prawidłowo scharakteryzowane.
Jak wykonuje się kalibrację temperaturową?
Kalibracja temperaturowa polega na obserwowaniu zachowania czujnika w wielu temperaturach i tworzeniu modelu opisującego zmianę biasu, czułości oraz innych parametrów.
IMU umieszcza się w kontrolowanym środowisku, a następnie stopniowo nagrzewa i chłodzi. W wybranych punktach temperatury zbierane są dane nieruchomego czujnika, a w bardziej rozbudowanej procedurze również pomiary wykonywane podczas znanych przyspieszeń i obrotów.
Na podstawie wyników można utworzyć tabelę, wielomian albo inny model korekcyjny. Podczas pracy sterownik odczytuje temperaturę wewnętrzną IMU i stosuje odpowiednie współczynniki.
Zaawansowane moduły mogą być indywidualnie charakteryzowane przez producenta w szerokim zakresie temperatur. Taka kalibracja zmniejsza nakład pracy integratora, ale nie usuwa potrzeby sprawdzenia całego systemu po montażu.
Jak sprawdzić, czy kalibracja jest poprawna?
Weryfikacja powinna wykorzystywać dane inne niż te, na których wyznaczono współczynniki kalibracyjne. Jeżeli system zostanie oceniony wyłącznie w tych samych sześciu położeniach, może działać poprawnie w punktach kalibracyjnych, ale wykazywać większy błąd w orientacjach pośrednich.
Najbardziej wiarygodny test obejmuje rzeczywisty zakres ruchu, temperatury i drgań robota. Kalibracja wykonana na stole nie gwarantuje identycznych wyników po uruchomieniu wszystkich napędów.
Najczęstsze błędy podczas kalibracji IMU
Nie wszystkie błędy można skorygować jednorazową procedurą. Niestabilność biasu, starzenie, naprężenia mechaniczne i dynamiczne zakłócenia mogą zmieniać się w czasie. Dlatego dokładny system łączy kalibrację początkową z bieżącą estymacją parametrów i korekcją pochodzącą z innych czujników.
Niektóre nowoczesne układy posiadają wbudowane mechanizmy samokalibracji żyroskopu. Przykładem jest funkcja Component Retrimming firmy Bosch, umożliwiająca korekcję czułości bez wymuszania ruchu obrotowego. Dostępność takiej funkcji zależy jednak od konkretnego modelu i nie zastępuje kalibracji ustawienia całego modułu w robocie.
Jak częstotliwość próbkowania i filtrowanie wpływają na dane IMU?
Częstotliwość próbkowania określa, jak często IMU wykonuje lub udostępnia nowe pomiary akcelerometru i żyroskopu. Parametr ten wpływa na zdolność wykrywania szybkich ruchów, dokładność całkowania, opóźnienie systemu, ilość przesyłanych danych oraz obciążenie procesora robota.
Zbyt niska częstotliwość może powodować pomijanie krótkich impulsów, zniekształcenie dynamicznych ruchów i błędy podczas całkowania prędkości kątowej. Samo ustawienie bardzo wysokiej częstotliwości również nie gwarantuje lepszych wyników. Zwiększa ilość danych, może ujawniać więcej drgań i szumu oraz wymaga odpowiedniego pasma interfejsu i wydajności oprogramowania.
Istotne jest również filtrowanie. Filtr dolnoprzepustowy ogranicza szybkie zmiany sygnału, które mogą wynikać z szumu, drgań silników i rezonansów konstrukcji. Zbyt silne filtrowanie może jednak opóźnić reakcję układu i usunąć rzeczywiste informacje o gwałtownym ruchu robota.
Częstotliwość próbkowania, pasmo filtra i dynamika systemu powinny być dobierane razem. Analog Devices wskazuje, że przy cyfrowych akcelerometrach należy uwzględniać zarówno pasmo filtrów, jak i ryzyko aliasingu sygnałów znajdujących się powyżej użytecznego zakresu częstotliwości.
Czym różnią się częstotliwość próbkowania, ODR i częstotliwość publikacji?
W dokumentacji IMU można spotkać kilka podobnie brzmiących parametrów. Nie zawsze opisują one dokładnie ten sam etap przetwarzania danych.
ODR, czyli Output Data Rate, określa częstotliwość, z jaką czujnik udostępnia kolejne wyniki pomiarowe. Wewnętrzne elementy pomiarowe, przetworniki i filtry mogą działać z inną częstotliwością niż końcowy strumień danych.
Sterownik robota może odczytywać próbki z częstotliwością równą ODR albo rzadziej. Następnie dane mogą być publikowane w ROS 2 z jeszcze inną częstotliwością. Jeżeli czujnik mierzy szybciej niż sterownik pobiera wyniki, potrzebny może być bufor FIFO, aby kolejne próbki nie zostały utracone.
Przykładowo IMU może generować dane z częstotliwością 800 Hz, sterownik odczytywać je pakietami z bufora FIFO, a do wybranego komponentu publikować przetworzony wynik z częstotliwością 200 Hz. Nie oznacza to automatycznie, że pozostałe próbki zostały utracone — mogą zostać wcześniej wykorzystane przez filtr albo przesłane w grupach.
Nie należy jednak tworzyć sztucznie nowych informacji przez wielokrotne publikowanie tej samej próbki. Jeżeli temat ROS 2 jest publikowany częściej niż pojawiają się rzeczywiste dane z czujnika, odbiornik powinien wiedzieć, że kolejne wiadomości mogą zawierać powtórzoną wartość.
Współczesne IMU udostępniają wybieralne wartości ODR, filtry i bufory danych. Przykładowa dokumentacja Bosch opisuje osobny wybór częstotliwości wyjściowej i pasma filtracji akcelerometru oraz żyroskopu.
Jak dobrać częstotliwość próbkowania IMU?
Częstotliwość próbkowania powinna być wyższa niż częstotliwość najszybszego ruchu, który system musi prawidłowo odwzorować. Zgodnie z kryterium Nyquista sygnał należy próbkować z częstotliwością większą niż dwukrotność najwyższej istotnej częstotliwości.
Jest to jednak warunek teoretyczny, a nie gotowa wartość projektowa. Rzeczywiste filtry nie odcinają wszystkich sygnałów dokładnie w jednym punkcie, dlatego w praktyce potrzebny jest dodatkowy zapas oraz odpowiedni filtr antyaliasingowy. Analog Devices wskazuje, że pasmo powinno być ograniczone w stosunku do ODR, aby sygnały znajdujące się powyżej połowy częstotliwości próbkowania nie zostały błędnie odwzorowane.
Dobór nie powinien opierać się wyłącznie na zasadzie „im szybciej, tym lepiej”. Zwiększenie ODR może poprawić odwzorowanie szybkich ruchów, ale jednocześnie zwiększa liczbę próbek szumu, obciążenie magistrali oraz zapotrzebowanie na moc obliczeniową.
Bardzo wysoka częstotliwość ma sens wtedy, gdy robot rzeczywiście wykonuje szybkie ruchy albo system sterowania wymaga krótkiego czasu reakcji. W wolniejszej platformie mobilnej część takiego pasma może przedstawiać głównie drgania konstrukcji, a nie użyteczny ruch korpusu.
Czym jest pasmo przenoszenia IMU?
Pasmo przenoszenia określa zakres częstotliwości ruchu, który czujnik i jego tor przetwarzania mogą odwzorować z określoną dokładnością. Nie jest ono tym samym co częstotliwość publikowania danych.
Czujnik może udostępniać próbki z wysokim ODR, ale wcześniej ograniczać ich pasmo za pomocą filtra dolnoprzepustowego. W takim przypadku kolejne próbki pojawiają się często, lecz nie zawierają pełnej informacji o zmianach znajdujących się powyżej częstotliwości odcięcia filtra.
Ograniczenie pasma zmniejsza ilość wysokoczęstotliwościowego szumu, ale jednocześnie usuwa szybkie zmiany sygnału. Wybór powinien więc odpowiadać ruchom ważnym dla sterowania robota.
Zmniejszenie pasma może obniżyć całkowity szum widoczny w danych. Nie oznacza to jednak, że sam czujnik stał się dokładniejszy w każdym rodzaju ruchu. Szybka reakcja na uderzenie lub zmianę orientacji może zostać osłabiona i rozciągnięta w czasie.
Producenci niektórych IMU pozwalają wybierać osobno ODR i parametry cyfrowego filtra dolnoprzepustowego. Dokumentacja Bosch BMI088 opisuje możliwość wyboru częstotliwości danych i pasma filtra dla toru prędkości kątowej.
Czym jest aliasing w pomiarach IMU?
Aliasing powstaje wtedy, gdy sygnał zmienia się szybciej, niż pozwala na to częstotliwość próbkowania. Wysokoczęstotliwościowe drganie może zostać błędnie zarejestrowane jako wolniejsza zmiana, której w rzeczywistości nie było.
Problem jest szczególnie istotny w robotach, ponieważ silniki, przekładnie, śmigła i drgające elementy konstrukcji mogą generować częstotliwości znacznie wyższe niż właściwy ruch korpusu. Po wystąpieniu aliasingu późniejsze filtrowanie cyfrowe może nie odróżnić fałszywego sygnału od prawdziwego ruchu w paśmie użytecznym.
Dlatego filtr antyaliasingowy powinien ograniczyć pasmo przed ostatecznym zmniejszeniem częstotliwości próbek. Sam filtr zastosowany już po zarejestrowaniu zafałszowanego sygnału nie odtworzy utraconej informacji. Analog Devices zwraca uwagę, że cyfrowe akcelerometry mogą odwzorować wysokoczęstotliwościowe składowe w niższym paśmie, jeżeli tor pomiarowy i ODR nie zostały odpowiednio dobrane.
Jak działają filtry stosowane w IMU?
Filtr zmienia udział poszczególnych częstotliwości w sygnale. W IMU najczęściej stosuje się filtr dolnoprzepustowy, który zachowuje wolniejsze zmiany i tłumi składowe znajdujące się powyżej wybranego zakresu.
Filtrowanie może być wykonywane wewnątrz układu scalonego, w sterowniku, w filtrze orientacji albo w kolejnym komponencie systemu robotycznego. Wielokrotne filtrowanie tych samych danych może niepotrzebnie zwiększać opóźnienie, dlatego trzeba znać cały tor przetwarzania.
Dlaczego zbyt silne filtrowanie może pogorszyć działanie robota?
Wygładzony wykres nie zawsze oznacza lepszy pomiar. Filtr może wyglądać korzystnie podczas obserwacji danych, ale jednocześnie opóźniać informację potrzebną regulatorowi.
Robot utrzymujący równowagę musi bardzo szybko wykryć początek przechylenia. Jeżeli filtr zbyt mocno wygładzi sygnał żyroskopu, sterownik otrzyma informację dopiero wtedy, gdy korpus zdąży wykonać większy ruch.
Opóźnienie jest szczególnie ważne w pętli sprzężenia zwrotnego. Regulator oblicza korekcję na podstawie stanu, który może już nie odpowiadać aktualnej pozycji robota. Nadmierne opóźnienie może powodować oscylacje, pogorszenie stabilności albo upadek platformy.
Parametry filtra należy oceniać na podstawie zachowania całego robota, a nie tylko wyglądu wykresu. Właściwym wynikiem jest stabilne sterowanie, prawidłowe odwzorowanie ruchu i akceptowalny poziom szumu przy możliwie małym opóźnieniu.
Filtry o ostrzejszym odcięciu mogą skuteczniej tłumić częstotliwości poza pasmem, ale często wymagają większej złożoności i mogą wprowadzać większe opóźnienie lub zmianę fazy. Dobór zależy od konkretnej architektury czujnika i układu sterowania.
Jak bufor FIFO pomaga w obsłudze szybkich danych?
Bufor FIFO przechowuje kolejne próbki wewnątrz czujnika do momentu ich odczytania przez procesor. Dzięki temu sterownik nie musi wykonywać osobnej operacji komunikacyjnej dokładnie przy każdej nowej próbce.
Procesor może odczytywać większy pakiet danych jednocześnie, co zmniejsza narzut komunikacyjny i ryzyko utraty próbek podczas chwilowego obciążenia systemu. Rozwiązanie jest szczególnie przydatne przy wysokim ODR oraz podczas korzystania z wolniejszej magistrali.
Buforowanie nie zwalnia jednak z konieczności prawidłowego przypisania czasu do poszczególnych próbek. Wszystkie pomiary odczytane w jednym pakiecie nie zostały wykonane w tej samej chwili. Sterownik powinien wykorzystać znaczniki czasu czujnika albo odtworzyć czas kolejnych próbek na podstawie znanego ODR.
Przepełnienie FIFO oznacza, że najstarsze lub najnowsze dane mogą zostać utracone, zależnie od konfiguracji urządzenia. System powinien monitorować stan bufora i wykrywać takie zdarzenia.
Jak częstotliwość IMU wpływa na fuzję sensorów?
IMU często działa znacznie szybciej niż kamera, LiDAR albo GNSS. Filtr może wykorzystywać każdą nową próbkę żyroskopu i akcelerometru do przewidywania ruchu, a wolniejsze czujniki stosować tylko podczas korekcji.
Przykładowo pomiędzy dwoma kolejnymi obrazami kamery może pojawić się wiele próbek IMU. Pozwalają one oszacować obrót i przyspieszenie w czasie, w którym kamera nie dostarczyła jeszcze nowego wyniku.
Warunkiem jest poprawna synchronizacja. Filtr musi wiedzieć, które próbki IMU odpowiadają przedziałowi czasu pomiędzy konkretnymi obrazami albo skanami. Błąd znacznika czasu może zostać błędnie zinterpretowany jako błąd ruchu lub kalibracji.
Nie wszystkie komponenty muszą pracować z jednakową częstotliwością. Powinny jednak korzystać ze spójnego czasu, prawidłowych transformacji i danych o znanej kolejności. Stabilna częstotliwość oraz niewielki jitter są często ważniejsze niż sama wysoka wartość ODR.
Jak praktycznie sprawdzić ustawienia próbkowania i filtrów?
Przydatne jest zapisanie danych przed i po każdym etapie filtracji. Pozwala to ustalić, czy szum został ograniczony przez filtr sprzętowy w IMU, sterownik, filtr orientacji czy kolejny komponent oprogramowania.
Należy również sprawdzić, czy częstotliwość raportowana przez system odpowiada rzeczywistości. Sam parametr konfiguracyjny nie gwarantuje, że wszystkie próbki docierają na czas. Obciążenie procesora, magistrali, sieci lub systemu operacyjnego może powodować nieregularną publikację i utratę danych.
Wybór ODR, pasma i filtrów powinien zostać potwierdzony podczas najbardziej dynamicznego zadania przewidzianego dla robota. Ustawienia poprawne podczas wolnego przejazdu mogą okazać się niewystarczające podczas biegu, skoku, gwałtownego hamowania albo szybkiego ruchu manipulatora.
Jak IMU współpracuje z ROS 2?
W systemie ROS 2 moduł IMU jest zazwyczaj obsługiwany przez sterownik sprzętowy działający jako osobny węzeł. Sterownik odczytuje dane z czujnika, przelicza je do jednostek wymaganych przez ROS 2, przypisuje znacznik czasu i układ współrzędnych, a następnie publikuje wiadomości na odpowiednich tematach.
Pozostałe komponenty robota nie muszą znać sposobu komunikacji z konkretnym układem scalonym. Filtr orientacji, system lokalizacji, sterownik równowagi albo algorytm SLAM subskrybuje standardową wiadomość sensor_msgs/msg/Imu, niezależnie od tego, czy czujnik wykorzystuje magistralę SPI, I²C, UART, CAN czy USB.
Standardowa wiadomość IMU może zawierać orientację zapisaną jako kwaternion, prędkość kątową, przyspieszenie liniowe oraz osobne macierze kowariancji. Magnetometr jest publikowany oddzielnie za pomocą wiadomości sensor_msgs/msg/MagneticField.
Wytyczne REP-145 definiują wspólne konwencje dotyczące tematów, jednostek, układów współrzędnych i sposobu oznaczania dostępności danych IMU. Dzięki temu jeden sterownik może współpracować z wieloma filtrami i systemami robotycznymi bez tworzenia niestandardowego formatu danych. REP-145 pozostaje dokumentem o statusie Draft, ale jest szeroko wykorzystywany jako praktyczna konwencja integracyjna.
Jak wygląda przepływ danych IMU w ROS 2?
Sterownik urządzenia powinien przede wszystkim udostępniać poprawnie opisane dane pomiarowe. Bardziej złożone operacje, takie jak fuzja z kamerą, LiDAR-em lub odometrią, są zazwyczaj wykonywane przez osobne węzły.
Taki podział ułatwia wymianę czujnika. Jeżeli nowy sterownik publikuje zgodne wiadomości, prawidłowe jednostki, znaczniki czasu i układy współrzędnych, pozostała część systemu może działać bez większych zmian.
Co zawiera wiadomość sensor_msgs/msg/Imu?
sensor_msgs/msg/Imu jest podstawowym formatem służącym do przesyłania danych inercyjnych w ROS 2. Wiadomość zawiera nagłówek, trzy grupy danych pomiarowych oraz trzy odpowiadające im macierze kowariancji.
Przyspieszenie musi być podawane w m/s², a prędkość kątowa w rad/s. Orientacja jest zapisywana jako kwaternion. Oficjalna definicja wiadomości przewiduje również szczególny sposób oznaczania danych niedostępnych oraz pomiarów o nieznanej kowariancji.
Macierz orientation_covariance nie opisuje bezpośrednio niepewności czterech składowych kwaternionu. Jest to macierz 3 × 3 odnosząca się do małych błędów orientacji wokół osi X, Y i Z.
Wartości kowariancji są zapisywane w kolejności wierszowej. Elementy znajdujące się na głównej przekątnej reprezentują wariancje poszczególnych osi, natomiast pozostałe elementy mogą opisywać zależności pomiędzy błędami osi.
Pole nazwane linear_acceleration zawiera wynik akcelerometru. Zgodnie z REP-145 nieruchomy czujnik z osią Z skierowaną do góry powinien wskazywać w tej osi około +9,81 m/s². Wartość nie oznacza wtedy ruchu robota do góry, lecz przyspieszenie właściwe wynikające z podparcia względem grawitacji.
Jakie tematy IMU zaleca konwencja REP-145?
Temat imu/data_raw powinien zawierać dane akcelerometru i żyroskopu. Jeżeli sterownik nie udostępnia orientacji, pierwsza wartość tablicy orientation_covariance powinna wynosić −1. Informuje to odbiornik, że pole orientation nie zawiera użytecznego oszacowania.
Temat imu/data może być publikowany bezpośrednio przez urządzenie posiadające własny algorytm fuzji albo przez osobny węzeł, na przykład filtr komplementarny lub filtr Madgwicka.
Magnetometr nie jest umieszczany w wiadomości Imu. REP-145 przewiduje dla niego osobny temat imu/mag wykorzystujący wiadomość MagneticField.
Jak ROS 2 oznacza dane niedostępne i nieznaną kowariancję?
Zerowa macierz kowariancji i wartość −1 w jej pierwszym elemencie mają odmienne znaczenie. Nie należy używać ich zamiennie.
Jeżeli pomiar jest dostępny, ale jego kowariancja nie została określona, wszystkie elementy odpowiedniej macierzy mogą pozostać równe zero. Odbiornik powinien wtedy uznać kowariancję za nieznaną i przyjąć ją z konfiguracji albo innego źródła.
Jeżeli konkretnego rodzaju danych w ogóle nie ma, pierwszy element odpowiadającej macierzy należy ustawić na −1. Odbiornik powinien wtedy całkowicie zignorować powiązane pole. Taki mechanizm jest zapisany zarówno w definicji wiadomości Imu, jak i w REP-145.
Ustawienie wszystkich wariancji na bardzo małe wartości tylko po to, aby filtr zaakceptował dane, jest błędem. Oznaczałoby to, że system powinien niemal bezwarunkowo ufać IMU.
Kowariancja powinna wynikać z dokumentacji, testów nieruchomego czujnika i obserwacji w rzeczywistych warunkach pracy. Drgania robota mogą powodować, że praktyczna niepewność będzie znacznie większa niż wartość zmierzona na stabilnym stole.
Jakie jednostki i kierunki osi obowiązują w ROS 2?
Dane publikowane przez sterownik powinny wykorzystywać prawoskrętny układ współrzędnych oraz jednostki układu SI. Sterownik nie powinien przekazywać wartości w g, stopniach na sekundę ani mikroteslach bez odpowiedniego przeliczenia.
REP-145 wymaga podawania przyspieszenia w m/s², prędkości kątowej w rad/s, a pola magnetycznego w teslach. Wszystkie dane powinny zostać wyrażone w jednym, spójnym układzie czujnika.
Jeżeli producent podaje szum albo odchylenie standardowe, nie należy wpisywać tej wartości bezpośrednio jako wariancji. Elementy na przekątnej macierzy kowariancji powinny zawierać kwadrat odchylenia standardowego.
Sterownik musi również uwzględniać znaki osi. Wiele urządzeń wykorzystuje konwencję NED: X na północ, Y na wschód, Z w dół. Typowa konwencja ROS jest prawoskrętna i często wykorzystuje układ ENU, w którym Z jest skierowane do góry.
REP-145 zaleca, aby standardowy identyfikator ramy IMU miał nazwę imu_link. Dla urządzenia pozostawionego świadomie w konwencji NED sugerowana jest nazwa imu_link_ned, dzięki czemu odmienna konwencja jest widoczna dla integratora.
Jaką rolę pełnią frame_id i tf2?
Pole header.frame_id wskazuje układ współrzędnych, w którym wyrażone są dane wiadomości. Dla IMU będzie to najczęściej imu_link.
Układ imu_link powinien odpowiadać rzeczywistemu położeniu i orientacji osi czujnika. Jeżeli moduł jest zamontowany 10 cm przed środkiem korpusu i obrócony o 90°, relacja ta powinna zostać opisana w drzewie transformacji tf2.
Stała transformacja pomiędzy base_link i imu_link opisuje miejsce montażu czujnika. Biblioteka tf2 przechowuje relacje pomiędzy układami współrzędnych i pozwala przeliczać dane do układu wymaganego przez konkretny komponent. Statyczne transformacje są publikowane dla relacji, które nie zmieniają się podczas pracy robota.
Samo wpisanie frame_id: base_link nie przelicza danych z osi czujnika do osi korpusu. Jeżeli IMU jest fizycznie obrócone, wartości wektorów muszą zostać odpowiednio transformowane albo wiadomość powinna wskazywać rzeczywisty układ imu_link.
Nieprawidłowy frame_id jest szczególnie niebezpieczny, ponieważ dane mogą wyglądać liczbowo poprawnie, ale zostaną zinterpretowane w złych kierunkach. Obrót wokół osi X czujnika może zostać omyłkowo uznany za obrót wokół osi Z robota.
REP-145 wskazuje, że frame_id wiadomości reprezentuje układ czujnika, natomiast konfiguracja tego układu względem base_link opisuje pozycję i orientację montażową IMU.
Orientacja IMU a układ świata w ROS 2
Kwaternion zawarty w polu orientation opisuje orientację układu czujnika względem układu świata przyjętego przez urządzenie lub filtr. Sam układ świata nie musi być osobnym elementem drzewa tf2.
Jeżeli IMU wykorzystuje akcelerometr, może wyrównać świat względem grawitacji w roll i pitch. Jeżeli dodatkowo wykorzystuje poprawnie skalibrowany magnetometr, może odnieść yaw do lokalnego kierunku magnetycznego.
W systemie pozbawionym bezwzględnego odniesienia yaw początkowy kierunek wokół osi Z może być arbitralny. Po uruchomieniu aktualna orientacja zostaje przyjęta jako kierunek początkowy, a następnie zmienia się na podstawie żyroskopu.
Jeżeli urządzenie nie posiada również odniesienia grawitacyjnego, cały układ świata może zostać związany z orientacją czujnika w chwili uruchomienia. Takie przypadki zostały rozróżnione w konwencji REP-145.
Jak magnetometr jest przesyłany w ROS 2?
Pomiar magnetometru jest przesyłany za pomocą wiadomości sensor_msgs/msg/MagneticField. Wiadomość zawiera nagłówek, trójosiowy wektor pola magnetycznego oraz macierz kowariancji 3 × 3.
Wartości pola powinny być podawane w teslach. Jeżeli dokumentacja czujnika podaje wyniki w mikroteslach, należy je podzielić przez milion. Przykładowo 50 µT odpowiada 0,00005 T.
Podobnie jak w wiadomości Imu, macierz wypełniona zerami oznacza nieznaną kowariancję. Jeżeli znane są jedynie wariancje poszczególnych osi, można umieścić je na głównej przekątnej macierzy.
Jeżeli magnetometr znajduje się w innym miejscu albo ma inne osie niż akcelerometr i żyroskop, jego wiadomość powinna wskazywać właściwy frame_id. Transformacja pomiędzy układami musi być znana przed połączeniem pomiarów.
Filtr nie powinien zakładać, że wszystkie wiadomości rozpoczynające się od imu/ automatycznie dotyczą tego samego fizycznego układu współrzędnych.
Jak profil QoS wpływa na transmisję danych IMU?
IMU może publikować setki lub tysiące wiadomości na sekundę. W ROS 2 sposób dostarczania danych jest kontrolowany przez ustawienia QoS, czyli Quality of Service.
Typowy profil SensorDataQoS wykorzystuje historię Keep Last, głębokość 5, niezawodność Best Effort i trwałość Volatile. Jego celem jest ograniczenie opóźnienia strumieni czujnikowych — nowa próbka jest zwykle ważniejsza niż retransmisja starej.
Profil wydawcy i subskrybenta musi być kompatybilny. Niewłaściwa konfiguracja QoS może spowodować, że węzły będą widoczne w systemie, ale subskrybent nie otrzyma wiadomości.
Nie każdy sterownik wykorzystuje profil SensorDataQoS. Ustawienia należy sprawdzić za pomocą informacji o temacie i dokumentacji konkretnego pakietu.
W systemach lokalizacji inercyjnej utrata lub zmiana kolejności próbek może pogorszyć całkowanie danych. Dlatego trzeba monitorować zarówno QoS, jak i znaczniki czasu, częstotliwość wiadomości oraz numerację próbek, jeżeli urządzenie ją udostępnia.
Jak sprawdzić dane IMU za pomocą poleceń ROS 2?
Narzędzia wiersza poleceń ROS 2 pozwalają sprawdzić strukturę wiadomości, częstotliwość publikacji, ustawienia QoS, układy współrzędnych oraz rzeczywiste wartości czujnika. Dane można również zapisać do pliku rosbag2 i przeanalizować później. Oficjalna dokumentacja ROS 2 opisuje ros2 bag jako narzędzie przeznaczone do rejestrowania wiadomości publikowanych na tematach.
Tworzenie własnych węzłów, odbieranie wiadomości z czujników oraz zapisywanie i przetwarzanie danych można realizować również w Pythonie. Podstawy takiej pracy opisaliśmy w poradniku „Programowanie robotów w Pythonie – od czego zacząć?”.
Podczas testu nieruchomego IMU warto sprawdzić, czy prędkości kątowe oscylują wokół zera, a długość wektora akcelerometru jest zbliżona do 9,81 m/s². Nie należy oczekiwać, że wszystkie składowe akcelerometru będą równe zero.
Częstotliwość wyświetlana przez ros2 topic hz opisuje wiadomości docierające do narzędzia, a niekoniecznie wewnętrzny ODR czujnika. Jeżeli sterownik grupuje próbki, filtruje je albo publikuje rzadziej, obie wartości mogą się różnić.
Podczas nagrywania szybkiego strumienia należy upewnić się, że rosbag2 wykorzystuje kompatybilne ustawienia QoS. Oficjalna dokumentacja opisuje możliwość nadpisywania profili QoS podczas rejestracji i odtwarzania danych.
Surowe dane czy orientacja obliczona przez urządzenie?
Niektóre moduły publikują wyłącznie akcelerometr i żyroskop. Inne posiadają wewnętrzny procesor fuzji i dostarczają również gotowy kwaternion orientacji
Orientacja obliczona w urządzeniu może być wygodna i charakteryzować się niewielkim opóźnieniem. Integrator nie zawsze zna jednak dokładny algorytm, sposób kalibracji, zachowanie przy drganiach ani zasady wykorzystywania magnetometru.
Własny filtr działający w ROS 2 zapewnia większą kontrolę nad parametrami i pozwala łatwiej łączyć IMU z innymi czujnikami. Wymaga jednak prawidłowej konfiguracji, kalibracji i realistycznych kowariancji.
Dobrym rozwiązaniem jest publikowanie zarówno imu/data_raw, jak i imu/data, o ile urządzenie lub sterownik posiada oba zestawy informacji. Dane surowe umożliwiają późniejszą zmianę algorytmu oraz diagnostykę problemów, natomiast gotowa orientacja może być wykorzystywana przez prostsze komponenty.
Trzeba jednak jasno dokumentować, czy dane określane jako „raw” są rzeczywiście surowymi wartościami przeliczonymi jedynie do jednostek SI, czy zostały już skorygowane o bias, temperaturę i kalibrację osi.
Najczęstsze błędy integracji IMU z ROS 2
Szczególnie częstym błędem jest nieprawidłowe oznaczenie braku orientacji. Jeżeli sterownik publikuje tylko akcelerometr i żyroskop, nie powinien pozostawiać pozornie poprawnego kwaternionu bez informacji, że nie jest on dostępny. Pierwszy element orientation_covariance powinien wtedy wynosić −1.
Drugim istotnym problemem jest transformacja osi. Zmiana samej nazwy frame_id nie obraca wartości wektorów. Układ wskazany w nagłówku musi rzeczywiście odpowiadać kierunkom, w których wyrażono dane.
Prawidłowa integracja IMU z ROS 2 wymaga jednoczesnej kontroli wartości pomiarowych, jednostek, czasu, transformacji, kowariancji i QoS. Poprawne działanie jednego z tych elementów nie kompensuje błędów pozostałych.
Lista kontrolna integracji IMU z ROS 2
Dopiero po przejściu całej listy warto przekazać dane IMU do systemu lokalizacji, sterowania równowagą albo SLAM. W przeciwnym razie filtr może próbować kompensować błędy wynikające nie z jakości czujnika, lecz z niewłaściwych jednostek, osi lub czasu.
Standardowe interfejsy ROS 2 upraszczają integrację, ale nie weryfikują automatycznie poprawności danych. Wiadomość może mieć prawidłowy typ i jednocześnie zawierać błędne jednostki, znaki albo układ współrzędnych.
Jakie zastosowania ma IMU w robotyce?
IMU jest jednym z podstawowych źródeł informacji o ruchu robota. Dostarcza szybkich pomiarów przyspieszenia i prędkości kątowej, dzięki którym system może rozpoznawać przechylenie, obrót, gwałtowne przyspieszenie, drgania, uderzenie albo upadek konstrukcji.
Dane inercyjne są wykorzystywane przede wszystkim do estymacji orientacji, stabilizacji ruchu, utrzymywania równowagi i krótkoterminowego przewidywania zmiany położenia. W połączeniu z enkoderami, kamerą, LiDAR-em, GNSS i czujnikami kontaktu IMU staje się częścią systemu wyznaczającego pełny stan robota.
Znaczenie IMU zależy od rodzaju platformy. W dronie dane inercyjne są niezbędne do stabilizacji lotu. W robocie humanoidalnym lub czworonożnym pomagają kontrolować orientację korpusu i utrzymywać równowagę. W robocie mobilnym wspierają odometrię oraz lokalizację, natomiast w manipulatorze mogą służyć do analizowania ruchu narzędzia, drgań, kontaktu i kolizji.
IMU zwykle nie działa jako samodzielny system lokalizacji. Jego pomiary są szybkie i dostępne niezależnie od wyglądu otoczenia, ale narastający dryft wymaga okresowej korekcji z innych źródeł. Pakiet ROS 2 robot_localization może łączyć wiadomości IMU z odometrią, pozycją, prędkością i innymi źródłami stanu robota.
Najważniejsze zastosowania IMU w robotach
W praktyce jedna próbka IMU może być jednocześnie wykorzystywana przez kilka komponentów. Prędkość kątowa może trafiać do regulatora równowagi, filtra orientacji, systemu odometrii i algorytmu wykrywania kolizji.
Każde zastosowanie może jednak wymagać innego zakresu pomiarowego, pasma i sposobu filtrowania. Dane odpowiednio wygładzone do prezentacji orientacji mogą być zbyt opóźnione dla szybkiego regulatora stabilizacji albo zbyt mocno przefiltrowane do wykrywania uderzeń.
Utrzymywanie równowagi robota
Robot humanoidalny, czworonożny lub balansujący na kołach musi stale kontrolować orientację swojego korpusu. Nawet niewielkie odchylenie od oczekiwanej pozycji może wymagać szybkiej zmiany momentów w przegubach, położenia stóp albo prędkości kół.
Żyroskop dostarcza informacji o szybkości przechylania się robota, dzięki czemu regulator może zareagować jeszcze przed wystąpieniem dużej zmiany kąta. Akcelerometr pomaga natomiast wyznaczyć długoterminowy kierunek pionowy i korygować dryft orientacji.
IMU nie określa samodzielnie, w jaki sposób robot powinien odzyskać równowagę. Dane są łączone z modelem dynamiki, położeniem przegubów, pozycją środka masy, punktami podparcia i pomiarami kontaktu z podłożem.
W robotach kroczących estymatory często łączą IMU z kinematyką nóg i informacją o kontakcie stóp. Badania nad estymacją stanu robotów kroczących pokazują, że takie połączenie pozwala ograniczać dryft rozwiązania inercyjnego i dokładniej wyznaczać ruch korpusu.
Taki proces może być wykonywany setki razy na sekundę. Z tego powodu w sterowaniu równowagą liczy się nie tylko dokładność, ale także małe opóźnienie, regularne znaczniki czasu i wystarczająco szerokie pasmo pomiarowe.
Zbyt silne filtrowanie może sprawić, że robot rozpozna przechylenie z opóźnieniem. Z kolei zbyt szerokie pasmo może przekazywać do regulatora intensywne drgania napędów i konstrukcji. Parametry trzeba dostroić do dynamiki konkretnej platformy.
IMU w robotach humanoidalnych i czworonożnych
W robotach kroczących główny korpus nie jest sztywno połączony z podłożem. Jego położenia i orientacji nie można więc wyznaczyć wyłącznie na podstawie enkoderów przegubów. Potrzebna jest estymacja tak zwanej pływającej podstawy, obejmująca orientację, prędkość i pozycję korpusu.
IMU dostarcza szybkiej informacji o ruchu podstawy. Enkodery opisują konfigurację nóg, a informacja o kontakcie określa, które stopy można chwilowo potraktować jako punkty podparcia. Połączenie tych danych umożliwia obliczanie ruchu całej konstrukcji.
Podczas chodu robot może wykorzystywać IMU między innymi do wykrywania nadmiernego przechylenia, oceny stabilności, korygowania trajektorii korpusu, rozpoznawania poślizgu i reagowania na nierówności.
W dokumentacji sterowania przegubami robota Spot strumień stanu obejmuje informacje z IMU, stany kontaktu stóp, położenia przegubów i stan kinematyczny. Pokazuje to, że dane inercyjne są jednym z elementów szerszego systemu propriocepcji robota kroczącego.
W bardziej złożonych konstrukcjach można stosować kilka modułów IMU rozmieszczonych w korpusie i kończynach. Pozwalają one obserwować ruch poszczególnych segmentów, wykrywać kontakt stóp albo kompensować elastyczność konstrukcji.
Badania nad wieloma IMU w robotach humanoidalnych pokazują, że dodatkowe czujniki na segmentach mogą zostać połączone z głównym estymatorem stanu w celu lepszego odwzorowania ruchu całego robota
Większa liczba IMU oznacza jednak konieczność dokładnej kalibracji wzajemnego ustawienia, synchronizacji czasu i transformacji każdego czujnika względem modelu robota.
IMU w robotach mobilnych, AMR i AGV
W robocie kołowym IMU uzupełnia odometrię pochodzącą z enkoderów. Enkodery mierzą obrót kół, ale nie wykrywają bezpośrednio poślizgu, unoszenia koła, przechylenia platformy ani ruchu wynikającego z uderzenia.
Żyroskop pomaga dokładniej śledzić zmianę kierunku jazdy, szczególnie podczas skrętu. Akcelerometr może wskazywać ruszanie, hamowanie, wibracje, najechanie na przeszkodę albo przechylenie platformy.
Połączenie odometrii kół z IMU pozwala uzyskać płynniejszą lokalną estymację ruchu. Kamera, LiDAR albo znaczniki lokalizacyjne ograniczają następnie długoterminowy dryft i korygują pozycję względem mapy.
robot_localization w ROS 2 obsługuje jednoczesną fuzję wielu wiadomości Odometry oraz Imu, umożliwiając estymację ruchu robota w przestrzeni trójwymiarowej.
W typowym robocie magazynowym IMU nie zastępuje enkoderów ani LiDAR-u. Dostarcza innego rodzaju informacji, dzięki której filtr może rozpoznawać sytuacje, w których ruch kół nie odpowiada rzeczywistemu ruchowi platformy.
Skuteczność takiej fuzji zależy od poprawnego modelu ruchu. W robocie różnicowym, pojeździe z układem Ackermanna i platformie wielokierunkowej zależności pomiędzy ruchem kół i zmianą orientacji są inne.
IMU w systemach Visual-Inertial i LiDAR-Inertial
Kamera i LiDAR dostarczają informacji o ruchu względem otoczenia, ale ich kolejne wyniki mogą pojawiać się znacznie rzadziej niż pomiary IMU. Dane inercyjne wypełniają odstępy pomiędzy obrazami albo skanami i pozwalają przewidywać zmianę orientacji oraz prędkości.
W odometrii wizyjno-inercyjnej, określanej jako VIO, ruch jest wyznaczany na podstawie obrazów i zsynchronizowanych pomiarów IMU. Kamera dostarcza odniesienia do cech otoczenia, natomiast IMU zapewnia szybką informację o ruchu oraz pomaga podczas gwałtownych obrotów.
Analogicznie system LiDAR-Inertial łączy skany laserowe z pomiarami inercyjnymi. Orientacja przewidywana przez IMU może ułatwiać dopasowanie kolejnych chmur punktów, a geometria otoczenia ogranicza dryft rozwiązania inercyjnego.
Badania nad VIO pokazują, że obrazy i pomiary IMU mogą być wspólnie wykorzystywane do estymacji ruchu czujnika oraz rekonstrukcji otoczenia. Dokładne znaczniki czasu i kalibracja transformacji kamera–IMU są w takich systemach warunkiem poprawnego działania.
IMU może również pomagać w kompensacji zniekształcenia skanu. Jeżeli robot porusza się podczas wykonywania pełnego obrotu LiDAR-u, poszczególne punkty powstają w różnych położeniach. Znając ruch czujnika w czasie, system może przeliczyć je do wspólnego momentu odniesienia.
Podobny problem występuje w kamerach z migawką kroczącą. Poszczególne wiersze obrazu mogą być rejestrowane w innych chwilach, dlatego szybki ruch powoduje deformację. Dane IMU mogą wspierać modelowanie tego ruchu, ale wymagają bardzo dokładnej synchronizacji.
IMU w manipulatorach, chwytakach i narzędziach robota
W klasycznym manipulatorze o nieruchomej podstawie główne położenie ramienia jest wyznaczane z enkoderów przegubów. IMU może jednak dostarczyć dodatkowej informacji o rzeczywistym ruchu narzędzia, drganiach elastycznej konstrukcji, uderzeniu albo kontakcie z obiektem.
Czujnik można umieścić w nadgarstku, chwytaku, narzędziu albo przenoszonym ładunku. Pozwala to obserwować ruch końcówki niezależnie od modelu kinematycznego i luzów występujących wcześniej w łańcuchu mechanicznym.
W ramieniu robota Spot zintegrowane czujniki chwytaka obejmują między innymi IMU, czujnik czasu przelotu i kamerę RGB. Producent wskazuje, że czujniki te wspierają kontrolę działania narzędzia.
IMU nie zastępuje czujnika siły i momentu. Rejestruje ruch będący skutkiem oddziaływania, ale nie mierzy bezpośrednio wartości siły kontaktu. Jej oszacowanie wymaga modelu masy, dynamiki i sposobu zamontowania czujnika.
W dynamicznej manipulacji charakterystyka sygnału IMU może również pomagać rozróżniać zamierzony kontakt od przypadkowej kolizji. Badania wykorzystują dane inercyjne między innymi do klasyfikacji zdarzeń kontaktowych w czasie rzeczywistym.
Wykrywanie kolizji, upadku i nietypowych zdarzeń
Gwałtowne zdarzenia pozostawiają charakterystyczny ślad w danych IMU. Uderzenie powoduje krótki impuls akcelerometru, obrót konstrukcji zmianę żyroskopu, a swobodny spadek chwilowe zmniejszenie długości wektora przyspieszenia właściwego.
Na podstawie pojedynczego progu trudno jednak jednoznacznie rozpoznać rodzaj zdarzenia. Silne hamowanie, podskok, uderzenie stopy o podłoże i kolizja mogą wytworzyć podobne wartości maksymalne. Skuteczny algorytm analizuje więc kilka cech oraz kontekst pracy robota
Próg powinien uwzględniać zakres normalnej pracy robota. W humanoidzie uderzenie stopy o podłoże jest elementem prawidłowego chodu, natomiast podobny impuls w nieruchomym manipulatorze może oznaczać kolizję.
Algorytm może analizować wartość maksymalną, czas trwania impulsu, energię sygnału, zmianę orientacji, widmo częstotliwości oraz zgodność z poleceniami sterowania. W systemach bardziej zaawansowanych klasyfikator może być uczony na zarejestrowanych przykładach zdarzeń.
Detekcja oparta wyłącznie na IMU nie powinna zastępować funkcji bezpieczeństwa wymaganych dla konkretnej maszyny. Może stanowić dodatkową warstwę diagnostyczną lub źródło informacji dla systemu sterowania.
IMU w robotach terenowych i systemach GNSS–inercyjnych
Robot pracujący na zewnątrz może łączyć IMU z GNSS, odometrią i czujnikami otoczenia. GNSS dostarcza globalnej pozycji, ale zwykle działa wolniej niż IMU i może okresowo tracić dokładność w pobliżu budynków, drzew, konstrukcji lub w tunelu.
IMU podtrzymuje płynną estymację ruchu pomiędzy kolejnymi aktualizacjami satelitarnymi. Pozwala również obserwować przechylenie pojazdu na zboczu, gwałtowne hamowanie, jazdę po nierównym podłożu i zmianę kierunku.
W ROS 2 węzeł navsat_transform_node może wykorzystywać odometrię, orientację pochodzącą z IMU oraz pozycję GNSS, aby utworzyć dane zgodne z układem świata robota.
System inercyjny nie powinien być traktowany jako nieograniczone zastępstwo dla GNSS. Podczas dłuższej utraty sygnału błędy prędkości i pozycji będą narastać, chyba że zostaną skorygowane przez odometrię, kamerę, LiDAR albo inne punkty odniesienia
Istotne jest również ustawienie anteny GNSS względem IMU. Jeżeli czujniki znajdują się w różnych miejscach, ruch obrotowy pojazdu powoduje inny ruch liniowy obu punktów. W systemach wymagających wysokiej dokładności należy uwzględnić to przesunięcie.
IMU w egzoszkieletach, rehabilitacji i teleoperacji
Niewielkie moduły IMU można umieszczać na kończynach człowieka, elementach egzoszkieletu albo urządzeniach sterujących robotem. Każdy czujnik mierzy orientację i ruch segmentu, na którym został zamocowany.
Kilka zsynchronizowanych modułów może opisywać ruch ramienia, tułowia, uda lub podudzia. Informacje te mogą służyć do sterowania robotem, analizy chodu, wspomagania rehabilitacji albo rejestrowania gestów.
W tego rodzaju systemach szczególnie ważna jest kalibracja położenia czujnika względem segmentu ciała. IMU może być poprawnie skalibrowane wewnętrznie, ale źle ustawione względem kości albo elementu egzoszkieletu.
Magnetometr może pomagać stabilizować yaw, lecz metalowa konstrukcja egzoszkieletu, silniki i przewody zasilające mogą powodować zakłócenia. W praktyce część systemów wykorzystuje przede wszystkim akcelerometr i żyroskop, uzupełniając je modelami biomechanicznymi lub zewnętrznym systemem odniesienia.
Kiedy warto stosować kilka modułów IMU?
Jedno IMU umieszczone w głównym korpusie opisuje ruch tego konkretnego punktu konstrukcji. Nie przedstawia bezpośrednio ruchu elastycznego ramienia, kończyny, chwytaka ani głowicy znajdującej się w innej części robota.
Kilka czujników pozwala obserwować ruch różnych segmentów i porównywać go z modelem kinematycznym. Może również zapewnić redundancję albo umożliwiać wykrywanie lokalnych drgań i kontaktu.
Dane z kilku IMU nie powinny być po prostu uśredniane bez uwzględnienia miejsca montażu. Podczas obrotu każdy punkt sztywnej bryły ma tę samą prędkość kątową, ale może doświadczać innego przyspieszenia liniowego zależnego od odległości od osi obrotu.
Każdy moduł wymaga osobnej kalibracji, transformacji i znacznika czasu. Należy również kontrolować, czy wszystkie urządzenia wykorzystują te same jednostki, konwencje osi i częstotliwości próbkowania.
Czego IMU nie potrafi określić samodzielnie?
Największa wartość IMU wynika z szybkości i ciągłości pomiarów. Czujnik działa również w ciemności, bez widocznych punktów otoczenia i bez sygnału satelitarnego. Nie zapewnia jednak samodzielnie stabilnego globalnego odniesienia.
Dlatego IMU jest najczęściej elementem większego systemu. Enkodery dostarczają informacji o napędach, kamera i LiDAR obserwują otoczenie, GNSS określa pozycję globalną, a czujniki kontaktu i siły opisują oddziaływanie robota z podłożem lub obiektem.
Odpowiednio połączone źródła pozwalają wykorzystać mocne strony IMU bez uzależniania całego systemu od jego narastającego dryftu.
Jak dobrać moduł IMU do robota?
Dobór modułu IMU powinien wynikać z dynamiki robota, środowiska pracy oraz wymaganej dokładności estymacji ruchu. Sama informacja, że czujnik jest 6-osiowy lub 9-osiowy, nie wystarcza do oceny jego przydatności.
Innych parametrów wymaga powoli poruszający się robot mobilny, innych dynamiczny robot czworonożny, a jeszcze innych system pomiarowy przeznaczony do precyzyjnej lokalizacji. Należy uwzględnić maksymalne przyspieszenia i prędkości kątowe, poziom drgań, pasmo ruchu, temperaturę, częstotliwość próbkowania oraz możliwość synchronizacji z pozostałymi czujnikami.
Do najważniejszych parametrów należą poziom szumu, stabilność i powtarzalność biasu, zakres pomiarowy oraz pasmo. Zbyt wąski zakres może powodować nasycenie podczas gwałtownego ruchu, natomiast niepotrzebnie szeroki zakres może zmniejszyć użyteczną rozdzielczość pomiaru.
Najważniejsze parametry modułu IMU
Parametry takie jak szum, pasmo, stabilność biasu i zakres pomiarowy są podawane również w dokumentacjach profesjonalnych modułów IMU oraz współczesnych czujników przeznaczonych do robotyki i zastosowań przemysłowych.
Pytania, które warto zadać przed wyborem IMU
Do podstawowej stabilizacji i wykrywania ruchu może wystarczyć niewielkie, dobrze zintegrowane IMU MEMS. W systemach wymagających precyzyjnej lokalizacji, niewielkiego dryftu lub pracy w trudnych warunkach większe znaczenie mają stabilność biasu, odporność na temperaturę i drgania oraz jakość kalibracji.
Nie należy wybierać czujnika wyłącznie na podstawie liczby bitów, maksymalnej częstotliwości próbkowania albo liczby osi. Dobre IMU to połączenie odpowiednich parametrów pomiarowych, poprawnego montażu, dokładnego czasu, kalibracji i właściwego algorytmu fuzji sensorów.
Najczęściej zadawane pytania o IMU w robotyce
Podsumowanie – dlaczego IMU jest tak ważne w robotyce?
IMU jest jednym z podstawowych układów pomiarowych współczesnego robota. Połączenie trójosiowego akcelerometru i trójosiowego żyroskopu pozwala szybko wykrywać przyspieszenia, przechylenia oraz obroty korpusu. W systemach 9-osiowych dodatkowy magnetometr może dostarczać odniesienia dla kierunku yaw, o ile warunki magnetyczne pozwalają uzyskać wiarygodny pomiar.
Sam moduł IMU nie mierzy bezpośrednio gotowej orientacji ani pozycji robota. Akcelerometr dostarcza składowe przyspieszenia właściwego, a żyroskop prędkości kątowe. Dopiero algorytm fuzji sensorów łączy te dane, ogranicza błędy poszczególnych czujników i wyznacza orientację, najczęściej zapisywaną w postaci kwaternionu.
Największą zaletą IMU jest szybkie i ciągłe dostarczanie informacji o ruchu niezależnie od oświetlenia, widoczności otoczenia oraz dostępności sygnału GNSS. Dzięki temu jednostki inercyjne wspierają utrzymywanie równowagi robotów humanoidalnych i czworonożnych, odometrię platform mobilnych, systemy Visual-Inertial i LiDAR-Inertial, wykrywanie kolizji, analizę drgań oraz kontrolę ruchu manipulatorów.
Jednocześnie wyniki IMU są obciążone szumem, offsetem, wpływem temperatury, drganiami i narastającym dryftem. Z tego powodu czujnik wymaga prawidłowego montażu, kalibracji, synchronizacji czasu i odpowiedniego filtrowania. W zadaniach wymagających stabilnej pozycji lub orientacji długoterminowej IMU powinno współpracować z enkoderami, kamerą, LiDAR-em, GNSS albo systemem lokalizacji względem mapy.
O jakości rozwiązania nie decyduje wyłącznie liczba osi. Równie istotne są stabilność biasu, poziom szumu, zakres pomiarowy, pasmo, opóźnienie, znaczniki czasu oraz poprawna integracja z oprogramowaniem robota. Dobrze dobrane i prawidłowo skonfigurowane IMU jest szybkim źródłem informacji o ruchu, na którym mogą opierać się systemy sterowania, lokalizacji i autonomii robota.
Najważniejsze wnioski
Więcej poradników dotyczących czujników, programowania, systemów autonomicznych i technologii wykorzystywanych w robotach znajdziesz w Akademii Robotyki LEDIO Robotics.
