Microduck Arena
신뢰할 수 있는 시계로 Microduck 정책 경주하기
hero
이 게시물은 Antoine Pirrone, Augustin Crampette, Matthieu Lapeyre, Coralie Deplanne, Anne-Charlotte Passanisi, 그리고 Thomas Wolf와 협력하여 작성되었습니다.
Microduck은 Pollen Robotics와 Hugging Face에서 새로 출시한 저렴한 오픈 소스 이족 보행 로봇입니다. 이제 Isaac Lab과 Newton을 사용하여 Microduck이 걷도록 훈련할 수 있습니다. 정책을 테스트하고, ONNX로 내보낸 다음, 실제 로봇에 배포해 보세요. Hugging Face Hub에 공유하거나 Microduck Arena에서 경쟁을 통해 검증한 후, NVIDIA Isaac Lab으로 더 고급 작업을 탐색할 수 있습니다.
시뮬레이션에서 훈련된 보행 정책은 또한 실제 로봇 서보의 마찰, 지연 및 기계적 유격을 처리해야 합니다. NVIDIA Isaac Lab은 수천 개의 GPU 병렬 시뮬레이션을 통해 정책을 훈련하기 위한 오픈 소스 프레임워크입니다. Newton, 액추에이터 모델링(actuator modeling), 그리고 도메인 랜덤화(domain randomization)를 통해 개발자는 실제 하드웨어를 위한 정책을 준비할 수 있습니다. Microduck은 이 워크플로우를 현실로 구현합니다: 시뮬레이션에서 보행 정책을 훈련하고, ONNX로 내보낸 다음, 실제 이족 보행 로봇에 배포하는 것입니다.
이 튜토리얼은 Isaac Lab과 Newton을 사용하여 Microduck을 훈련하고 평가한 다음, 배포를 위해 정책을 내보내는 과정을 안내합니다. 그 후에는 모델을 Hugging Face Hub에 공유하거나, 호환성을 테스트하고 Microduck Arena에서 경쟁하거나, 자체 Microduck에 적용할 수 있습니다. 걷기는 시작점이며, Isaac Lab 3.0의 더 많은 기능을 탐색하는 데 도움이 되는 연관 예제들이 제공됩니다.
시뮬레이션 및 훈련 부분을 위해 다음이 필요합니다:
- 지원되는 NVIDIA GPU와 드라이버가 설치된 Linux 워크스테이션. 요구 사항을 참조하세요.
- Git과 uv.
배포를 위해서는 또한 다음이 필요합니다:
- 구성된 물리적 Microduck.
- 온보드 로봇 소프트웨어가 설치되어 작동하는 상태.
- 페어링된 게임패드와 같은 지원되는 제어 인터페이스.
지원되는 NVIDIA GPU와 드라이버가 있는 Linux에서 uv를 설치하고(이미 사용 가능하다면 처음 두 줄은 건너뛰세요), Isaac Lab을 클론한 다음, 종속성을 설치합니다:
Microduck 태스크와 프리셋이 사용 가능한지 확인합니다:
uv run isaaclab list_envs --keyword MicroDuck --show_presets
Isaac Lab은 이미 Microduck의 로봇 모델, 씬(scene), 관측값(observations), 액션(actions), 보상(rewards) 및 도메인 랜덤화(domain randomization)를 제공합니다. 평지 걷기 태스크부터 시작하고, 거친 버전에서는 계단, 경사로, 고르지 않은 지형이 추가됩니다.
그림 2. Microduck 환경을 나란히 비교: 평지(왼쪽)와 고르지 않은 지형(오른쪽).
정책은 61개의 관측값 값을 받아 14개의 관절 위치를 출력합니다. 내보내기 및 배포 시 관측값 순서, 정규화(normalization), 액션 스케일링을 일관되게 유지해야 합니다. 전체 관측값, 보상 및 시뮬레이션 설정은 Microduck 태스크 구성을 참조하십시오.
Isaac Lab은 GPU에서 시뮬레이션 환경을 병렬로 실행하여 Microduck 이동 훈련 속도를 높입니다. Isaac Lab은 또한 여러 GPU에 걸쳐 분산 훈련(distributed training)을 수행할 수 있으며, 예를 들어 16개의 GPU를 사용하여 훈련 속도를 높이고 강건성(robustness)을 증가시킬 수 있습니다. 이 구성에서는 거친 지형과 백래시(backlash)가 활성화된 상태로 초당 최대 1.25M 스텝에 도달할 수 있습니다.
이 튜토리얼에서는 MJWarp 솔버와 Newton 기반 Better Actuator Models (BAM)을 사용하여 서보 응답을 모델링하고, 백래시 프리셋과 함께 위치 목표를 실제 서보 토크로 변환하여 펌웨어 컨트롤러, 모터 전기적 한계, 마찰 및 지연을 모델링합니다. 정책이 시뮬레이션에서 전이(transfer)될 수 있도록 도메인 랜덤화를 활용합니다. 각 오리에게 질량/질량 중심, 지면 마찰, 관절 관성, 엔코더 오프셋, 배터리 전압/강하 및 명령 지연을 무작위화합니다. 또한 지형을 변화시키고 밀어붙이는 힘(pushes)을 가하며, 불균일한 마모를 나타내기 위해 관절별로 백래시도 다르게 적용합니다.
백래시(Backlash)는 기어박스에서 발생하는 기계적 유격으로, 관절이 방향을 바꿀 때 구동 장치가 맞물리기 전에 약간 움직일 수 있습니다. 이 효과를 모델링하고 훈련 중 여러 관절에 걸쳐 변화시키면, 정책이 실제 로봇에서 마주칠 수 있는 차이점에 노출됩니다.
다음 명령어를 실행하여 훈련을 시작합니다:
uv run isaaclab train \
--rl_library rsl_rl \
--task IsaacContrib-Velocity-Rough-MicroDuck \
...
배포에는 거친 지형(rough terrain)을 사용했지만, 대안으로 다음 명령어를 사용하여 평평한 지형(flat terrain) 환경에서 훈련할 수도 있습니다:
uv run isaaclab train \
--rl_library rsl_rl \
--task IsaacContrib-Velocity-Flat-MicroDuck \
...
물리적 로봇에 Microduck 보행 정책을 배포하려면, 시뮬레이션에서 평가한 후 ONNX 형식으로 내보내야 합니다. Isaac Lab의 RSL-RL 재생(playback) 워크플로우는 TorchScript (policy.pt)와 ONNX (policy.onnx) 파일을 자동으로 내보냅니다. 훈련과 일관되게 관찰 순서, 정규화 및 액션 스케일링을 유지하며 Microduck의 온보드 런타임(onboard runtime)에서 policy.onnx를 사용하십시오.
Newton 시각화기에서 최신 체크포인트를 실행합니다:
uv run isaaclab play \
--rl_library rsl_rl \
--task IsaacContrib-Velocity-Rough-MicroDuck \
...
latest를 특정 체크포인트 경로로 대체하십시오.
그림 4. Microduck이 시뮬레이션에서 불규칙한 지형을 가로질러 보행 정책을 수행합니다.
Microduck용 정책 내보내기
배포를 위해 우리는 거친 지형 환경의 정책을 사용할 것입니다. 현재 RSL-RL 재생 구현은 선택된 실행과 관련된 exported 디렉토리에 TorchScript와 ONNX 파일을 모두 내보냅니다:
exported/
├── policy.pt
└── policy.onnx
Microduck의 온보드 런타임은 ONNX 정책을 로드합니다. 하드웨어 인계(hardware handoff)에는 policy.onnx를 사용하십시오. 자동 내보내기는 Isaac Lab의 RSL-RL 재생 백엔드에 구현되어 있습니다.
policy.onnx가 내보내지면 다음 작업을 수행할 수 있습니다:
Microduck Arena에서 비교해 보세요. 이곳은 공유된 챌린지에서 호환 가능한 정책을 테스트하고 리더보드 결과를 비교할 수 있는 Hugging Face Space입니다. 아레나는 61개의 관측값(observation values), 14개의 행동값(action values)을 가진 모델과 최대 크기 64 MiB의 모델을 받습니다. 제출 가이드를 따라 호환성을 확인하고 챌린지에 참여하세요.
실제 Microduck에서 실행해 보세요. 섹션 4에서 관측 및 행동 인터페이스를 확인한 후, 로봇 온보드 런타임에 ONNX 파일을 사용하세요. 하드웨어로의 전송은 섹션 6에서 다룹니다.
Hugging Face Hub에 공유하세요. 정책을 업로드하여 다른 사람들이 발견하고 다운로드할 수 있게 합니다. 어떻게 사용하는지 설명하는 짧은 모델 카드(model card)를 추가하는 것을 권장합니다. 또한, 결과를 재현하는 데 도움이 되도록 학습 구성(training configuration)도 포함할 수 있습니다.
시뮬레이션에서 정책을 검증하고 인터페이스(섹션 4)를 확인한 후, policy.onnx 파일을 설정된 Microduck에 배포하세요:
scp exported/policy.onnx microduck@ROBOT_HOST:/home/microduck/my_walking.onnx
ssh microduck@ROBOT_HOST
robotctl policy list
sudo robotctl policy load walk /home/microduck/my_walking.onnx
robotctl monitor
sudo robotctl policy reset walk
런타임 설정 및 동작에 대해서는 Microduck 정책 로딩 가이드를 따르세요. 그림 5는 낙하에 대한 배포된 정책의 견고성을 보여줍니다. Microduck은 넘어지더라도 균형을 회복하고 계속 걸어갑니다.
그림 5. Isaac Lab에서 학습된 이동성(locomotion) 정책으로 실제 Microduck이 걷는 모습.
Isaac Lab 3.0은 이동성, 정교한 조작(dexterous manipulation), 비전 기반 작업 전반에 걸쳐 GPU 병렬 로봇 학습을 가능하게 하며, 확장 가능한 환경과 구성 가능한 물리 및 렌더링 백엔드를 제공합니다. 다음 예제와 도구들을 탐색해 보세요:
더 복잡한 이동성: Microduck의 거친 지형 작업(rough-terrain task)을 계단, 경사로, 불규칙한 지면으로 적용하여, 지형 난이도를 높이는 커리큘럼을 구성할 수 있습니다.
인지 및 내비게이션 작업: Microduck의 보행 정책을 헤드 카메라 깊이(depth) 및 로봇 상태 관측치와 확장하여 시뮬레이션에서 인지 기반 작업을 탐색할 수 있습니다. 아래 GIF는 경사로 이동(ramp traversal)을 보여줍니다. 비전 기반 조작(vision-enabled manipulation)을 위해 Kuka–Allegro 예제에서 카메라 기반 관측치를 탐색해 보세요.
정교한 조작 (Dexterous manipulation): Kuka–Allegro 리프트 및 재배치 작업을 시도하여 팔과 다지 손(multi-fingered hand)이 물체를 조작하도록 훈련할 수 있습니다.
사용자 지정 환경: 프로젝트 생성기(project generator)를 사용하여 자신만의 작업을 구축한 다음, SimReady Central Library에서 시뮬레이션 준비가 된 (SimReady) 에셋을 추가하고 새로운 과제에 맞게 관측치와 보상(rewards)을 조정하세요.
Figure 7. NVIDIA Isaac Lab에서 병렬 훈련을 통해 시뮬레이션된 Microduck이 다양한 경사로 및 플랫폼을 이동하는 동시에 균형을 유지하고 넘어지는 것을 피하는 방법을 학습할 수 있게 합니다.
Figure 8. 외부 상부 뷰와 아래의 RGB, 깊이(depth), 분할(segmentation) 뷰를 포함한 시뮬레이션 내 Microduck 인지 작업입니다.
Isaac Lab에서 Microduck 작업을 시작하여 첫 보행 정책을 훈련하고, 내보낸 ONNX 모델을 Hugging Face Hub에 공유하세요. Microduck Arena에서 이를 검증하고, 과제에 참가하여 자신의 정책이 어떻게 비교되는지 확인해 보세요. 그런 다음 배운 것을 바탕으로 더 발전시키세요—더 거친 지형을 시도하거나, 인지를 추가하거나, 자신만의 작업을 생성해 보세요.
Microduck 홈페이지 (주문, 빠른 시작, 설치)
이 워크플로우는 Pollen Robotics의 Microduck 하드웨어 및 소프트웨어, 최초의 Microduck 강화학습(reinforcement-learning) 프로젝트, BAM 액추에이터 모델링 작업, 그리고 Isaac Lab 및 Newton 통합을 기반으로 구축되었습니다.