POMDP
- \(o_t \neq s_t\)
- 과거 관측 데이터 \(\left\{o_0, \cdots, o_t\right\}\) 를 이용해 신뢰 상태(belif state) \(b_t\)를 구성하여 전체 상태를 추정
- Privileged Learning 활용
- Teacher Policy: Privileged Information를 활용해 먼저 학습
- Student Policy: 지도 학습을 통해 Teacher 정책을 압축하여 학습
RaiSim / ANYmal-C
Terrain
- height map으로 모델링
- 다양한 경사 및 계단 지형을 포함하여 네 가지 계단 유형 모델링
- 표준(Standard), 개방형(Open), 단턱형(Ledged), 무작위(Random) 계단
- 계단을 박스 형태로 구성하여 훈련
- height map 기반 계단의 문제점
- height map으로 모델링한 계단의 단차(riser)는 완전히 수직이 아님
- 정책이 시뮬레이션에서 이 비수직성을 악용하는 현상 발견
- 이로 인해 현실(world)에서의 성능 저하(sim-to-real transfer 문제) 발생
Domain Randomization
- 로봇의 몸체 및 다리 질량 무작위화
- 초기 관절 위치 및 속도, 초기 몸체 자세 및 속도 무작위화
- 외부 힘(Force) 및 토크(Torque) 적용
- 발 마찰 계수를 낮춰 미끄러짐(Slippage) 유도
Termination
- 로봇이 비정상적인 상태(Undesirable State) 에 도달하면 에피소드 종료 후 재시작
- 몸체가 지면과 충돌
- 과도한 몸체 기울기 발생
- 관절 액추에이터의 토크 한계 초과
- Privileged Information를 활용하여 최적의 reference 정책 학습
- 랜덤 지형에서 원하는 속도 명령을 따르는 정책 학습
- \(\mathbf{v}_{\text {des }} \in \mathbb{R}^3=\left(v_x, v_y, \omega\right)\)
- PPO 사용
- 가우시안 policy: \(a_t \sim \text{N}\left(\pi_\theta\left(o_t=s_t\right), \sigma I\right)\)
Observation / Action
- \(o_t^{\text {teacher }}=\left(o_t^p, o_t^e, s_t^p\right)\)
- \(o_t^p\): 고유 감각(Proprioceptive)
- 몸체 속도, 자세, 관절 위치 및 속도 이력
- 행동 이력, 각 다리의 보행 위상(phase)
- \(o_t^e\): 외부 감각(Exteroceptive)
- 각 발 주변에서 5개의 반경(radii) 을 기준으로 샘플링한 높이 정보
- \(s_t^p\): Privilaged 상태
- 접촉 상태, 접촉 힘, 접촉 법선(normal), 마찰 계수
- 허벅지(thigh) 및 정강이(shank) 접촉 여부
- 로봇 몸체에 작용하는 외력 및 토크, 보행 스윙(swing) 지속 시간
- CPG(Central Pattern Generator) 기반 action 설계
- 각 다리 \(\text{L}={1,2,3,4}\) 가 보행 위상 변수 \(\phi_L\) 를 유지
- 보행 위상을 기반으로 발끝(foot tip)의 nominal trajectory 정의
- desired joint position \(q_i\left(\phi_L\right)\) 계산: 역기구학 사용
- policy output
- 위상 변화량 \(\Delta \phi_L\)
- 관절 목표 잔차 \(\Delta q_i\) (기본 궤적에서의 보정값)
Architecture
- MLP 기반
- 입력 데이터를 간결한 표현으로 압축 → 효율적이고 안정적인 학습 가능
- Student Policy가 일부 Teacher Policy 구조를 재사용 가능
- 세 가지 주요 구성 요소 포함
- exteroceptive encoder \(g_e\)
- 입력: \(o_t^e\) (외부 감각 정보)
- 출력: latent representation \(l_t^e\)
\[\begin{equation}
l_t^e=g_e\left(o_t^e\right)
\end{equation}\]
- privileged encoder \(g_p\)
- 입력: \(s^p_t\) (특권 상태 정보)
- 출력: latent representation \(l^{priv}_t\)
\[\begin{equation}
l_t^{p r i v}=g_p\left(s_t^p\right)
\end{equation}\]
- main network
- 위 인코더에서 생성된 latent representation을 활용하여 정책 학습
Reward
속도 명령 준수 보상 \(r_{\text{command}}\)
로봇이 원하는 속도 명령을 따르도록 유도
yaw 회전 속도에 대해서도 동일한 보상 적용
\(r_{\text {command }}= \begin{cases}1.0, & \text { if } \boldsymbol{v}_{\text {des }} \cdot \boldsymbol{v}>\left|\boldsymbol{v}_{\text {des }}\right| \\ \exp \left(-\left(\boldsymbol{v}_{\text {des }} \cdot \boldsymbol{v}-\left|\boldsymbol{v}_{\text {des }}\right|\right)^2\right), & \text { otherwise }\end{cases}\)
변수 설명:
- \(v_{\text{des}} \in \mathbb{R}^2\): 목표 수평 속도 (바디 프레임 기준)
- \(v \in \mathbb{R}^2\): 현재 수평 속도 (바디 프레임 기준)
페널티 항 (제약 위반 방지)
- 목표와 직교하는 속도 → 목표 방향에서 벗어나지 않도록 페널티 부여
- 몸체의 롤, 피치, 요 속도 → 불필요한 회전 방지
- 체형 안정성 관련 페널티
- 몸체 자세 (Body Orientation) → 비정상적인 자세 방지
- 관절 토크, 속도, 가속도 → 과격한 동작 방지
- 발 미끄러짐 (Foot Slippage) 및 정강이/무릎 충돌 (Shank & Knee Collision) 방지
보상 튜닝 과정
- 시뮬레이션에서 정책의 행동을 직접 관찰하여 보상 항 조정
- 이동 성능뿐만 아니라 보행의 부드러움(Smoothness) 도 평가
- 최종 보상 식: \(r=0.75\left(r_{l v}+r_{a v}+r_{l v o}\right)+r_b+\) \(0.003 r_{f c}+0.1 r_{c o}+0.001 r_j+0.08 r_{j c}+0.003 r_s+1.0 \cdot 10^{-6} r_\tau+\) \(0.003 r_{\text {slip }}\)
커리큘럼 학습
- 난이도를 점진적으로 증가시키는 두 가지 커리큘럼을 적용
- 지형 난이도 커리큘럼 (Terrain Curriculum)
- 적응형 방법(Adaptive Method) 활용
- 파티클 필터(Particle Filter) 를 사용하여 지형 난이도를 조정
- 정책 학습 중 항상 도전적이지만 해결 가능한 수준의 지형을 유지
- 보상 및 외란 조정 커리큘럼
- Domain Randomization 및 특정 보상 항목(관절 속도, 가속도, 자세, 미끄러짐, 정강이/허벅지 접촉 등)의 크기를 점진적으로 증가
- 적용 방식: 로지스틱 함수(Logistic Function) 기반 변화율 적용
- \(c_{k+1}=\left(c_k\right)^d\)
- \(c_k\): 현재 커리큘럼 요소(난이도) 값
- \(d\): 수렴 속도 \(0 < d < 1\)
- \(c_k\) 값이 점진적으로 증가하며 최대 1로 수렴
- Distillation Teacher → Student Policy
- Teacher: Privileged Information를 활용하여 학습됨
- Student: 실제 로봇에서 사용할 수 있는 정보만 접근 가능해야 함
- Student Policy은 Privileged Information 없이도 Teacher 정책의 성능을 유지하면서 강건하게 동작하도록 학습
- Noise 적용 + Belief State Encoder 를 통해 POMDP 해결
학습 과정
학습 과정은 동일하게 유지, 하지만 Student 정책의 높이 샘플 관측에 추가적인 Noise 적용
- 실제 환경에서 흔히 발생하는 외부 감각 오류를 시뮬레이션
- 예: 센서 오작동, 깊이 측정 오류, 반사율이 높은 표면에서의 감지 실패 등
\[
o^{\text{student}}_t = (o^p_t, n(o^e_t))
\]
- \(o^p_t\): 고유 감각(Proprioceptive) 관측 정보
- \(o^e_t\): 외부 감각(Exteroceptive) 관측 정보
- \(n(o^e_t)\): Noise 모델을 적용한 외부 감각 데이터
Belief State Estimation
- 순차적 정보(Squential Information)를 활용하여 보정
- 외부 감각 + 고유 감각의 시퀀스를 통합하여 Belief State 추정
- Recurrent Belief State Encoder 적용
- RNN, GRU, 또는 LSTM 같은 순환 구조를 사용하여 시간적 상관관계 유지
Architecture
Recurrent Belief State Encoder + MLP
- MLP 구조 유지 및 가중치 초기화
- Teacher Policy과 동일한 MLP 구조 사용. Teacher Policy의 가중치를 재사용하여 학습 속도 향상
- hidden state \(h_t\) 를 유지하여 시간적 정보(Time Dependency) 유지
- 입력:
- Student Policy 관측 \(o^{\text{student}}_t\)
- hidden state \(h_t\)
- Belief State 벡터 \(b_t\) 생성:
- Belief State Encoder를 통해 잠재 벡터 \(b_t\) 출력
- \(b_t\) 가 Teacher Policy의 특징 벡터 \((l^e_t, l^{priv}_t)\) 와 유사하도록 학습
- 최종 정책 출력:
- \(b_t\) 와 고유 감각 \(o^p_t\) 를 MLP에 입력하여 최종 Action 출력
학습 방식
- Student Policy은 지도 학습 방식으로 학습되며, 2 가지 손실 함수를 최소화함
- 지도 학습(Behavior Cloning + Reconstruction Loss) 방식으로 빠르게 학습 가능
- Behavior Cloning Loss
- 동일한 상태와 속도 명령이 주어졌을 때
- Student Policy 행동과 Teacher Policy 행동 간의 차이 최소화
- 손실 함수:
\[
L_{\text{BC}} = || a_{\text{student}} - a_{\text{teacher}} ||^2
\]
- Reconstruction Loss
- 신뢰 상태 \(b_t\) 가 Teacher Policy의 특징 벡터 와 유사하도록 학습
- 잡음이 없는 높이 샘플 및 특권 정보 \((o^e_t, s^p_t)\) 와의 차이 최소화
- 손실 함수:
\[
L_{\text{Recon}} = || b_t - (l^e_t, l^{priv}_t) ||^2
\]
- Rollout for Robustness
- Student Policy을 직접 롤아웃(Rollout) 하면서 데이터 생성
- 실제 배치 환경에서도 강건한 행동을 하도록 학습 강화
ANYmal-C 로봇에서 컨트롤러 배포 및 센서 구성
- 두 가지 센서 구성 사용
- LiDAR 기반 구성: Robosense Bpearl 돔 LiDAR 2개 사용
- Depth 카메라 기반 구성: Intel RealSense D435 Depth 카메라 4개 사용
- Zero-Shot 모델 배포 및 실행: 세부 조정 없이 즉시 실행 가능
- height map 구축
- 로봇 중심의 2.5D Height Map 구축
- 포인트 클라우드(센서 데이터) 활용, 20Hz 주기로 업데이트
- 정책은 50Hz로 실행, 최신 height map에서 높이 샘플링
- 맵 정보가 부족한 영역은 무작위 값으로 보완
- 빠른 지형 매핑 시스템 개발: 빠른 보행 속도에 맞춰 실시간 환경 분석 가능
- GPU 병렬 처리 기반 고도 매핑 파이프라인 구축
- 칼만 필터 기반 맵 업데이트
- 드리프트 보정 및 레이 캐스팅(ray-casting) 적용