Jak uczymy robota ruchu z nagrania: od filmu do kopnięcia w symulacji
Żeby humanoid powtórzył ruch z filmu, nagranie przechodzi u nas przez trzy kroki. Najpierw odtwarzamy człowieka w 3D. Potem przenosimy jego ruch na ciało robota, czyli robimy retargeting. Na końcu douczamy kontroler robota w symulacji i sprawdzamy, czy wykonuje ten ruch. Na moim przykładzie, rzucie wolnym, robot w symulacji na początku września w miarę powtarzał ruch nabiegu i kopnięcia, a ocenę dokładności przeszedł w trzech przebiegach na dziesięć. Piłki w tej symulacji nie ma, a robot jeszcze się chybotał.
W podcaście „I to się liczy” rozmawialiśmy z Adrianem Andrzejczykiem o agentach, które same stawiają hipotezy i je sprawdzają. Stamtąd przeszedłem do robotów. Opowiedziałem o oprogramowaniu, które robię: ma tłumaczyć wideo na umiejętność robota.
Całą rozmowę znajdziesz na YouTube. Ten fragment zaczyna się w 40:34, a do szczegółów wróciliśmy po 50. minucie.
To szósty tekst z tej rozmowy. Tutaj rozpisuję ten proces krok po kroku i piszę, na czym stanęliśmy na początku września.
Cel: dowolne wideo na wejściu, plik dla robota na wyjściu
Pomysł jest taki: bierzesz dowolne wideo z YouTube'a, wrzucasz je do systemu i na koniec dostajesz plik, który możesz wgrać na robota. To jest cel, docelowo. Na początku września to jeszcze tak nie działało.
Jako przykład wziąłem nagranie Messiego z treningu reprezentacji Argentyny, rzut wolny. Chciałem, żeby robot potrafił wykonać taki ruch: nabieg na piłkę, kopnięcie i tak dalej. Samego nagrania tu nie pokazuję, bo to cudzy materiał. Pokazuję to, co z niego powstaje.
Po co to wszystko? Robot ma mieć wgrane ruchy, które się tylko odpala. Złożonego ruchu, jak salto, nie ułożysz ręcznie, silnik po silniku, bo robot się wywali. Jak steruje się robotem: joystickiem, z aplikacji na telefonie albo programistycznie, aż do pojedynczych silników, opisałem przy robopsie.
Krok 1: człowiek w 3D
Masz film, na którym zawodnik biegnie po boisku, i chcesz, żeby robot robił dokładnie to samo. Najpierw musisz zmapować człowieka. Łapiesz wszystkie jego stawy i kończyny i robisz z tego model 3D.
U nas robi to GEM-X od NVIDIA. Odtwarza ruch człowieka w 3D z nagrania z jednej kamery, na szkielecie SOMA. Do szybkiego, wstępnego sprawdzenia nagrania służy nam MediaPipe od Google, który śledzi 33 punkty ciała.
Na początku września braliśmy z nagrania rzutu wolnego ruch rąk, nóg i tułowia. Drogi, którą zawodnik przebiega po boisku, jeszcze z niego nie odtwarzaliśmy. Dlatego człowiek w lewym panelu porusza się w miejscu.
Krok 2: retargeting, bo robot ma inne stawy
Teraz tak zwany retargeting. Model 3D człowieka trzeba przetłumaczyć na model 3D robota. Robot ma inne stawy i zginają się one inaczej. Nie da się tego przełożyć 1 do 1, bo wtedy robot nie wykona tej samej czynności. Trzeba odwzorować ruch człowieka w ruchu robota.
Do tego roboty różnią się między sobą. Mają różną liczbę punktów, które się zginają, i inne kąty. Mamy dwa humanoidy: Unitree G1 i EngineAI T800. Według producentów G1 ma 132 cm wzrostu, a T800 173 cm. Ten sam ruch człowieka trzeba więc przełożyć na każdego z nich osobno.
Kopnięcie z nagrania przenosimy na G1 w konfiguracji z 29 stopniami swobody. Używamy do tego otwartej biblioteki GMR (General Motion Retargeting). Przenosi ona ruch człowieka na kilkanaście modeli humanoidów, w tym na G1.
To robię na co dzień: doradzam przy strategii AI i buduję agentów, którzy przeżywają demo.
Krok 3: gotowy kontroler i douczanie w symulacji
Dopiero potem przychodzi seria symulacji. Robot nie musi uczyć się stać od nowa. Są modele bazowe, otwarte i zamknięte, i na nich się nadbudowuje. Jak wygląda trening od zera, w którym tysiące robotów bujają się, aż im się uda, pisałem przy okazji humanoidów. Liczby z rzutu wolnego, które pokazuję niżej, nie pochodzą z treningu od zera.
Naszą bazą jest SONIC od NVIDIA. To model, który daje humanoidowi podstawowy zestaw umiejętności ruchowych, wyuczonych na dużym zbiorze danych o ruchu ludzi. Pod rzut wolny douczamy tylko jego niewielką część. Wynik puszczamy w symulatorze fizyki MuJoCo. Sam fakt, że robot się nie przewrócił, jeszcze nic nie znaczy. Liczy się, czy powtórzył ruch.
Każdą wersję sprawdzamy w dziesięciu przebiegach, za każdym razem z innym ziarnem losowości. Progi dokładności są te same przed douczaniem i po nim. Ta sama zasada działa przy agentach: miarę zamraża się przed pierwszą próbą, a zostają tylko poprawki, które wypadają na niej lepiej.
The Agentic Architect
Praktyczne wzorce, case studies, rozbiory projektów agentowych i nowinki o AI. Zero spamu, raz w tygodniu.
Dostaniesz jednego maila z prośbą o potwierdzenie. Wypiszesz się jednym kliknięciem. Polityka prywatności
Na czym stanęliśmy na początku września
Robot odtwarzał ruch, w miarę biegł, ale jeszcze trochę się chybotał. Na samym retargetingu biegł dobrze. W symulacji jeszcze czasem się wywalał albo kopnięcie nie było pełne, zależnie od próbki, na której się uczył.
W liczbach z 6 września: gotowy kontroler bez douczania nie przeszedł oceny dokładności w żadnym z dziesięciu przebiegów. Po douczeniu przeszedł w trzech, a w pozostałych siedmiu błędy dotyczyły głównie amplitudy przechyłu lewego barku. W obu wersjach wszystkie dziesięć przebiegów doszło do końca klipu, ale nie zawsze tak było: wcześniejsza douczona wersja doszła do końca tylko w czterech przebiegach na dziesięć.
Rzut wolny w symulacji, 10 przebiegów
Ile przebiegów przeszło ocenę dokładności (stan z 6 września 2026)
Pełny kwadrat: przebieg przeszedł ocenę dokładności. W obu wersjach wszystkie dziesięć przebiegów doszło do końca klipu. Robot Unitree G1 w symulatorze MuJoCo, bez piłki.
Jeden prosty ruch w miejscu, stanie z ruchami rąk, G1 wykonywał w symulacji w dziesięciu przebiegach na dziesięć. Ten ruch miał jednak własny kontroler, wytrenowany osobno pod niego, a nie zbudowany na SONIC. Ruchy dynamiczne, takie jak kopnięcie, nie spełniały jeszcze tych samych kryteriów. Na rzucie wolnym dopracowywaliśmy cały proces, więc trzy na dziesięć nie mówi, jak system poradzi sobie z nowym nagraniem. Na dwóch nowych, publicznych nagraniach nie dostaliśmy jeszcze ani jednego ruchu, który przeszedłby ocenę.
Jest jeszcze piłka. Robot w miarę powtarzał ruch zawodnika, ale piłki w tej symulacji nie ma. Żeby naprawdę ją kopnął, potrzebne jest osobne zadanie, w którym symulacja wie, gdzie jest piłka.
Wszystko, co tu pokazuję, dzieje się w symulacji. To, czego robot się w niej nauczy, działa w świecie cyfrowym. Potem trzeba to jeszcze wgrać w robota i zobaczyć, czy w świecie fizycznym wykona się tak samo. Często się okazuje, że trzeba tam jeszcze dużo poprawek.
ŹRÓDŁA
- I to się liczy: rozmowa z Szymonem Paluchem (YouTube, premiera 1.10.2026)
- GEM-X: repozytorium NVlabs/GEM-X na GitHubie
- MediaPipe Pose Landmarker: dokumentacja Google
- GMR: General Motion Retargeting, repozytorium na GitHubie
- GEAR-SONIC: repozytorium NVlabs/GR00T-WholeBodyControl na GitHubie
- MuJoCo: strona projektu
- Unitree G1: strona producenta
- EngineAI T800: strona producenta