Rozwiązywanie redundancji (7 DOF Pandy)
Pseudoinverse, DLS, null-space projection, task priority (Siciliano-Slotine), HQP/iHQP, kryteria w null space, whole-body control.
TL;DR
Panda ma 7 stopni swobody (DOF), ale zadanie (pose narzędzia ) ma 6 wymiarów. Mamy zatem jeden wymiar redundancji — nieskończoność konfiguracji realizuje tę samą pozę TCP, tworząc 1-wymiarowy null-space manifold w .
Ten moduł odpowiada na pytanie: jak wykorzystać tę dodatkową swobodę?
- Pseudo-odwrotność Moore-Penrose'a + damped least squares (DLS) — stabilna inwersja .
- Null-space projection — kanoniczny mechanizm wykonywania drugorzędnych zadań bez zaburzania TCP.
- Task priority(Siciliano & Slotine) — wiele zadań w hierarchii, każde realizowane w null-space wcześniejszych.
- HQP (Hierarchical Quadratic Programming) — rozszerzenie task priority na ograniczenia nierównościowe.
- Kryteria w null-space: maksymalizuj manipulowalność, odsuwaj się od limitów joints, omijaj przeszkody — wszystko bez zaburzenia TCP.
- Whole-body control (TSID, OpenSoT) — uogólnienie dla mobilnych manipulatorów i humanoidów (z floating base).
Pseudo-odwrotność i DLS
Jakobian Pandy: . „Fat matrix" — więcej kolumn niż wierszy. Standardowe równanie ma nieskończenie wiele rozwiązań dla przy zadanym .
Moore-Penrose pseudo-inverse
Wybiera rozwiązanie o minimalnej normie:
Spełnia . Czyli z wszystkich możliwych , wybiera „najleniwszy" (energii kinetycznej minimum, jeśli jest unweighted).
Damped Least Squares (DLS)
W pobliżu singularności , więc klasyczna pseudo-inverse wybucha — małe odchylenie wymaga olbrzymich . Fix regularization (Levenberg-Marquardt):
Parametr :
- Daleko od singularności (): — bezpieczne tracking.
- Blisko singularności: ogranicza wzmocnienie, kosztem małego tracking error .
Typowo . Adaptive damping: rośnie gdy maleje (Nakamura & Hanafusa 1986, Maciejewski & Klein 1985).
Weighted pseudo-inverse
Z wagą (np. macierz mas):
Minimalizuje . Z masą daje minimum energii kinetycznej. Z — preferuje ruch w lekkich/szybkich joints.
Projekcja w przestrzeń zerową (null-space)
Kluczowa formuła sterowania redundancją:
Niech . jest projektorem ortogonalnym na null-space jakobianu. Dla każdego , nie zaburza TCP:
Co to znaczy intuicyjnie? to „idealna" prędkość joints, jaką byśmy chcieli osiągnąć. Projekcja wyrzuca z niej składową, która zaburzyłaby pose TCP — zostawia tylko czystą zmianę konfiguracji bez wpływu na narzędzie.
Dla Pandy 7-DOF: (typowo). Czyli null-space to jednowymiarowa krzywa w — można poruszać się wzdłuż niej zachowując pose. Klasyczna wizualizacja: „elbow swing" — trzymając chwytak w miejscu, oscylujemy łokciem.
„Trzymaj TCP, bujaj łokciem" — null-space motion
Co się dzieje pod maską
Demo precomputuje gdzie wybierasz z dropdownu (np. — preferencja joint 4). Wynik jednostkowy to kierunek elbow swing. Animacja:
To nie jest pełne rozwiązanie redundancji (które byłoby prawdziwym całkowaniem z tracking primary task). Pełne rozwiązanie wymaga drobnego kroku ODE + ciągłej korekcji TCP error. Dla amp < 0.5 rad błąd TCP pozostaje rzędu mm — wystarczająco dla wizualnej demonstracji.
Hierarchia zadań (task priority)
Siciliano & Slotine 1991 uogólnienie null-space na wiele zadań w hierarchii. Niech:
- Zadanie 1 (priorytet wyższy): , np. śledzenie TCP.
- Zadanie 2 (niższy priorytet): , np. śledzenie pose łokcia.
Rozwiązanie kaskadowe:
gdzie — projekcja na null-space zadania 1.
Augmented Jacobian — alternatywne sformułowanie: układamy zadania w jedną macierz , rozwiązujemy jako jeden problem. Prostsze implementacyjnie, ale gubi informację o hierarchii (zadania mieszają się jeśli niespójne).
HQP — Hierarchical Quadratic Programming
Task priority (Siciliano) działa dla równań równościowych (). W praktyce mamy też nierówności: joint limits, momenty napędowe ≤ , brak kolizji.
HQP(Kanoun & Lamiraux 2009, Escande 2014):
- Rozwiąż QP dla zadania 1 — minimalizuj z ograniczeniami nierównościowymi.
- Znajdź zbiór wszystkich optymalnych dla zadania 1 — to polytope w 7D.
- Rozwiąż zadanie 2 wewnątrz tego polytopu.
- I tak dalej dla kolejnych priorytetów.
Praktycznie implementuje się przez active set method lub cascaded QPs z propagacją Lagrange multipliers. Czas: ~5 ms dla 7-DOF z 3 zadaniami.
iHQP (Escande, Mansard, Wieber 2014) — Inverse HQP z optymalną złożonością. Standard w stack-of-tasks library.
Typowe kryteria w null-space
Wybór = gradient miary → null-space motion maksymalizuje bez wpływu na TCP:
Popularne :
- Manipulowalność Yoshikawy (moduł 02). Trzymaj się z dala od singularności.
- Margines joint limits: . Maks. (=0) w środku każdego zakresu. Gradient wypycha od limitów.
- Distance to obstacles: gdzie to SDF do i-tej przeszkody (moduł 03).
- Distance to singularities: gradient manipulowalności .
- Kinetic energy: — preferuje ruch w lekkich joints.
- Posture cost: — trzymaj się blisko ustalonej „naturalnej" pozy (przydatne dla human-robot interaction).
Kombinacja: z wagami . Wszystkie razem rzutowane w null-space.
Demo: trzy kryteria z osobnymi wagami
Implementacja dokładnie tej formuły: z trzema kryteriami:
- — manipulowalność Yoshikawy (gradient liczony różnicami skończonymi);
- — margines joint limits;
- — posture cost.
Przy każdej zmianie suwaka uruchamiamy krótki gradient-descent w null-space (80 kroków, s) od z ustalonym TCP target = . Primary task (TCP error → 0) realizuje proporcjonalny regulator , secondary direction = ważona suma gradientów.
Multi-task w null space — TCP fixed, secondary z wagami
Co obserwować
Mimo zmian wielkością rzędu 1 rad, błąd TCP utrzymuje się < 1 mm — primary task dominuje, a secondary kryteria robią użytek wyłącznie ze stopni swobody w null-space. To esencja redundancji: dodatkowe DOF służą realizacji kryteriów, które bez redundancji wymagałyby zmiany pozy TCP — sprzeczność z primary task.
Limitacja implementacji: każdy gradient wchodzi do null-space z osobnym mnożnikiem i wagą użytkownika. W produkcji (np. TSID) używałbyś task priority lub HQP — gwarantuje, że secondary nigdy nie naruszy primary nawet przy źle skalowanych wagach. Tu polegamy na dominacji nad mnożnikiem secondary.
Whole-body control: TSID, OpenSoT
Manipulator stacjonarny (Panda na biurku) ma jedno zadanie redundancyjne — null-space motion. Ale dla humanoidów (z floating base, kontaktem nóg, dwóch ramion, głowy) liczba zadań jest większa, a wymiar problemu eksploduje (do 50+ DOF).
Frameworki:
- TSID (Task Space Inverse Dynamics, LAAS/CNRS) — C++ implementacja whole-body control via QP, używane na HRP-2, TALOS, Pyrene. stack-of-tasks/tsid
- OpenSoT (IIT) — modularna biblioteka stosu zadań z HQP solver. Używana na COMAN+, Centauro.
- Drake/TaskSpaceController — Robot Locomotion Group (MIT), używane na Boston Dynamics Atlas (DARPA Robotics Challenge).
- Pinocchio + custom QP — najczęstszy stack badawczy (Python).
Wspólna idea: stack of tasks — lista zadań z priorytetami, każde implementowane jako równość lub nierówność, QP solver znajdzie optymalne lub (jeśli pracujemy w torque control z dynamiką).
Redundancja w MPC i trajopt
W modułach 07 (trajopt) i 10 (MPC) redundancja pojawia się jako koszt w null space:
Solver NLP wykorzystuje redundancję w trakcie optymalizacji — wybiera trajektorię, która dobrze realizuje primary task ORAZ optymalizuje secondary. Brak jawnego podziału na priority (jak w HQP), ale z odpowiednimi wagami konwergencja zbliżona.
Przykład w CHOMP: dodaj człon (maksymalizuj manipulowalność wzdłuż trajektorii). Solver będzie preferował trajektorie omijające singularności — efekt podobny do null-space optimization, ale w sformułowaniu trajopt.
Ściąga
Damped pseudo-inverse
. Adaptive: rośnie blisko singularności.
Null-space projection (kanoniczna formuła)
— projektor w null-space. Dla Pandy 7-DOF .
Task priority (Siciliano)
Kaskada przez null-space wcześniejszych zadań. Ostatnie zadanie dostaje co zostało po wcześniejszych.
HQP
Rozwiąż QP wewnątrz polytopu optymalnych dla wyższych priorytetów. Obsługuje nierówności (joint limits, momenty).
Najpopularniejsze w null-space
- Manipulowalność Yoshikawy (moduł 02)
- Margines joint limits
- Distance to obstacles (SDF, moduł 03)
- Posture cost (trzymaj się )
Referencje
- Liegeois, „Automatic Supervisory Control of the Configuration and Behavior of Multibody Mechanisms" (IEEE SMC 1977) — oryginalna idea null-space optimization.
- Nakamura & Hanafusa, „Inverse Kinematic Solutions With Singularity Robustness for Robot Manipulator Control" (ASME J. Dyn. Sys. 1986) — DLS.
- Maciejewski & Klein, „Obstacle Avoidance for Kinematically Redundant Manipulators in Dynamically Varying Environments" (IJRR 1985).
- Siciliano & Slotine, „A general framework for managing multiple tasks in highly redundant robotic systems" (ICAR 1991) — task priority.
- Kanoun, Lamiraux & Wieber, „Kinematic control of redundant manipulators: Generalizing the task-priority framework to inequality task" (IEEE TRO 2011) — HQP.
- Escande, Mansard & Wieber, „Hierarchical quadratic programming: Fast online humanoid-robot motion generation" (IJRR 2014) — iHQP.
- Yoshikawa, „Manipulability of Robotic Mechanisms" (IJRR 1985) — wskaźnik manipulowalności.
- TSID (LAAS/CNRS): stack-of-tasks/tsid.
- OpenSoT (IIT): ADVRHumanoids/OpenSoT.