Moduł 23 · Badania: redundancja + planowanie

WP1 na prawdziwej Pandzie: foliacja (t, ψ) i pasywne wykonanie

Kamień milowy M2/M3 (dowód istnienia): ruchoma kula przelatuje przez przestrzeń roboczą — reaktywny null-space zostaje dogoniony, globalny plan na foliacji ruchu własnego przechodzi zawczasu; wykonanie pełnym pasywnym sterownikiem (bak ON) z certyfikowaną bramką V1–V6 i ablacjami. Po 3 rundach audytu.

TL;DR — z zabawki 2D na prawdziwego robota

Moduł 22 pokazał ideę na planarnej zabawce. Tutaj ta sama idea działa na pełnym modelu Pandy i przechodzi przez zwalidowany, pasywny sterownik momentowy (moduł 21, bak energii WŁĄCZONY): przez przestrzeń roboczą przelatuje kula (r = 4 cm, |v| = 7.7 cm/s); chwytak przez cały czas jedzie po okręgu z bramki KPI. Reaktywny null-space ucieka łokciem przed kulą i zostaje dogoniony (wirtualna kolizja); globalny plan na foliacji ruchu własnego przechodzi na drugą stronę zawczasu — i po wykonaniu w pełnej pętli MuJoCo nigdy nie dotyka kuli, a wszystkie bramki (śledzenie, prześwit, pasywność, jerk, limity) są zielone.

Uczciwy zakres. Scenariusz nagłówkowy jest wyszukany automatycznie pod topologię osaczenia (dowód istnienia) — ale sekcja 6 dodaje NIEFILTROWANĄ statystykę Monte-Carlo (N=200) i sweep horyzontu antycypacji. Przeszkoda jest wirtualnym więzem planowania (plant nie symuluje kontaktu — kontakt to WP4). Model M4: promienie kapsuł per-ogniwo (werdykt odporny na promień), siatka do pełnego zasięgu włókna (ψ∈±3.4) i horyzont TEXEC+lead. Kamień milowy przeszedł 5 rund niezależnego audytu (naukowe + dydaktyczne).

1) Mapa (t, ψ): „rozkład jazdy dla łokcia”

Zadanie chwytaka zabiera 6 z 7 stopni swobody — zostaje 1: ψ, pozycja łokcia wzdłuż włókna ruchu własnego (łuku postaw trzymających tę samą pozę narzędzia; zmierzony zasięg: otwarty łuk ±3.29 rad, ucięty limitami stawu 2). Ponieważ zadanie się rusza, włókna układają się w foliację — mapę o osiach czas × ψ. Ruchoma kula staje się na niej ukośnym pasmem, a planowanie redundancji sprowadza się do poprowadzenia linii przez białe pola:

M(t)={q:f(q)=xd(t)},TqM=null(J),ψ=arc length along M(t)\mathcal{M}(t) = \{\, q : f(q) = x_d(t) \,\},\qquad T_q\mathcal{M} = \mathrm{null}(J),\qquad \psi = \text{arc length along } \mathcal{M}(t)
Mapa planowania (t, psi)
Zajętość foliacji (89×69 do 22 s = T_EXEC+lead, pokrycie 96.6%): różowe pasmo = ruchoma kula, szare zęby = koniec włókna (limity stawów, margines 0.1 rad = KPI-4). POMARAŃCZOWY reaktywny ucieka przed pasmem i zostaje dogoniony w środku włókna (✕, t = 10.50 s) — pasmo przesuwa się szybciej niż limit prędkości postawy (0.4 rad/s, wymuszony przez rozdzielczość certyfikatu pasywności). NIEBIESKI plan (Dijkstra z limitem przyspieszenia i kosztem świadomym prześwitu) przechodzi dołem zawczasu — zanim kula dotrze. Mechanizm osaczenia jest klasyfikowany maszynowo z artefaktu (classify_cornering), nie interpretowany ręcznie.

2) Co ψ znaczy fizycznie: wachlarz postaw

Wachlarz postaw
Chwila wykonanej kolizji reaktywnego (t = 9.00 s), rzut Y–Z. Każde szare ramię to inna wartość ψ — inna postawa, która trzyma chwytak DOKŁADNIE w tym samym miejscu (zielony pierścień). Kula dosięga pomarańczowego ramienia (reaktywnego); niebieskie (plan) jest po drugiej stronie wachlarza. Planowanie redundancji = wybór, KTÓRE z tych ramion być w każdej chwili. (Rzut 2D — faktyczny kontakt liczony w 3D.)

3) Pojedynek w prawdziwym silniku

