Robot, który próbował oszukiwać: inżynieria nagrody i 95% w symulacji
TL;DR
Zbudowaliśmy pełne środowisko RL dla ramienia SO-101 w IsaacLab: 5 klas konfiguracyjnych, ukształtowaną funkcję nagrody i pętlę treningową Soft Actor-Critic. Agent trenował przez 70 000 kroków na danych numerycznych i osiągnął 95% skuteczności w zadaniu pick-and-place. Po drodze znaleźliśmy dwa exploity, które robot sam sobie odkrył.
Od stabilnej symulacji do środowiska uczącego
Tydzień 1 dał nam fizycznie dokładny model: skalibrowane serwomechanizmy, dobrane parametry regulatora PD i środowisko IsaacLab wiernie odwzorowujące ruch rzeczywistego ramienia. To solidna baza, ale model, który tylko naśladuje ruchy, nie potrafi ich doskonalić. Żeby trenować metodą uczenia przez wzmocnienie, musieliśmy przekształcić symulację w dynamiczne środowisko treningowe: takie, w którym robot może popełniać błędy, otrzymywać informację zwrotną i stopniowo uczyć się, jak wygląda poprawne podniesienie i przełożenie piłki.
To wymagało zdefiniowania reguł gry, zanim jakikolwiek trening mógł się rozpocząć.
Pięć klas, jedna pętla treningowa
Uczenie przez wzmocnienie (RL): metoda trenowania, w której agent uczy się, wykonując akcje w środowisku, otrzymując sygnał nagrody i stopniowo modyfikując swoje zachowanie tak, żeby maksymalizować skumulowaną nagrodę.
Środowisko RL w IsaacLab buduje się z pięciu klas konfiguracyjnych, z których każda odpowiada na inne pytanie o mechanizm uczenia.
ActionsCfg określa, co agent może kontrolować. Używamy 6-elementowego wektora delt przegubowych: po jednym na każdy przegub ramienia, aplikowanym w każdym kroku symulacji.
ObservationsCfg określa, co agent postrzega. Na tym etapie ma dostęp do pozycji, prędkości i obciążeń przegubów oraz pozycji 3D piłki i miski. Obserwacje z kamer (over_rgb i ego_rgb) są zarejestrowane, ale nieaktywne: czekają na etap treningu wizyjnego w przyszłym tygodniu.
EventCfg zarządza randomizacją środowiska. Między epizodami losowo zmieniają się kolory obiektów, ich pozycje, tarcia powierzchni i wzmocnienia serwomechanizmów. Bez tego agent zapamiętałby jedną konkretną scenę. Z randomizacją musi nauczyć się generalizować, co jest warunkiem wstępnym skutecznego przejścia do realnego robota.
TerminationsCfg wyznacza granice epizodu: reset następuje po upływie limitu czasu lub gdy obiekt spada ze stołu.
RewardsCfg to najważniejsza klasa: definiuje to, co agent próbuje maksymalizować.

Wszystkie piec klas zbiera się w jedną klasę nadrzedną ManagerBasedRLEnvCfg, która ustawia krok symulacji i jej dokładność. Ta konfiguracja trafia do wrappera IsaacLab Gymnasium, który daje pętli treningowej Soft Actor-Critic standardowy interfejs do interakcji ze środowiskiem.

