Robotics

Isaac GYM 기반 Extreme Parkour with Legged Robots

연 수 2025. 2. 18. 12:43
반응형

Extreme-parkour

  • https://github.com/chengxuxin/extreme-parkour 테스트 진행 (완료)
    • conda activate parkour (가상환경)
    • python train.py --exptid xxx-xx-WHATEVER --device cuda:0 (학습코드)
    • python play.py --exptid xxx-xx (실행 코드)
      • 비교적 잘 올라가는 모습을 보임

Isaac Gym 기반 Extreme Parkour Test 진행
extreme-parkour-test.webm
10.93MB

Extreme Parkour with Legged Robots  논문 - https://arxiv.org/pdf/2309.14341

1. Introduction 

- 파쿠르는 인간이 장애물을 빠르고 역동적으로 넘다드는 운동

- 로봇에게 파쿠르 기술을 구현하는 것은 sw & hw 양쪽에서 매우 큰 도전 과제

    - 정확한 인지 (perception) 

    - 정확한 제어 (control)

    - 둘의 긴밀한 결합 (tightly coupled) -> 적절한 타이밍에 정확한 움직임을 실행해야만 성공적으로 장애물을 넘을 수 있음

- 기존 접근 방법은 장애물 배치, 크기, 종류를 사전에 정확히 측정한 뒤, 최적화를 통해 각 시간 단계마다 정확한 제어 명령을 생성 

    - 현실 세계에서는 불가능

- 인간은 감각 능력이 극적으로 향상되는 것이 아니라, 불완전한 감각과 근육을 오랜 시간 시행 착오를 걸쳐 최적의 활용법을 익힘

    - 저비용 로봇에서도 비슷한 방식으로 파쿠르 학습이 가능할 것이다 -> 가설

    - 자유롭게 방향 전환이 힘듬 / 다양한 기술을 하나의 정책으로 통합시켜야함 

         - end-to-end 강화학습을 통해 단일 신경망을 시뮬레이션에서 RL(Reinforce Learning으로 학습 진행)

         - 카메라 픽셀 입력 -> 모터 명령 출력

 - 핵심 기법 제시

    - Dual Distillation Method : previleged heading direction 제공 상태로 훈련 -> 자기 스스로 방향을 예측하도록 정책을 융합

    - Inner-product Reward Design Principle : 로봇 본체의 일반적인 이동을 핛브하기 위해 효과적인 보상 설계법을 제안

    - automatic Terrain Curriculum : RL 훈련 중, exploration problem을 해결하기 위해 자동 난이도 적용 

2. Related Work 

- 기존 보행 제어 방식은 모델 기반 제어 + elevation map을 활용

    - 변형 가능한 지형(deformable material)등 물리적 특성이 크게 변하는 상황에서 generalize struggle 할 수 있음

    - elevation map 생성에 복잡한 센서가 필요하고, 맵 생성 오류(artifacts)가 발생하면 제어 성능 저하로 이어짐

    - elevation map을 완전히 생략하고, 카메라 기반 비전 정보를 직접사용하여 robust perceptive walking을 구현한 사례

- 로봇 파쿠르 연구

    - 동물과 인간은 생후 1년 내에 보행(locomotion)을 익히나, 파쿠르는 훨씬 어렵고 수년간의 연습이 필요

    - elevation mapping으로 환경을 인식하고, RL로 Policy를 학습한 사례 - https://arxiv.org/pdf/2209.12827

- 최근 연구 동향 

    - task-specific policies를 훈련하고, 상위 모듈로 이를 조합 (elevation map 사용)

    - end-to-end depth image 사용 - https://arxiv.org/abs/2309.05665

        - 일반적 장애물 형상에 대한 일반화 부족 (형태, 길이, 높이, 로봇과 장애물간의 거리)

- 논문만의 차별점

     - 간단한 개념으로 더 extreme parkour를 구현 

     - privileged information을 통해 scan dots을 사용 -> 지형 형상 전반에 일반화

     - 정책이 스스로 방향(heading)을 결정하도록 함 -> 경사로 점프(tilted ramps)와 같은 난이도 높은 동작 가능

     - 통합 보상 설계 (Genearl-purpose reward principle) 사용

     - A1 로봇 기준, 최대 1.5배 높이, 1.5배 거리 점프 -> 최대 높이 2배, 최대 점프 2배 가능

3. Method

