Unitree G1 Sim-to-Real 실패 진단: 발 접촉·관절 지연·마찰·질량 오차를 찾는 순서

한 팀은 MuJoCo에서 수백 회 넘어지지 않은 G1 보행 정책을 갖고 있지만 실물은 첫 발을 디딜 때 옆으로 무너진다. 다른 팀의 정책은 평평한 바닥에서는 버티다가 손에 작은 물체를 들면 진동한다. 둘 다 Sim-to-Real 실패지만 전자는 접촉·상태추정·초기 자세, 후자는 질량 분포·지연·제어 여유를 먼저 의심해야 한다.

진단의 목적은 가장 그럴듯한 원인을 고르는 것이 아니라 후보를 한 번에 하나씩 탈락시키는 데 있다. 시뮬레이션과 실물에 공통으로 남길 신호, 서로 직접 비교할 수 없는 신호, 안전하게 바꿀 수 있는 매개변수를 먼저 나눈다. 실물 시험은 지지 장치와 제한된 동작에서 시작하며 낙상 횟수를 늘려 증거를 모으는 방식은 피한다.

실제 로봇 작업 공간과 정합된 3차원 월드 모델을 나란히 보여 주는 개념 이미지
특정 모델의 출력이나 성능 증거가 아닌, 실제 장면·공간 표현·행동 계획의 관계를 설명하기 위한 AI 생성 개념 이미지입니다.

시뮬레이션과 실물에서 같은 이름으로 남길 신호

첫 비교 묶음은 정책 입력과 출력이다. 관절 위치·속도, IMU 자세와 각속도, 명령 속도, 정책이 낸 목표 관절값을 같은 순서와 단위로 저장한다. 여기에 제어 주기와 타임스탬프를 붙인다. 한쪽 로그가 정책 실행 전 필터값이고 다른 쪽이 센서 원시값이면 곡선을 포개도 의미가 없다.

둘째는 접촉 사건과 몸통 운동이다. 발 접촉 시작·종료, 발 미끄럼, 몸통 높이와 기울기, 명령 대비 실제 속도를 보행 주기 기준으로 정렬한다. 휴머노이드 접촉·IMU 상태추정에서 다룬 것처럼 접촉 추정과 IMU 오차가 섞이면 정책 자체의 실패처럼 보일 수 있으므로 추정값과 관측 근거를 함께 남긴다.

Unitree RL Lab 공식 저장소는 실물 배포 전에 MuJoCo sim-to-sim 검증 절차와 명시적 네트워크 설정을 제공한다. sim-to-sim 통과는 정책 파일과 인터페이스가 이어지는지 보는 중간 단계이지 실제 마찰·구동기·지연을 재현했다는 인증은 아니다.

그래프가 닮아도 그대로 비교할 수 없는 값이 있다

시뮬레이터의 접촉력과 실물 모터 전류를 같은 물리량으로 놓으면 안 된다. 시뮬레이터 값은 접촉 모델과 solver 설정의 산출물이고, 실물 전류는 모터·감속기·마찰·제어기를 거친 간접 신호다. 직접 일치보다 사건의 순서와 변화 방향을 비교한다.

비교 대상시뮬레이션에서 보이는 것실물에서 보이는 것안전한 해석
발 접촉접촉 solver의 힘·penetration·상태접촉 센서 또는 추정·발 미끄럼·몸통 반응접촉 시점과 보행 위상부터 맞추고 절대 힘은 별도 보정
관절 응답명령과 모델 관절 상태센서 관절 상태·전류·통신 및 구동 지연위상 지연과 overshoot를 비교
마찰설정한 정·동마찰 계수와 접촉 모델바닥·발 재질·오염·하중이 합쳐진 결과미끄럼 임계와 반복 분산으로 추정
질량URDF·asset에 입력한 링크 질량·관성케이블·커버·탑재물까지 포함한 실제 분포총질량뿐 아니라 무게중심 변화 확인
성공률선택한 seed·terrain·외란의 결과제한된 바닥·온도·배터리·지지 조건의 결과시험 범위를 벗어나 일반화하지 않음

