로봇이 스스로 걷는 법을 배운다는 것, 상상만 해도 신기하지 않나요? 인간은 태어나서 약 1년이 지나야 첫 걸음을 내딛지만, 강화학습(Reinforcement Learning) 기반의 로봇은 수백만 번의 가상 시뮬레이션을 통해 단 몇 시간 만에 안정적인 보행을 터득해요. 이 글에서는 강화학습이 로봇 보행에 어떻게 적용되는지, 핵심 알고리즘은 무엇인지, 그리고 실제 현장에서 어떻게 구현되는지를 단계별로 살펴볼게요.
강화학습이란 무엇인가요?
기본 개념: 에이전트와 환경
강화학습은 에이전트(Agent)가 환경(Environment)과 상호작용하면서 보상(Reward)을 최대화하는 행동 정책(Policy)을 학습하는 머신러닝 패러다임이에요. 로봇 보행에서는 로봇 자체가 에이전트이고, 물리 세계(혹은 시뮬레이터)가 환경이 돼요.
핵심 구성 요소는 크게 네 가지예요.
- 상태(State, s): 관절 각도, 각속도, 몸통 기울기, 발 접촉 정보 등 로봇의 현재 상황
- 행동(Action, a): 각 관절에 가할 토크 또는 목표 각도
- 보상(Reward, r): 앞으로 얼마나 나아갔는지, 자세가 안정적인지 등을 수치화한 피드백
- 정책(Policy, π): 상태를 입력받아 행동을 출력하는 함수(주로 신경망)
마르코프 결정 과정(MDP) 모델링
로봇 보행 문제는 마르코프 결정 과정(Markov Decision Process, MDP)으로 정식화돼요. MDP는 (S, A, P, R, γ)의 튜플로 표현되는데, S는 상태 공간, A는 행동 공간, P는 전이 확률, R은 보상 함수, γ는 미래 보상 할인율이에요. 로봇은 현재 상태에서 행동을 취하고, 환경은 다음 상태와 보상을 반환해요. 이 과정을 수천만 번 반복하면서 정책이 조금씩 최적화되는 거예요.
MDP 모델링에서 가장 중요한 결정은 상태 공간 설계예요. 너무 적은 정보를 제공하면 로봇이 상황을 파악하지 못하고, 너무 많은 정보는 학습을 느리게 해요. 실제 연구에서는 관절 각도 12~20개, 각속도, IMU 센서값(가속도·자이로), 발 접촉 바이너리 신호 등을 조합한 약 40~60차원 벡터를 상태로 사용해요.
보상 함수 설계의 중요성
보상 함수는 강화학습의 ‘성적표’예요. 잘못 설계하면 로봇이 엉뚱한 방식으로 목표를 달성하는 ‘보상 해킹(Reward Hacking)’ 현상이 나타나요. 예를 들어, 앞으로 이동한 거리만 보상으로 주면 로봇이 넘어지면서도 구르는 방식으로 이동할 수 있어요.
좋은 보상 함수는 여러 항목을 가중합으로 구성해요.
- 전진 속도 보상: 목표 속도에 가까울수록 높은 보상
- 자세 안정성 패널티: 몸통 기울기가 일정 각도를 넘으면 감점
- 에너지 소비 패널티: 관절 토크의 제곱합을 패널티로 추가해 자연스러운 걸음걸이 유도
- 발 접촉 패턴 보상: 좌우 발이 교대로 지면에 닿는 정상적인 보행 주기 유도
- 생존 보상: 넘어지지 않고 서 있을 때마다 소량의 보상 지급