- 논문의 목표 

    - 단일 신경망에서 훈련을 진행하여, 센서 정보(뎁스이미지)를 엔드 투 엔드로 로봇 동작을 연결하는 정책을 학습하고자 함.

    - input : 로봇의 온보드 depth camera & onboard sensing

    - output : 관절 각도 명령 joint-angle-coomands

 - 최근 연구 동향 

    - adaptive motor policies 학습을 위해, student-teacher training을 사용

        - 1단계 : privileged information이 포함된 teacher가 policy를 학습 

        - 2단계 : teacher policy를 바탕으로 온보드 센서만 사용하는 student로 distill

        - ROA(Regularized Online Adaptation) 기법이 등장하여 adaptaion phase(적응 과정)을 single phase(단일 단계로) 통합

     - Vision Backbone 학습 

         - teacher policy : privileged scandots information를 활용해 학습

         - student policy : depth 이미지만 활용하도록 teacher policy를 distill

- 해당 논문에서는 두 단계 학습 과정을 사용

    - 1단계 : Privileged Information를 이용한 RL 학습 

        - 단순하면서 통합적인 보상 공식을 제시하여, 다양한 동작들이 자동적으로 나타나고 지형 형태에 완벽하게 적응하도록 함.

    - 2단계 : 파쿠르 수행 중, 로봇은 스스로 방향은 결정 

        - 적절히 배치된 waypoints를 사용하여 방향을 제공하고, 뎁스 정보에서 이러한 방향(oracle heading directions)을 예측

 

Training Overview

3.1 Unifeid Reward for Extreme Parkour

- 파쿠르에서는 로봇이 임의의 방향 명령(direction commands)를 따르는 방식이 아니라, 최적의 방향(optimal direction)을 스스로 선택한 자유가 필요하다

- 방향 결정 방식 : 지형 위에 waypoints를 배치하고 이를 기반으로 방향을 계산하는 방식을 사용

방향 벡터 계산식

    - p : 다음 웨이포인트 위치

    - x : 로봇의 현재 위치

    - d^w : 로봇이 향해야할 방향 단위 벡터 -> 로봇 위치 x에서 웨이포인트 p로 향하는 방향을 나타냄

- 속도 추적 보상 (velocity tracking reward)

    - 로봇이 계산한 방향 d^w에 따라 목표 속도 v_cmd를 맞추도록 속도 추적 보상을 설계

 

속도 추정 보상 계산식

 

    - v ∈ R 2 : 월드 좌표계 기준 / vcmd ∈ R : 목표 속도

    - 기존 연구에서는 base frame에서 속도를 추적했으나, 본 논문에서는 월드 좌표꼐에서 속도를 추적함

    - 로봇이 보상을 악용 (obstacle에서 주변을 빙글빙글 도는) 의도치 않은 행동을 학습하는 것을 방지하기 위함

- 가장 자리 접촉 페널티 (Clearance Penalty)

    - 로봇이 장애물 가장자리 (edge)에 너무 가깝게 발을 디디는 위험한 행동을 함 -> 에너지 소비를 최소화하려는 경향

    - 이는 매우 위험하므로, 패널티를 부여

 

가장 자리 접촉 패널티 계산식

 

- i = 0, 1, 2, 3, 4 : 각 다리에 대한 인덱스 (로봇은 사족보행 로봇)

- ci : 해당 다리 i가 땅에 닿으면 1, 아니면 0

- M[pi] : 다리 위치 pi가 장애물 가장자리(edge) 5cm이내에 있으면 1, 아니면 0

 

- 스타일 동작 유도 보상 (Stylized Motion Reward)

    - 파쿠르 동작의 중요한 특징은 다양한 스타일, 시각적으로 멋진 동작(aesthetically pleasing style)을 수행해야함 

    - 다양한 동작 스타일(explore diverse styles)을 유도하기 위해 임의의 목표 방향을 따르도록 추가 보상 항목 설계

스타일 동작 유도 보상 계산식

    - vˆ f wd : 로봇 몸체가 향하는 전방

    - c : 원하는 방향 / cˆ = [0,0,−1] T 진행 시, 손으로 서기 훈련 가능

    - W : 보상 활성화 여부를 결정하는 스위치 (훈련 중에는 0 or 1 무작위, 실제 배포 시는 사람이 제어)

- 추가적으로 정규화 항목(regularization terms) 사용

3.2 Reinforcement Learnigng form Scandots (Phase1)

- 스캔닷을 활용한 강화학습 : 앞서 설명한 보상들을 사용해, 시뮬레이션 환경에서 model-free RL로 policy를 학습