표의 목적은 데이터가 다르다는 이유로 비교를 포기하는 것이 아니다. 공통 사건을 기준으로 시간을 맞추고 각 센서가 무엇을 대리하는지 적는다. 예를 들어 실물의 발 접촉 센서가 없다면 발 속도와 몸통 가속도에서 추정한 사실, 그 추정이 충격 구간에서 불확실하다는 점을 함께 남긴다.

넘어지는 모양이 첫 번째 비교축이다

첫 발이 닿기 전부터 자세가 늦으면 관측·추론·명령 지연과 초기 상태를 본다. 발이 닿는 순간만 급격히 기울면 접촉 시점, 지면 높이와 충격 응답이 우선이다. 몇 걸음 뒤 발이 바깥으로 밀리면 마찰과 보행 위상 오차, 몸통이 서서히 한쪽으로 기울면 질량·관성·센서 바이어스를 후보로 둔다. 이는 판정표가 아니라 실험 순서를 정하는 단서다.

관절별 명령과 실제 상태의 시간차를 보행 위상에 겹쳐 본다. 모든 관절이 비슷하게 늦으면 제어 주기나 통신·추론 경로를, 특정 관절만 늦거나 진동하면 구동기·마찰·게인과 기계 상태를 살핀다. 지연을 보정하려고 게인을 먼저 높이면 진동과 충격이 커져 원인과 결과가 뒤바뀔 수 있다.

배터리 상태와 온도도 실행 조건으로 남긴다. 하지만 전압이 낮은 한 번의 실패를 구동기 성능 저하로 확정하지 않는다. 같은 정책과 지지 조건에서 반복하고, 명령·상태·전류와 실패 위상이 함께 바뀌는지 확인한다.

한 번에 하나만 바꿔 배포 오차를 좁힌다

배포 파이프라인부터 잠근다. 정책 체크포인트, 정규화 통계, 관측 순서, 제어 주기, 클립 범위와 기본 관절 자세가 학습 때와 같은지 비교한다. 이 항목 하나가 달라지면 물리 모델을 조정해도 실패가 남는다. G1 MuJoCo·RL Gym·Isaac Lab 연결 가이드는 도구 선택과 실행 경로를 확인하는 선행 자료로 쓰고, 현재 글은 실패 분리에 집중한다.

그다음 실물에서 관측한 지연·질량·관절 한계처럼 측정 가능한 값부터 시뮬레이션에 반영한다. 값을 바꿀 때마다 동일한 seed 묶음과 외란 세트로 재실행하고 기존 성공 조건이 무너지지 않는지 본다. 마찰, 질량, 지연을 한꺼번에 바꾸면 실물과 닮아 보여도 어떤 항목이 정책을 살렸는지 알 수 없다.

실물 재시험은 가장 낮은 위험의 동작으로 내려간다. 제자리 자세 유지, 작은 무게중심 이동, 한 발 하중 전환처럼 실패 위상을 재현할 수 있는 최소 동작을 찾는다. 여기서 로그가 맞아야 걷기로 확대한다.

랜덤화 범위는 지원되는 증거만큼만 넓힌다

Unitree G1 학습 설정 예시는 마찰, base mass와 push 같은 도메인 랜덤화 항목을 보여 준다. 이 범위는 해당 예제의 설정이며 모든 G1, 탑재물과 바닥에 그대로 적용할 제조사 공차가 아니다. 실제 자산과 측정 근거를 기준으로 범위를 다시 정한다.

조정 항목근거로 삼을 자료검증할 실패 서명범위를 넓히기 전 질문
바닥·발 마찰재질·오염 조건과 제한된 미끄럼 시험접촉 뒤 발 속도·몸통 기울기운영 바닥의 실제 범위를 포함하는가
링크·탑재 질량실측 질량·무게중심·장착 위치저주파 자세 오차·관절 부하 변화총질량만 맞고 분포가 틀리지 않았는가
관절·통신 지연명령과 상태의 타임스탬프보행 위상 지연·overshoot센서·추론·통신을 합친 지연인지 구분했는가
구동기 게인제조사 설정·제한된 step 응답특정 관절 진동·응답 부족기계 마찰이나 포화 문제를 게인으로 숨기지 않는가
외란·push실제 작업의 접촉·충격 범위회복 시간·발 재배치안전하게 재현하고 측정할 수 있는가

