본문으로 건너뛰기

3.1 SO-101 기구학 모델

3.1.1 링크, 관절, 구동기의 구분

URDF(Unified Robot Description Format)는 로봇을 링크(link)와 관절(joint)의 트리로 표현한다. SO-101의 일반적인 의미론적 관절 순서는 다음과 같다.

순서의미대표 이름역할
1베이스 회전shoulder_pan작업 공간의 방위각 변경
2어깨 굽힘shoulder_lift팔의 높이와 반경 변경
3팔꿈치 굽힘elbow_flex도달 거리 변경
4손목 피치wrist_flex그리퍼 접근 각도 변경
5손목 롤wrist_roll그리퍼 축 주위 회전
6그리퍼gripper손가락 개폐, 팔의 pose DoF에는 미포함

이름은 LeRobot/URDF 버전에 따라 다를 수 있다. 이름을 정수 인덱스로 암묵적으로 치환하지 말고, 항상 메시지의 name 배열을 기준으로 재정렬한다. JointState의 position[i], velocity[i], effort[i]는 같은 인덱스의 name[i]에 대응하며, 각 배열은 비어 있을 수 있다. header는 관절 상태가 기록된 시각을 나타내며, 한 메시지에 담는 상태는 같은 시각을 나타내야 한다. 비동기 센서 값을 합칠 때는 먼저 공통 기준 시각으로 정렬·추정하고 원래 측정 시각과 사용한 정책·오차를 별도로 기록한다. 서로 다른 시각의 원시 값을 그대로 묶고 대략적인 시각 하나를 붙이는 것은 이 조건을 충족하지 않는다. ROS 2 JointState 공식 명세

3.1.2 URDF에서 읽어야 할 정보

회전 관절의 핵심 URDF 요소는 다음과 같다.

<joint name="elbow_flex" type="revolute">
  <parent link="upper_arm"/>
  <child link="forearm"/>
  <origin xyz="0 0 0.115" rpy="0 0 0"/>
  <axis xyz="0 1 0"/>
  <limit lower="-1.6" upper="1.6" effort="..." velocity="..."/>
</joint>
  • origin은 부모 링크에서 관절 프레임으로 가는 고정 변환이다.
  • axis는 관절 프레임에서 표현된 회전축이다.
  • lower, upper는 radian 단위의 위치 한계다.
  • velocity와 effort는 허용 가능한 변화율과 힘/토크 한계를 표현한다.

공식 SO-ARM100 저장소는 새로운 캘리브레이션 모델에서 관절 가상 영점(virtual zero)을 범위 중앙에 두며, 과거 모델은 팔을 수평으로 편 자세를 영점으로 사용한다. 서로 다른 영점 규약의 URDF와 캘리브레이션 JSON을 섞으면 같은 숫자가 다른 실제 자세를 의미한다.[TheRobotStudio, 2026]

3.1.3 URDF에서 USD Articulation으로

OpenUSD의 UsdPhysicsArticulationRootAPI는 여러 강체와 관절을 축약 좌표(reduced coordinate) 관절계로 묶는다. 회전 관절은 축, 상·하한, 위치/속도 드라이브의 강성(stiffness)과 감쇠(damping)를 가진다. URDF를 Isaac Sim으로 가져올 때 다음을 검토한다.

  1. 단위: URDF 길이는 관례상 m, 각도는 radian이다. USD 스테이지의 metersPerUnit, 회전 관절 한계의 단위와 임포터 변환을 확인한다.
  2. 축과 부호: 화면에서 회전 방향만 보고 맞다고 판단하지 말고, 작은 양의 관절 명령으로 축을 검증한다.
  3. 루트: 고정 베이스인지 부유 베이스(floating base)인지 명시한다.
  4. 질량과 관성: 시각 메시만 있는 링크에 임의의 물리 질량이 생성되지 않았는지 확인한다.
  5. 충돌 형상: 시각 메시와 충돌 메시를 분리한다. 복잡한 삼각 메시를 동적 충돌체로 그대로 쓰지 않는다.
  6. 드라이브: 너무 큰 stiffness는 수치적으로 불안정하거나 실물보다 과도하게 단단한 응답을 만든다.
  7. Mimic/그리퍼: 단일 구동기로 양쪽 손가락을 묶는 관계가 임포트 후 유지되는지 확인한다.

바퀴/서랍의 회전·병진 관절과 고정/부유 베이스를 비교하려면 M25.02 관절·Articulation Root로 이어간다. 부모 계층과 body0/body1 연결 그래프, root 표식과 world 고정 제약, 목표 입력과 실제 위치/속도 관측을 각각 구분한다.

USD Physics 명세는 관절계 루트, 관절, 강체 목록으로 articulation을 구성하며 회전 관절 한계와 드라이브를 명시한다.[OpenUSD, 2026]

변환 결과를 PhysX 전용 속성만으로 가정하지 않는다. Isaac Sim 6.2 URDF Importer는 mimic과 articulation의 Newton 스키마도 작성한다. 원본 규약·변환 옵션·작성된 API·선택한 런타임의 소비 여부를 나눠 확인하고, 가져오기에 성공했다는 이유만으로 그리퍼 연동이나 제어 동작을 승인하지 않는다.

그림 3-2. URDF에서 USD articulation으로 보존해야 할 정보

이 장의 예제 코드·설정 파일 (6)

이 장의 자가 점검·가상실습