- Policy Inputs 

    - proprioception x : 로봇 자체 상태 정보 

    - scandots m : 특권 시각 정보(privileged visual information)이며 장애물을 점 형태로 표현한 데이터 / 시뮬레이션 특권 정보

    - target heading dˆ : 로봇이 가야할 방향에 대한 단위 벡터 

    - walking flag W : 특정 동작 수행 여부 제어 변수

    - commanded spped v_cmd : 목표 이동 속도

- ROA (Regularzied Online Adaptation) 활용 

    - ROA :  환경 특성을 추정하는 적응 모듈을 학습하는 기법 

    - 적응 모듈은 관측값의 과거 기록을 활용해 환경 상태를 추정하도록 훈련 

    - 로봇이 실시간으로 환경 변화에 적응할 수 있도록 돕는 역할

- 파쿠르 기술 학습을 위한, 다양한 지형을 시뮬레이션 상에서 제작

    - Tilted ramps (기울어진 경사로), gaps (틈), hurdles(허들), high step terrains(높은 계단)

- Automatic Diffculty Adjustment (난이도 자동 조절) 방식 사용

   - 난이도가 점진적으로 상승하는 방식을 적용 

   - 1단계 : 로봇 초기 상태 초기화 -> 쉬운 단계에서 시작

   - 2단계 : 난이도 상승 -> 에피소드 진행 중 지형의 절반 이상 통과하면 어려운 난이도로 승급

   - 3단계 : 기대한 거리의 절반도 이동하지 못하면 쉬운 난이도로 강등


3.3 Distilling Direction and Exteroception (Phase 2)

- 방향과 외부 감각의 융합 학습 진행 

- Phase1의 정책의 한계 : 실제 로봇에 바로 적용하기 어려움 

    - 시뮬레이션에서는 candots이라는 특권 시각 정보 사용 / 실제 로봇에서는 전방 카메라에서 촬영한 depth 만 사용 가능

    - Heading Direction 차이 : 시뮬레이션에서는 expert가 waypoints와 target directions을 명시적으로 제공

        - 실제 로봇에서는 눈에 보이는 지형만 보고 스스로 방향을 추론해야함

- Phase2에서는 실제 적용 가능한 정책으로 만들기 위해, supervised learning 사용

    - CNN + GRU 기반 파이프라인 설계 

        - CNN : 뎁스 이미지를 feature extraction 

        - GRU : 시간에 따른 과거 상태를 기억해 활용 

    - DAgger (Data Aggregation)를 사용해 정책을 훈련

       - teacher : Phase 1 정책 

       - student : Phase 2 정책

       - Phase2의 정책 초기값으로 Phase 1 정책을 copy해서 사용

    - 방향(Heading) 예측의 어려움

       - 뎁스 이미지로 부터 방향을 예측하는 네트워크는 Phase 1에서 pre-training이 되어 있지 않음 -> 그대로 사용하면 성능 저하

       - MTS(Mixture of Teacher and Student) 교사 - 학생 혼합 방법을 제안

           - 학생이 관측하는 방향 명령 obsθ 정의

학생이 관측하는 방향 명령

         - obs_pred : 학생이 예측한 방향

         - dˆw : Teacher가 제공하는 웨이포인트 기반 목표 방향

         - 0.6 이상이면, 학생이 예측 사용 / 미만이면 교사 방향 사용

 

4. Result 

4.1 Experimental Setup

- Unitree A1 로봇 (12개 관절을 가진 사족보행 로봇 사용)

    - 허벅지 관절 높이 : 26cm

    - 몸체 길이 : 40cm

    - depth camera : Intel RealSense D435 ( 8 hz ~ 12hz)

        - depth image preprocessing : 좌측에 발생하는 dead pixels를 잘라내고, 58 x 87 기반으로 다운 샘플링

        - depth image latency 보정 : 지연 방지를 위해, 고정 지연 0.08초를 적용

            - tp 측정 : 뎁스 이미지 수신 -> latent 생성 -> 전송 직전까지 걸린 시간(tp) 기록

            - 지연 보정 : tp < 0.08초이면 0.08 - tp 만큼 대기 이후 latnet 전송 / tp > 0.08이면 즉시 전송

    - Jetson Xavier NV 

    - depth backbone : 10hz 

    - 기본 정책 생성 : 50hz

    - 통신 방식 : UDP 프로토콜 사용 

    - Proprioception 지연 고정 : 로봇 상태 정보 수집 및 처리 과정에서도 고정 지연 0.016초 적용

    - 훈련 시간 : RTX 3090 GPU 1개로 20시간 이내 학습 가능

 

