MENU

휴머노이드·피지컬 AI

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

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

「시뮬에선 걷는데 실물에선 휘청?」 — 설정 파일 속 숨은 이유. 휴머노이드 교육 썸네일(질문과 도식).

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

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

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

armature가 무엇인가요?

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

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

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

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

이 값이 없으면 어떻게 되나요?

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

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

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

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

실제 MJCF 파일에는 값이 들어 있나요?

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

모터 회전 관성 값 개수. Booster K1 22개, T1 23개, T2 31개로 관절 수만큼 들어 있다.
모터 회전 관성 값 개수. Booster K1 22개, T1 23개, T2 31개로 관절 수만큼 들어 있다.

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

값이 없는 파일로 학습하면 앞에서 말씀드린 "가벼운 로봇" 문제가 생기니, 실습 전에 한 번 확인해 둘 만한 숫자입니다.

왜 URDF에는 이 값이 없나요?

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

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

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

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

실습에서는 어떻게 확인하나요?

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

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

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

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

  • Booster K1 — 자세 값, 자이로
  • Booster T2 — 자세 값, 자이로, 속도계, 위치

T2 쪽이 종류가 더 많습니다. 속도계가 있으면 보행 제어에 쓰기 좋죠.

한 가지 더. 마찰 손실과 감쇠 값은 세 파일 전부 0이었습니다.

MJCF 세 파일에서 armature는 관절 수만큼 채워져 있고 마찰 손실과 감쇠는 모두 0이다. armature만 채워져 있고 나머지는 비어 있는 셈인데, 이건 시뮬레이터 기본값을 쓴다는 뜻입니다.

자주 받는 질문

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

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

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

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

MuJoCo를 꼭 써야 하나요?

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

어떤 파일을 확인하신 건가요?

Booster K1 22DOF, T1 23DOF, T2 31DOF MJCF 세 개입니다. 같은 회사라도 다른 파일은 구성이 다를 수 있습니다.

이 글에서 확인한 것 · 확인하지 못한 것

  • 확인한 것 — Booster K1 22DOF · T1 23DOF · T2 31DOF MJCF 파일 세 개를 열어 armature 개수와 센서 정의, 마찰 손실·감쇠 값을 확인했습니다.
  • 확인하지 못한 것 — 같은 회사의 다른 파일은 구성이 다를 수 있습니다. 이 글은 파일 안의 값을 센 기록이며, 값의 유무에 따라 실제 로봇이 얼마나 휘청이는지 비교한 실험은 아닙니다.

다음 단계

이 글 다음에 이어서 읽으면 좋은 글입니다.


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

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