Oba przebiegi to WYKONANIE w pełnej pętli MuJoCo (sterownik momentowy z modułu 21, bak energii włączony) — nie animacja planu. Licznik u dołu = prześwit ramię–kula na żywo. „Lead 2 s” = plan podawany z 2-sekundowym wyprzedzeniem (kompensacja bezwładności sterownika — wyjaśnienie w §4). Po kolizji (8.89 s) prawy panel porusza się dalej kontynuacją „least-bad” — to utrzymanie symulacji, już nie polityka (przypis ¹ w §4).

Stop-klatki
Stop-klatka ~1.6 s po kolizji: plan (lewo) z wyraźnym odstępem od kuli; reaktywny (prawo) z kulą wbitą w ramię — wirtualna kolizja trwa od t = 8.89 s. Cienki czerwony obrys = pozycja kuli (zawsze widoczny, nawet gdy kula jest zasłonięta ogniwem).

4) Bramka wykonania V1–V6 + ablacje (uczciwość leadu; V5 = bak, patrz przypis pod tabelą)

Odkrycie po drodze: impedancja null-space ma stałą czasową τDns/Kns=2s\tau \approx D_{ns}/K_{ns} = 2\,\text{s} — wykonana postawa wlecze się za planem. Kompensacja jest wyłącznie po stronie planera: lead qset(t)=plan(t+2s)q_{set}(t) = \text{plan}(t + 2\,\text{s}) (z liniowym rozbiegiem 3 s). Lead dostaje tylko plan — bo tylko planowanie zna własną przyszłość — a ablacje rozstrzygają, że to uczciwe:

Prześwit w wykonaniu
Prześwit w wykonaniu (pełna pętla, 20 s): PLAN nigdy nie dotyka kuli — min +4.48 cm, CERTYFIKOWANE pełną rozdzielczością 1 kHz (skan zgrubny mógłby przegapić minimum; audyt figur wykrył i naprawił też ZAWYŻONY (spóźniony) czas onsetu kolizji). REAKTYWNY przecina zero przy t = 8.89 s — WCZEŚNIEJ niż osaczenie na mapie (10.50 s), bo mapa liczy siatkowo, a wykonane ramię ma grubość kapsuł i lag: fizyczny kontakt wyprzedza planistyczne „nie ma już ruchu”.
przebiegV1 e_p (≤1.5 mm)V2 prześwit (>0, cert.)V3 P_gen (≤0.1 W)V4 jerk (≤100 Nm/s)V6 d_lim (≥0.1 rad)werdykt
PLAN + lead 2 s0.09 µm+4.48 cm0.089 W29.90.243 radALL PASS
ablacja: plan bez leadu0.07 µm−1.05 cm @ 4.95 s0.062 W20.90.716 radFAIL V2
reaktywny (greedy, bez leadu)0.07 µm−10.03 cm @ 8.89 s0.062 W27.10.542 radFAIL V2
ablacja: reaktywny + lead0.08 µm−10.35 cm @ 9.15 s0.082 W27.8¹0.414¹ radFAIL V2

¹ wiersz z artefaktami kontynuacji least-bad po osaczeniu (werdykt V2 jest na nią odporny). Metryki polityk liczone do momentu kolizji; czasy = PIERWSZE przecięcie zera (certyfikat 1 kHz). Bak: T∈[4.86, 20] J, γ≡1 — zawór nie interweniował. Wszystkie liczby z bloku maszynowego results/wp1_m3_results.md (model M4).

Wnioski z ablacji: lead jest konieczny (bez niego plan pada) i nie ratuje reaktywnego — z leadem koliduje nawet GŁĘBIEJ (−10.35 vs −10.03 cm): brakuje mu antycypacji, nie kompensacji lagu. Wszystkie wiersze trzymają zdrowe marginesy limitów (V6 ≥ 0.24 rad).

Odporność werdyktu na promień (naprawione w M4): model kolizji używa teraz konserwatywnych promieni kapsuł PER-OGNIWO (SEG_R ≤ 0.09 m). Sonda: napompowanie WSZYSTKICH promieni o +1 cm daje margines +3.48 cm, o +2 cm — +2.48 cm: ALL PASS nie flipuje w zakresie niepewności promienia. (Poprzedni model jednorodny 0.07 flipował przy 0.09 — sonda audytu z rev. C; naprawa = M4.)

