Strona głównaArtykułyRobotyka i Kinematyka

FABRIK: Odwrotna Kinematyka Bez Macierzy

Odwrotne i do przodu oraz do tyłu ustawianie się kinematyki rozwiązuje problem, w którym należy określić, gdzie powinny znajdować się stawy ramienia robota, aby osiągnąć cel – wyłącznie geometrycznie, bez obliczania odwrotności macierzy i bez singularności.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Przód jest prosty, odwrotność to trudne

Przód kinematyka (FK) jest prosta: podane kąty stawów, oblicz położenie końcówki efektorowej przez sumowanie wektorów linków. Odwrotna kinematyka (IK) działa w drugą stronę – podane pożądane położenie, znajdź konfigurację stawów, która do niego dotrze – i jest to naprawdę trudne. Problem często jest niedeterministyczny (nieskończenie wiele prawidłowych konfiguracji kątów dla redundantnej łańcuch), czasem naddeterministyczny (położenie docelowe poza zasięgiem ramienia, nie istnieje rozwiązanie dokładne) i zawsze nieliniowy, ponieważ pozycje stawów obejmują sumy funkcji trygonometrycznych.

Algorytm FABRIK: Dwa przejścia, bez kątów

Proponowany przez Aristidou i Lasenby'ego w 2011 roku, algorytm FABRIK działa bezpośrednio z pozycjami stawów zamiast kątów. Każda iteracja przełącza się między przejściem do przodu, które ciągnie końcówkę w kierunku celu, a następnie przejściem wstecznym, które ponownie zakotwicza korzeń:

Przejście do przodu — ustaw p_n = cel, a następnie dla i od n-1 do 0: dir = (pᵢ − pᵢ₊₁) / |pᵢ − pᵢ₊₁|; pᵢ = pᵢ₊₁ + dir · ℓᵢ₊₁ Przejście wsteczne — ustaw p₀ = punkt kotwiczenia korzenia, a następnie dla i od 1 do n: dir = (pᵢ − pᵢ₋₁) / |pᵢ − pᵢ₋₁|; pᵢ = pᵢ₋₁ + dir · ℓᵢ Powtarzaj, aż |p_n − cel| Każde przejście stanowi pojedynczy przebieg wzdłuż łańcucha, odtwarzając długości połączeń — bez trygonometryki, bez odwrotności macierzy. Jeśli cel znajduje się poza zasięgiem całkowitej długości łańcucha, FABRIK pomija iterację i ustawia każdy łącznik prosto na cel, rozciągając ramę do maksymalnej wydłużonej długości.

Forward pass — set p_n = target, then for i = n-1 down to 0:
  dir = (pᵢ − pᵢ₊₁) / |pᵢ − pᵢ₊₁|;  pᵢ = pᵢ₊₁ + dir · ℓᵢ₊₁

Backward pass — set p₀ = root anchor, then for i = 1 to n:
  dir = (pᵢ − pᵢ₋₁) / |pᵢ − pᵢ₋₁|;  pᵢ = pᵢ₋₁ + dir · ℓᵢ

Repeat until |p_n − target| < tolerance (usually ~5-10 iterations)
demo na żywo · powiązana symulacja● LIVE

FABRIK kontra metody Jakobiego

Klasyczna alternatywa wykorzystuje macierz Jakobową J, która mapuje prędkość złączą na prędkość punktu końcowego, aktualizując ją poprzez Δθ = Jᵀ(JJᵀ + λ²I)⁻¹Δe (metoda najmniej kwadratowa tłumiona). Metody oparte na macierzy Jakobowej mogą minimalizować drugorzędne cele, takie jak unikanie przeszkód, za pomocą projekcji przestrzeni zerowej i często zbiegają się w mniejszej liczbie iteracji dla złożonych celów, ale wymagają O(n³) obliczeń liniowych na krok i mogą stać się niestabilne w pobliżu punktów singularnych. FABRIK, działający z O(n) iteracji bez inversion macierzy, jest dobrym wyborem dla aplikacji w czasie rzeczywistym – IK postaci do gry, ustawianie dłoni, retargeting motion-capture i sterowanie protezami, gdzie liczy się odporność na błędy bardziej niż ścisła optymalność. Ograniczenia kątów złączonych mogą być nadal stosowane poprzez ograniczanie wektora kierunku do dopuszczalnego zakresu podczas przejścia wstecznego.

Frequently asked questions

Co oznacza FABRIK i kto ją wynalazł?

FABRIK to Forward And Backward Reaching Inverse Kinematics, zaproponowane przez Andreas Aristidou i Joan Lasenby w 2011 roku. Rozwiązuje zadanie kinematyki odwrotnej poprzez bezpośrednie przesuwanie punktów połączeń zamiast rozwiązywania dla kątów stawów, alternując przejazd do przodu, który ciągnie łańcuch w kierunku celu, oraz przejazd wsteczny, który ponownie zakotwicza korzeń.

Dlaczego FABRIK jest szybszy niż kinematyka odwrotna oparta na Jacobianie?

Każda iteracja FABRIK ma złożoność O(n) w liczbie połączeń, ponieważ jedynie ponownie oblicza położenia w łańcuchu dwa razy. Metody pseudo-inwersji Jacobiana wymagają odwracania macierzy n x n na każdym kroku, co kosztuje O(n do trzeciej potęgi), a może prowadzić do niestabilności numerycznej w pobliżu singularności, których FABRIK po prostu nie napotyka.

Jak FABRIK radzi sobie z niemożliwym do osiągnięcia celem?

Jeśli odległość między celem a punktem przyczepienia do korzenia przekracza sumę długości wszystkich połączeń, FABRIK pomija iteracyjne przejazdy i zamiast tego kieruje każde połączenie bezpośrednio na cel prostą linią, rozciągając łańcuch do jego pełnej wydłużonej długości w kierunku celu – najlepsze możliwe przybliżenie, gdy nie istnieje rozwiązanie dokładne.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz the simulation i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację the simulation

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)