핵심 알고리즘: PPO와 SAC
PPO(Proximal Policy Optimization)
PPO는 2017년 OpenAI가 발표한 알고리즘으로, 현재 로봇 보행 학습에서 가장 널리 사용되는 방법이에요. 정책 경사(Policy Gradient) 방법의 한 종류인데, 이전 정책과 새 정책의 차이를 클리핑(Clipping)하여 학습 안정성을 높인 게 특징이에요.
PPO의 핵심 아이디어는 정책 업데이트 폭을 제한하는 거예요. 정책이 너무 크게 변하면 좋았던 행동을 잊어버릴 수 있기 때문에, ε(보통 0.1~0.2) 범위 내에서만 정책을 변경해요. 수식으로는 다음과 같이 표현돼요.
L_CLIP(θ) = E[min(r_t(θ)·A_t, clip(r_t(θ), 1-ε, 1+ε)·A_t)]
여기서 r_t(θ)는 새 정책과 이전 정책의 확률 비율, A_t는 어드밴티지(Advantage) 함수예요. PPO는 구현이 간단하고 하이퍼파라미터에 덜 민감해서 연구자들이 즐겨 사용해요.
SAC(Soft Actor-Critic)
SAC는 2018년 UC 버클리에서 발표된 오프-폴리시(Off-policy) 알고리즘이에요. PPO가 온-폴리시(On-policy)라 수집한 데이터를 한 번만 쓰는 반면, SAC는 리플레이 버퍼(Replay Buffer)에 경험을 저장하고 재사용해서 데이터 효율이 높아요.
SAC의 독특한 점은 엔트로피 최대화 목표를 포함한다는 거예요. 보상을 극대화하는 동시에 정책의 불확실성(엔트로피)도 최대화하도록 학습해요. 이렇게 하면 다양한 상황에서 유연하게 대처하는 정책이 만들어져요.
- 연속 행동 공간에서 뛰어난 성능 발휘
- 자동 엔트로피 조정(Automatic Temperature Tuning)으로 하이퍼파라미터 튜닝 부담 감소
- 샘플 효율성이 PPO 대비 3~5배 높음
TD3(Twin Delayed DDPG)
TD3는 DDPG의 과대추정(Overestimation) 문제를 해결하기 위해 두 개의 크리틱(Critic) 네트워크를 사용하고, 정책 업데이트 빈도를 줄인 알고리즘이에요. 연속 행동 공간의 로봇 제어에서 안정적인 성능을 보여줘요. SAC와 함께 MuJoCo 벤치마크에서 최고 성능을 경쟁하고 있어요.
시뮬레이션에서 현실로: Sim-to-Real 전이
시뮬레이션 활용의 필요성
강화학습은 수백만 번의 시행착오가 필요해요. 실제 로봇으로 이를 수행하면 관절이 마모되고, 넘어질 때마다 수리가 필요하며, 24시간 내내 사람이 지켜봐야 해요. 반면 MuJoCo, PyBullet, Isaac Sim 같은 물리 시뮬레이터를 사용하면 실제 시간보다 수십 배 빠르게 학습을 진행할 수 있고, 병렬로 수천 개의 환경을 동시에 돌릴 수도 있어요.
NVIDIA Isaac Sim은 GPU 병렬 시뮬레이션을 지원해서 4,096개의 로봇을 동시에 학습시킬 수 있어요. ETH Zurich의 ANYmal 연구팀은 이를 활용해 불과 몇 분 만에 수백만 번의 학습 스텝을 완료했어요.
Sim-to-Real Gap 문제
시뮬레이션과 현실 사이에는 항상 차이가 존재해요. 이를 Sim-to-Real Gap이라고 해요. 주요 원인은 다음과 같아요.
- 모델링 오차: 실제 관절의 마찰, 탄성, 백래시(Backlash)를 완벽히 모델링하기 어려움
- 센서 노이즈: 실제 IMU와 엔코더에는 노이즈가 있지만 시뮬레이터는 이상적인 값을 반환
- 지면 특성: 카펫, 타일, 흙 등 다양한 지면의 마찰계수와 변형을 모두 시뮬레이션하기 어려움
- 액추에이터 지연: 실제 모터 드라이버에는 수 밀리초의 응답 지연이 존재
도메인 랜덤화(Domain Randomization)
Sim-to-Real Gap을 극복하는 가장 효과적인 방법은 도메인 랜덤화예요. 학습 중에 물리 파라미터(질량, 관절 마찰, 지면 마찰계수 등)를 무작위로 변경하면서 다양한 환경에 강건한 정책을 학습시키는 기법이에요.
구체적으로는 다음 파라미터들을 일정 범위 내에서 무작위화해요.
- 링크 질량: ±20% 범위에서 무작위 스케일링
- 관절 마찰 계수: 0~0.1 범위에서 균일 샘플링
- 지면 마찰: 0.4~1.2 범위에서 변화
- 모터 지연: 0~20ms 범위의 시간 지연 추가
- 외력 교란: 학습 중 랜덤한 방향으로 외부 힘 인가
ETH Zurich의 ANYmal 팀은 도메인 랜덤화를 통해 시뮬레이션에서만 학습한 정책을 실제 로봇에 직접 이식하는 데 성공했어요. 이 연구는 2019년 Science Robotics에 게재되어 Sim-to-Real 분야의 이정표가 됐어요.
최신 연구 동향: 학습 기반 보행의 발전
교사-학생 학습 프레임워크
최근 주목받는 접근법은 특권 정보(Privileged Information)를 활용하는 교사-학생(Teacher-Student) 프레임워크예요. 시뮬레이션에서는 지면 높이맵, 마찰 계수 같은 ‘정답 정보’에 접근할 수 있지만, 실제 로봇에서는 이런 정보를 얻기 어려워요.
이 문제를 해결하기 위해 두 단계로 학습해요. 먼저 시뮬레이터에서 특권 정보를 모두 활용해 최고 성능의 ‘교사 정책’을 학습하고, 그 다음 실제 센서 정보만으로 교사 정책을 모방하는 ‘학생 정책’을 학습해요. 학생은 모방학습(Imitation Learning)으로 교사의 행동을 따라 하면서 센서 데이터에서 필요한 정보를 추출하는 방법을 익혀요.
속도 명령 추종과 다양한 보행 패턴
단순히 앞으로 걷는 것에서 나아가, 속도와 방향 명령을 실시간으로 추종하는 범용 보행 컨트롤러가 표준이 됐어요. 조이스틱 입력으로 속도 벡터(vx, vy, ωz)를 지정하면 로봇이 걷기, 뛰기, 옆걸음, 제자리 돌기 등 다양한 보행 패턴을 자연스럽게 수행해요.
보스턴 다이내믹스의 Spot과 ETH Zurich의 ANYmal이 이런 범용 컨트롤러의 대표 사례예요. 특히 ETH Zurich Robotic Systems Lab에서 발표한 연구들은 계단, 자갈길, 눈 덮인 길 등 험지에서도 안정적인 보행을 달성했어요.
전신 운동 제어와 작업 통합
최근에는 보행만이 아니라 상체 조작(Manipulation)을 동시에 수행하는 전신 운동 제어(Whole-Body Control) 연구가 활발해요. 로봇이 걸으면서 물체를 집거나, 문을 열거나, 계단 난간을 잡는 등 복잡한 동작을 강화학습으로 학습시키는 거예요.
이런 통합 제어는 단순 보행보다 훨씬 고차원의 행동 공간을 다루기 때문에, 계층적 강화학습(Hierarchical RL)이나 모션 플래닝과의 결합이 필요해요. 상위 레벨 정책이 목표를 설정하고, 하위 레벨 정책이 실제 관절 제어를 담당하는 구조예요.
실제 구현: 개발 환경과 오픈소스 도구
주요 시뮬레이터 비교
로봇 보행 학습에 사용되는 주요 시뮬레이터를 비교해 볼게요.
- MuJoCo: DeepMind가 인수 후 무료화. 빠르고 정확한 접촉 역학으로 학계 표준. OpenAI Gym의 Ant, HalfCheetah 환경이 여기서 동작해요.
- Isaac Sim (NVIDIA): GPU 가속 병렬 시뮬레이션 지원. 4096개 이상의 환경 동시 구동 가능. Omniverse 기반으로 포토리얼한 렌더링 제공.
- PyBullet: 오픈소스 물리 엔진. 입문용으로 적합하나 성능은 MuJoCo 대비 낮음.
- Webots: 교육용으로 많이 사용. ROS 통합이 좋음.
오픈소스 프레임워크와 학습 코드
강화학습 기반 보행을 직접 구현하려면 다음 오픈소스 도구들이 유용해요.
- legged_gym (ETH Zurich): ANYmal 보행 학습 코드 공개. Isaac Gym 기반으로 빠른 학습 가능.
- Stable Baselines3: PPO, SAC, TD3 등 주요 알고리즘을 PyTorch로 구현. 빠른 프로토타이핑에 적합.
- Isaac Lab: NVIDIA의 공식 로봇 학습 프레임워크. 다양한 로봇 모델과 과제 포함.
- RSL-RL: ETH Zurich Robotic Systems Lab의 경량 RL 라이브러리. legged_gym과 함께 사용.
학습 파이프라인 구성
실제 학습 파이프라인은 다음 순서로 구성해요.
- 로봇 URDF 모델 준비 및 시뮬레이터 임포트
- 환경 클래스 구현 (상태 관측, 보상 계산, 초기화 로직)
- 도메인 랜덤화 파라미터 설정
- 신경망 아키텍처 선택 (보통 MLP 3~4층, 각 256~512 유닛)
- PPO 또는 SAC 알고리즘으로 5,000~50,000 에피소드 학습
- 정책 성능 평가 및 하이퍼파라미터 조정
- Sim-to-Real 이식 및 미세조정
마무리: 강화학습 보행의 현재와 미래
강화학습 기반 로봇 보행은 지난 5년간 놀라운 발전을 이루었어요. 한 발짝 내딛는 것조차 어려웠던 로봇이 이제는 험준한 산악 지형을 달리고, 밀려도 스스로 균형을 잡아요. 핵심은 MDP 모델링, 세심한 보상 설계, 도메인 랜덤화, 그리고 대규모 병렬 시뮬레이션의 조합이에요. 앞으로는 언어 명령을 이해하고 자유롭게 보행하는 범용 물리 AI 에이전트로 발전할 가능성이 높아요. 지금이 로봇 보행 학습을 공부하기 가장 좋은 시기예요.