Isaac Lab 이벤트 API는 질량·재질 마찰·actuator gain·관절 항목을 무작위화하는 기능을 제공한다. 기능이 있다는 사실과 적절한 범위를 안다는 것은 다르다. 범위를 넓혀 평균 성공률이 올라도 기준 환경의 제어 품질과 실물 실패 위상이 개선됐는지 따로 본다.

실패 장면별로 다음 실험을 다르게 고른다

접촉 직후에만 발이 미끄러진다면 바닥 재질과 발 패드 상태를 고정하고 마찰 범위를 좁혀 재학습하기 전에 시뮬레이션의 접촉 시점과 발 속도를 맞춘다. 몸통이 천천히 기울면 탑재물과 케이블을 포함한 무게중심을 재측정한다. 명령보다 상태가 일정 시간 늦으면 지연 주입 실험으로 같은 위상 오차가 재현되는지 본다.

고전적인 Sim-to-Real 연구인 Hwangbo 등 원 논문은 system identification, actuator model과 latency의 역할을 보여 준다. 다만 이 연구 대상은 사족보행 로봇이므로 G1의 성능 수치나 보행 안정성을 직접 증명하지 않는다. 가져올 것은 오차를 측정하고 모델링하는 방법이며 결과 숫자는 아니다.

여러 변경 뒤 실물이 좋아졌다면 하나씩 되돌려 기여를 확인한다. 되돌림 없이 성공 사례만 남기면 다음 정책에서 같은 조합을 반복해야 하고 원인이 다시 숨는다.

아직 모르는 값을 명시해야 재시험이 빨라진다

진단 보고서는 정답 목록이 아니라 미확인 가정 목록으로 끝내는 편이 유용하다. 센서 지연을 합산값으로만 아는지, 발 마찰이 온도·오염에 따라 바뀌는지, 케이블이 특정 자세에서 힘을 주는지 적는다. 다음 실험은 가장 위험한 미확인 가정을 가장 작은 동작으로 검증하도록 고른다.

  • 정책 입력 순서·단위·정규화와 체크포인트가 학습 환경과 동일한지 확인한다.
  • 관절 명령·상태, IMU, 접촉 사건과 정책 실행 시각을 공통 시계에 맞춘다.
  • 넘어지기 전 최초로 갈라지는 신호와 보행 위상을 기록한다.
  • 마찰·질량·지연·게인 중 하나만 바꿔 sim-to-sim과 제한된 실물 동작을 반복한다.
  • 성공뿐 아니라 기존 조건의 퇴행, 반복 분산과 복구 동작을 남긴다.
  • 확인되지 않은 공차와 센서 대리값을 결과의 제한으로 명시한다.

마지막 합격은 시뮬레이션 점수가 아니라 정의한 실물 조건에서 반복 가능한 동작과 안전한 실패·복구다. 한 바닥에서 몇 번 걸었다는 결과를 모든 탑재물과 속도로 넓히지 않는다.

Unitree G1 Sim-to-Real 실패 진단 실무 질문

처음 진단할 때 마찰과 질량 중 무엇부터 바꿔야 하나요?

매개변수보다 배포 일치와 최초 실패 위상을 먼저 본다. 정책 입력·정규화·제어 주기가 같다면 접촉 직후 미끄럼에는 마찰, 느린 자세 편향에는 질량·무게중심, 전체 관절의 위상 지연에는 지연을 우선 후보로 둔다. 한 번에 하나만 바꾼다.

도메인 랜덤화를 넓히면 실물 실패가 자동으로 줄어드나요?

그렇지 않다. 근거 없는 넓은 범위는 학습을 어렵게 하거나 기준 조건의 성능을 낮출 수 있다. 실제 측정과 운영 범위로 랜덤화를 정하고, 실물에서 관측한 실패 서명과 기존 조건의 퇴행을 함께 검증한다.

자료 마지막 확인: 2026년 8월 26일