5) Cztery odkrycia po drodze (skrót research_log §9)

  • Statyczne włókno jest planistycznie trywialne. Otwarty łuk ±3.29 rad — zablokowany odcinek nie ma objazdu. Nietrywialny problem żyje dopiero na foliacji (t, ψ).
  • Statyczne przeszkody nie osaczają. Zadanie jest okresowe, a łokieć w ψ=0 przemieszcza się w czasie o 8.9 cm — zajętość jest ~pozioma. Antycypację wymusza dopiero ruchoma przeszkoda.
  • Lag wykonawcy to więz planowania. τ ≈ 2 s → lead po stronie planera (kontrakt sterownika nietknięty).
  • Rozdzielczość certyfikatu pasywności ogranicza tempo planu. Residuum pomiaru P_gen rośnie ze strumieniami elastycznymi (lag×prędkość): przy 0.8 rad/s przebijało podłogę 0.1 W → slew 0.4 rad/s + limit przyspieszenia. Zawór baku nie interweniował (γ≡1) — reżim faktycznie ograniczony bakiem to pomost do WP3.
  • Klasa scen wymaga niemal pełnej antycypacji (M4). Baseline z horyzontem H (ta sama Dijkstra, tylko obcięty podgląd przyszłości) przeżywa 17→52% dla H = 0.5→8 s, wobec 83% pełnego planera — nawet 8 s podglądu (40% przebiegu) odzyskuje ledwie połowę scen. Sekcja 6.

Reprodukcja: python plan_selfmotion.py && python execute_plan.py && python mc_selfmotion.py (deterministyczne; artefakty i bloki maszynowe w results/ projektu Franka). Pełna narracja: research_log.md §9 (rev. E) + §10 (M4), formalny plan badań: PROPOZYCJA_BADAWCZA.md (w projekcie platformy planowania).

6) M4: statystyka niefiltrowana i horyzont antycypacji

Dowód istnienia (sekcje 1–5) odpowiada na pytanie „czy takie sceny istnieją”. M4 odpowiada na „jak często” i „ile trzeba widzieć naprzód”: N = 200 scenariuszy przelatującej kuli z zadeklarowanego rozkładu, bez filtrowania pod wynik (t_hit, strona, punkt wejścia, prędkość, promień — wszystkie losowe; seed 42, deterministyczne; nieważne losowania raportowane: 22 „task-blocked”, 0 „start-blocked”, V = 178 ważnych).

M4: przeżywalność i marginesy
LEWO: przeżywalność wg polityki. REAKTYWNY (greedy) 25%. Baseline receding-horizon — TA SAMA Dijkstra (koszt, slew, limit przyspieszenia), różni się TYLKO długością podglądu przyszłości H — daje schody 17→31→39→45→52% dla H=0.5→8 s. Pełny planer: 83% (plan-only 104/178; greedy-only 0 — ścisła dominacja; 30 scen globalnie niemożliwych). PRAWO: histogram marginesów planu (p50=1.8 cm) — wykonana podpróbka 7/8 z certyfikowanym prześwitem > 0; jedyna porażka zamyka się na −0.1 cm (cienki margines planu przegrywa z lagiem wykonania — mechanizm z §4). Wniosek produkcyjny: bramkuj margines ≥ 4.5 cm (jak w scenariuszu nagłówkowym).

Dwa wnioski naukowe: (a) przewaga planera nie jest artefaktem doboru sceny — na niefiltrowanym rozkładzie plan dominuje ściśle (nie ma sceny, gdzie reaktywny przeżywa, a plan nie); (b) krzywa H jest ilościową wersją tezy WP1: reaktywność to H→0, a nawet H = 8 s nie wystarcza — stąd WP3 (predykcyjna redundancja z budżetem baku) ma mierzalny cel: domknąć lukę 52% → 83% przy ograniczonym horyzoncie i budżecie. Ciekawostka uczciwości: greedy (25%) bije RH-0.5 s (17%) — ultra-krótka Dijkstra minimalizuje ruch w 2-krokowym oknie i reaguje później niż zachłanna maksymalizacja prześwitu.

Ściąga

  • Foliacja: M(t)={q:f(q)=xd(t)}\mathcal{M}(t)=\{q: f(q)=x_d(t)\}; ψ = długość łuku wzdłuż włókna; planowanie na pasie (t, ψ).
  • Planer: Dijkstra na (t, ψ, Δψ): koszt Δψ+400max(0,0.10clr)2\sum |\Delta\psi| + 400\,\max(0, 0.10 - \mathrm{clr})^2, slew 0.4 rad/s, |ΔΔψ|≤1.
  • Wykonanie: qset(t)=plan(t+2s)q_{set}(t) = \text{plan}(t+2\,\text{s}) (lead = τ impedancji), spline C², bak ON.
  • Bramka (model M4): V1 0.09 µm · V2 +4.48 cm (cert. 1 kHz; odporny na +2 cm promienia) · V3 0.089 W · V4 29.9 Nm/s · V6 0.243 rad — ALL PASS; reaktywny: kolizja @ 8.89 s.
  • M4 (dostarczone): MC N=200 bez filtrowania → plan 83% vs greedy 25% (dominacja ścisła); RH-sweep 17→52% (H=0.5→8 s) — klasa scen wymaga niemal pełnej antycypacji; promienie per-ogniwo, siatka T_EXEC+lead, ψ∈±3.4. Otwarte → WP3/WP4: pełne wykonane MC, kontakt, budżet baku.