Robot znalazł exploity, zanim my znaleźliśmy właściwą nagrodę
Soft Actor-Critic (SAC): off-policy’owy algorytm RL, który trenuje agenta tak, żeby maksymalizował nagrodę i jednocześnie zachowywał różnorodność eksploracji, dodając człon entropii do funkcji celu, co sprawia, że dobrze nadaje się do sterowania ciągłego.
Nagroda w każdym kroku czasowym wyliczana jest według wzoru:
Rt = Dt * (REWARDS - PENALTIES) REWARDS = w1*r_approach + w2*r_hold + w3*r_height + w4*r_bowl + w5*r_success PENALTIES = w6*r_arm_jerk + w7*r_gripper_jerk + w8*r_joint_speed
Każdy składnik nagrody odpowiada jednemu etapowi zadania: podjazd do piłki, stabilne chwycenie, uniesienie na wysokość, pozycjonowanie nad miska i finalne upuszczenie z bonusem terminalnym. Kary kształtują jakość ruchu: zniechęca do szarpanych ruchów, nadmiernej siły chwytu i niepotrzebnego przyspieszania.
Na papierze wygląda to sensownie. W praktyce agent czyta wzór matematyczny dokładnie tak, jak jest napisany, i szybko znalazł dwie luki.
Pierwszy exploit: gdy dodaliśmy nagrodę z czujnika kontaktowego, żeby zachęcić agenta do chwytania piłki, robot odkrył, że może oprzeć się o blat stołu z maksymalna siła jaka dysponuje. Czujniki efektora zarejestrowały kontakt, agent zebrał dużą nagrodę, a piłka pozostała nietknięta.
Drugi exploit: przy źle dobranych wagach robot nauczył się wbijać efektorem w piłkę z dużą prędkością. Powodowało to błąd silnika fizyki: piłka przenikała przez szczęki chwytaka. Agent dostawał nagrodę za chwyt, który na prawdziwym ramieniu w ogóle by nie zadziałał.
Dlaczego to ważne: Każdy exploit, który agent znajdzie, to precyzyjna informacja o tym, gdzie funkcja nagrody rozchodzi się z rzeczywistym celem. Robot nie zachowuje się złośliwie: robi dokładnie to, co mu kazaliśmy. Zamknięcie każdej luki to proces budowania funkcji nagrody, która faktycznie działa.
Naprawienie obu przypadków wymagało dodania kolejnych kar i zaostrzenia progów kontaktowych. Ta faza inżynierii nagrody zajęła więcej czasu niż cały setup architektoniczny. Była też najbardziej pouczającą częścią tygodnia.
95% i gotowość do treningu wizyjnego
Po kilku iteracjach inżynierii nagrody agent zbiegł po 70 000 krokach. Ewaluacja na 10 epizodach dała następujące wyniki:
| Metryka | Wynik |
|---|---|
| Średnia nagroda | 203 |
| Odchylenie nagrody | 0.23 |
| Skuteczność | 95% |
| Upuszczone obiekty | 0 |
| Wszystkie epizody zakończone sukcesem | Tak |
Skuteczność 95% na pełnych danych numerycznych, bez kamer, potwierdza, że środowisko, architektura polityki i struktura nagrody są solidne. Pozostałe 5% to najprawdopodobniej przypadki brzegowe wynikające z randomizacji pozycji obiektów.
Co dalej
W przyszłym tygodniu aktywujemy obserwacje z kamer i trenujemy agenta na danych wizyjnych z over_rgb i ego_rgb. Zastosujemy też konkretną technikę, która znacząco ułatwia to przejście: szczegóły w kolejnym raporcie.
FAQ
Na czym polega inżynieria nagrody w uczeniu przez wzmocnienie?
Inżynieria nagrody to proces projektowania funkcji nagrody, która zachęca do pożądanego zachowania i jednocześnie blokuje drogi na skróty, wymagając iteracyjnych testów i korekt, aż wzór matematyczny faktycznie odzwierciedla zamierzony cel.
Czym jest Soft Actor-Critic i dlaczego wybrano go do tego zadania?
Soft Actor-Critic to off-policy’owy algorytm RL optymalizujący jednocześnie nagrodę i entropię eksploracji, co sprawia, że dobrze nadaje się do zadań ciągłego sterowania, takich jak manipulacja ramieniem robotycznym, gdzie ważna jest różnorodność eksplorowanych konfiguracji przegubów.
Co to jest randomizacja środowiska i dlaczego ważna jest dla transferu sim-to-real?
Randomizacja środowiska polega na losowej zmianie parametrów epizodów: pozycji obiektów, kolorów, tarcia i wzmocnień serwomechanizmów, co zmusza agenta do uczenia się polityki generalizowalnej zamiast zapamiętywania stałej sceny, ułatwiając późniejszy transfer do prawdziwego robota.
Co to jest reward hacking?
Reward hacking to sytuacja, w której agent RL odkrywa strategię maksymalizującą numeryczną nagrodę bez faktycznego wykonania zamierzonego zadania, ujawniając luki między funkcją nagrody a rzeczywistym celem, które trzeba usunąć przed wdrożeniem.
Co ramię SO-101 osiągnęło w 2. tygodniu RL?
Agent RL ramienia SO-101 osiągnął 95% skuteczności w zadaniu pick-and-place, używając obserwacji numerycznych w symulacji IsaacLab, kończąc 70 000 kroków treningowych bez upuszczenia żadnego obiektu w 10 epizodach ewaluacyjnych.
Co następuje po treningu na danych numerycznych?
Po osiągnięciu 95% skuteczności na danych numerycznych kolejnym etapem jest trening na obrazach z kamer over_rgb i ego_rgb, po którym nastąpi testowanie transferu sim-to-real na fizycznym ramieniu SO-101.
