MENU

피지컬 AI

시뮬레이터에선 잘 걷는데 실기에선 휘청여요

파일 안에 있는 숫자 하나 때문일 수 있습니다. armature라고 부르는 값인데요, 있는 파일과 없는 파일을 직접 열어서 비교해 봤습니다.

모터 회전 관성 값 비교. Booster는 전 관절에 들어 있고 확인한 Unitree G1 파일에는 없다.

시뮬레이터에서는 멀쩡히 걷습니다. 실기에 올리면 휘청여요.

강화학습 실습에서 제일 자주 나오는 상황이죠. 학습을 더 시켜야 하나 싶어서 며칠을 더 돌려보기도 하고요.

그런데 원인이 학습이 아니라 파일에 들어 있는 숫자 하나일 수 있습니다.

armature가 뭐냐면요

모터 안에는 쇳덩이가 돕니다. 회전자라고 하죠.

이 쇳덩이도 무게가 있어서, 갑자기 돌리려고 하면 버팁니다. 멈추려고 해도 버티고요. 그 버티는 정도를 숫자로 적은 게 armature입니다.

일상에서 느껴보신 적 있으실 거예요. 선풍기를 껐는데 날개가 한참 더 도는 것, 그게 회전 관성입니다.

로봇 관절도 똑같습니다. 모터가 도는 순간 이 저항이 생겨요.

이 값이 없으면 어떻게 되냐면

시뮬레이터가 로봇을 실제보다 가볍게 계산합니다.

명령을 주면 관절이 실제보다 빨리 반응하고, 멈추라고 하면 실제보다 빨리 멈춥니다. 그 안에서 학습한 AI는 그렇게 가벼운 로봇에 맞춰진 상태로 나옵니다.

그런데 진짜 로봇은 안 그렇죠. 명령대로 안 따라오고, 멈추라고 해도 조금 더 갑니다.

시뮬레이터에서 걷던 게 실기에서 휘청이는 이유가 여기 있습니다.

실제 파일을 열어봤습니다

저희가 공개된 MJCF 파일들을 직접 열어서 세어봤습니다. MJCF는 MuJoCo라는 시뮬레이터가 읽는 파일이에요.

모터 회전 관성 값 개수 비교. Booster K1 22개, T1 23개, T2 31개, 확인한 Unitree G1 파일 0개.
모터 회전 관성 값 개수 비교. Booster K1 22개, T1 23개, T2 31개, 확인한 Unitree G1 파일 0개.

Booster 쪽은 관절 수만큼 값이 다 들어 있었습니다. K1은 22개, T1은 23개, T2는 31개요.

저희가 받은 Unitree G1 파일에는 0개였습니다.

숫자만 놓고 보면 단순한데, 실습에서는 이 차이가 크게 벌어집니다.

왜 URDF에는 없나요

설계도 파일이 두 가지라 그렇습니다.

  • URDF — 뼈대와 관절, 무게, 토크 한계. 대부분의 도구가 읽습니다
  • MJCF — URDF 규격에 칸이 없어서 못 담는 값들

armature는 URDF 규격에 자리가 없어요. 그래서 MJCF에만 들어갑니다.

재밌는 건, MuJoCo를 안 쓰더라도 이 파일이 쓸모 있다는 점입니다. 값을 읽어서 Isaac Sim 설정에 옮겨 적을 수 있거든요. MJCF는 시뮬레이터 파일이면서 물리 사양서이기도 합니다.

실습에서 확인하는 법

파일을 열어서 armature를 찾아보시면 됩니다. 관절 수만큼 있으면 채워진 것이고, 없으면 비어 있는 겁니다.

학생들한테 "시뮬레이터가 진짜 로봇을 얼마나 닮았나"를 직접 확인시키는 실습으로도 괜찮습니다. 숫자 하나가 결과를 어떻게 바꾸는지 눈으로 보게 되니까요.

같이 확인해볼 값들

파일을 여신 김에 몇 가지 더 보시면 좋습니다.

센서 정의도 MJCF에 들어 있어요. 저희가 센 결과는 이렇습니다.

  • Booster K1 — 자세 값, 자이로
  • Booster T2 — 자세 값, 자이로, 속도계, 위치
  • Unitree G1 — 자이로 2개, 가속도계 2개

T2 쪽이 종류가 더 많습니다. 다만 어느 쪽이 낫다기보다 용도가 다릅니다. 속도계가 있으면 보행 제어에 쓰기 좋고, 가속도계가 많으면 충격 감지에 유리하죠.

한 가지 더. 마찰 손실과 감쇠 값은 네 파일 전부 0이었습니다. armature만 채워져 있고 나머지는 비어 있는 셈인데, 이건 시뮬레이터 기본값을 쓴다는 뜻입니다.

자주 받는 질문

armature가 없으면 학습 자체가 안 되나요?

됩니다. 시뮬레이터 안에서는 잘 걸어요. 문제는 그 결과를 실제 로봇에 올렸을 때 나타납니다.

값을 직접 넣을 수도 있나요?

넣을 수 있습니다. 다만 모터 사양을 알아야 해서, 제조사가 채워준 파일이 있으면 그쪽이 정확합니다.

MuJoCo를 꼭 써야 하나요?

아니요. Isaac Sim만으로 학습부터 배포까지 됩니다. MJCF는 값을 확인하는 용도로도 씁니다.

다른 회사 파일도 다 비어 있나요?

그렇게 말하면 안 됩니다. 저희가 확인한 건 G1 29DOF 파일 하나예요. 저장소가 여러 개라 다른 파일은 다를 수 있습니다.


여기 숫자는 공개된 MJCF 파일을 저희가 직접 열어 센 값입니다. 확인한 파일은 Booster K1·T1·T2와 Unitree G1 29DOF, 이렇게 네 개입니다.

  • #피지컬 AI
  • #MJCF
  • #MuJoCo
  • #Sim-to-Real
  • #휴머노이드 로봇
  • #로봇 실습