4.2 Emergent result (자발적으로 나타난 행동 결과)

- 단순한 보상함수는 사전 지식(prior knowledge)는 거의 반영하지 않고, 로봇이 자유롭게 스스로 행동을 학습하도록 함

- 높이 뛰어오르기 : 0.5m 높이의 박스 위로 뛰어오름 

    - 장애물에 가까워질 때 보폭을 줄임, 앞다리와 뒷다리를 장애물에서 적절한 거리로 맞춤

    - 점프 순간, 뒷다리를 강한 토크와 높은 속도로 뻗어 몸을위쪼으로 밀어 올림, 동시에 앞다리를 장애물 위쪽으로 넘김

    - 앞다리가 장애물 위에 닿으면, 그것을 이용해 몸을 위로 끌어올리고, 뒷다리를 몸 가까이 붙여 장애물을 넘어감

    - 이후 네발 보행으로 돌아감 

- 멀리 뛰기 : 0.8m 폭의 틈을 뛰어넘음

    - 앞발을 틈 가장자리에 맞춰 정렬 후, 뒷발도 가장자리에 가깝게 가져와 점프 거리를 최대로 확보

    - 점프 순간, 뒷발을 뒤로 차서 몸을 앞으로 밀어내고 동시에 위로 튀어오름, 앞발을 미리 뻗어 반대편 착지를 준비

    - 비행 중 동작 : 공중에 있는 동안, 뒷발도 뻗어 힘 전달 시간을 극대화

    - 이후, 앞발을 먼저 내리고, 뒷발을 그쪽으로 끌어와 안전하게 착지, 착지 후 보행 자세로 돌아감

- 손으로 서기 : 4발 보행에서 2발 보행으로 자연스럽게 전환 

    - 몸을 앞으로 숙이면서, 앞발에 체중을 싣음, 뒷발을 위로 차올려서 몸을 수직으로 만듬

    - 수직 자세가 되면, 뒷발은 중립 상태로 두고, 작은 조정으로 균형을 유지

   

4.3 Comparison to Baselines

- 제안한 시스템의 각 구성 요소가 실제로 성능에 기여하는지 검증하기 위해, 두가지 종류의 기준 실험 설계

- 첫 번째 세트 : 보상 설계와 전체 시스템 평가

    - Noisy : depth + odom을 융합해 elevation map을 생성해 사용하는 시스템을 묘사하여 엔드투 엔드와 비교

                  센서 노이즈를 추가하여 Phase1 정책을 훈련 

    - No inner product reward : 내적 보상 대신, 속도 추적 방식 사용 -> 내적 보상 설계가 필요한지 검증

    - No feet clearance penalty : 발 위치 페널티 제거 -> 실제 안정성에 중요한지 검증

- 두 번째 세트 : 방향 및 정책 증류 평가

    - heading과 distillation 이 필요한지 확인하고자 설계

    - Both : student가 항상 자신이 예측한 heading을 관측하도록 설정

    - Mask : heading observation을 0으로 마스킹, action만을 모방하도록 학습

    - Oracle : student가 항상 waypoint 기반 teacher의 정확한 eading을 관측하도록 설계 -> 이론상 최고 성능을 확인

- 시뮬레이션 결과 -> 해당 논문의 방법론이 최고의 성능을 보임

   - 지형 : 경사로, 계단, 틈, 허들 -> 난이도 증가 순서대로 배치한 장애물 코스 제작 

   - 256개의 로봇을 동시에 시작시켜 다음 두가지 지표를 측정

        - 평균 x 방향 이동 거리 (MVD) : 로봇이 넘어지기 전까지 전진한 거리  (클수록 좋음)

        - 평균 모서리 접촉 빈도 (MEV) : 로봇 발이 모서리에 접촉한 횟수 (낮을 수록 좋음)

- 실제 환경 결과 -> 해당 논문의 방법론이 최고의 성능을 보임

    - NoClear와 NoDir 실제 환경을 비교         

5. Discussion

- 논문에서 제안한 방법이 시뮬레이션, 실제 환경 모두 가장 좋은 성능을 보임

- 통합 보상(Inner Product Reward), 발 위치 패널티(Feet Clearance Penalty), 방향 예측 종류(MTS) 등 제안 기법들이 성능 향상에 모두 기여했음을 확인

 

반응형