본문으로 건너뛰기

M08.06 · 구동 인터페이스와 시뮬레이터 간 모델 이식

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 관절 명령·상태·링크 변환의 역할을 구분하고 가상 구동 인터페이스 표에서 필요한 연결을 설명한다.
  • URDF와 대상 장면의 길이·각도·축·영점 계약을 비교하여 가상 단위 변환과 제한 값을 계산한다.
  • 가상 모델 이식 보고서의 단계별 증거를 판정하고 물리·구동·재현성에 남는 검증 항목을 제안한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M08.01~05의 URDF·관성·JointState, M06.06의 방향/영점과 M07의 제어 한계가 선수다. 기본은 가상 계약표와 보고서의 종이 계산이며 실제 importer, ROS, 물리 엔진이나 장치를 실행하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

같은 position이라도 명령과 상태는 다르다

URDF는 링크와 관절의 모델이다. 관절 이름과 제한이 있다고 모터를 구동하는 구현이 생기는 것은 아니다. 목표를 받고 장치나 물리 엔진에 전달하는 계층, 현재 값을 읽는 계층, 상태를 발행하는 계층의 연결을 따로 정한다. 화면에서 팔이 움직여도 측정값을 강제로 그린 것인지, 물리 drive가 목표를 따라간 것인지 구별해야 한다.

Jazzy ros2_control의 command interface는 목표를 전달하는 쪽, state interface는 읽어 온 상태를 노출하는 쪽이다. 이름이 position으로 같아도 방향과 의미가 다르다. 가상 shoulder/position 명령이 0.5 rad이고 읽은 상태가 0.4 rad라면 목표와 상태의 차이는 0.1 rad다. 상태를 목표로 덮어쓰면 오차가 사라진 것처럼 보일 뿐 추종이 입증되지 않는다. velocity와 effort 명령도 각각 속도와 힘/토크 의미이므로 같은 숫자와 제어기를 무조건 바꿔 끼우지 않는다.

하드웨어 플러그인은 실제 장치 또는 가상 구현과 인터페이스를 연결한다. 선언한 이름·자료형·단위·지원 조합과 실제 구현이 맞아야 한다. joint_state_broadcaster는 상태를 토픽으로 내보내며 자체적으로 운동 목표를 받는 제어기는 아니다. M08.05의 RSP는 그 상태와 모델로 링크 변환을 계산한다. 따라서 ‘URDF→RSP→tf’가 보인다는 증거만으로 ‘명령→구동→피드백’ 경로까지 통과했다고 할 수 없다. Jazzy 인터페이스 설명을 연결의 기준으로 읽는다.

숫자 복사 대신 물리량을 보존한다

이식은 파일 확장자를 바꾸는 작업보다 넓다. 원본의 링크/관절 이름과 축·영점, 길이와 각도, 질량과 관성, 충돌 근사, 고정/이동 베이스, mimic 관계를 대상 표현으로 보존하는지 살핀다. 어떤 기능이 지원되는지와 자동 변환 여부는 importer 및 대상 버전에 따라 확인한다. URDF와 USD 또는 다른 장면 표현의 기능이 완전히 일치한다고 가정하지 않는다.

URDF의 회전 위치/제한은 rad다. 예를 들어 OpenUSD의 UsdPhysicsRevoluteJoint lowerLimit/upperLimit 속성은 degree 단위다. 이것은 그 스키마 속성의 계약이며 모든 시뮬레이터 제어 API가 degree라는 뜻은 아니다. 제어 API가 rad를 받을 수도 있으므로 ‘파일 속성’과 ‘실행 API’의 문서를 각각 확인해야 한다. 각도 θ의 변환은 다음과 같다. π rad=180 degree를 이용하며 기호 θ_rad와 θ_deg는 같은 각도의 서로 다른 수치 표현이다.

θdeg=θrad180π.\theta_{deg}=\theta_{rad}\frac{180}{\pi}.

관절 제한 [−1,1] rad는 약 [−57.2958,57.2958] degree다. USD 제한 속성에 [−1,1]을 그대로 넣으면 의도한 범위보다 약 57.3배 좁다. 그러나 rad를 받는 제어 API의 목표 0.5에는 이 변환을 또 적용하면 안 된다. 변환의 위치와 횟수를 계약표에 적어 중복 환산을 막는다.

길이도 장면 단위를 확인한다. OpenUSD의 metersPerUnit은 장면 길이 단위 하나가 몇 m인지 나타낸다. 예제는 모든 상위/기하 scale이 1이고 최종 변환된 길이 숫자를 비교한다고 가정한다. metersPerUnit=0.01 m/unit인 장면에서 0.2 m는 20 unit이다. 0.2 unit을 그대로 쓰면 0.002 m여서 100배 작다. 상위 scale이 있으면 raw translate 숫자만 보고 이 계산을 적용하지 말고 전체 변환을 반영한 길이를 확인한다. 메타데이터만 바꾼 것이 기존 모든 자산의 좌표를 의도대로 고쳐 준다고 가정하지 않는다.

단위가 맞아도 축이 뒤집히거나 영점이 다르면 자세가 틀린다. 같은 모델에서 기준 q=0과 작은 양의 q에 대한 점 좌표를 비교하면 방향/영점을 분리할 수 있다. 예를 들어 z축 회전 팔의 길이가 0.2 m라면 q=0에서 끝점은 (0.2,0,0), 허용 범위 안의 q=0.5 rad에서 약 (0.175517,0.095885,0) m다. 대상이 (0.175517,−0.095885,0)이면 길이는 맞아도 방향이나 프레임 해석을 더 확인해야 한다. 모델 좌표를 바꾸는 회전과 관절 명령 부호 반전을 아무 근거 없이 동시에 적용해 오차를 숨기지 않는다.

표시·기구학·물리·제어를 따로 판정한다

이식 보고서는 무엇이 확인됐는지 단계별로 남긴다. 첫째 자산 경로/누락/스케일과 표시, 둘째 링크 트리/관절 종류/축/영점/제한/mimic 및 몇 개 자세의 기구학, 셋째 질량/COM/관성/충돌 형상과 물리 설정, 넷째 명령·상태·구동 방식과 시간 계약이다. 앞 단계가 맞는다고 뒤 단계가 자동 통과하지 않는다. 고정 베이스가 떠다니는 모델로 바뀌거나 collision이 빠졌다면 같은 초기 자세에서도 운동은 달라질 수 있다.

순간 상태 설정은 한 시점의 위치를 직접 바꾸는 방식이고 물리 drive는 힘/토크와 제어 규칙을 통해 목표를 따라가게 하는 방식이다. 둘을 같은 추종 실험으로 비교하면 안 된다. drive 이득/포화/마찰·접촉·시간 간격·solver 설정과 초기 상태에 따라 응답이 달라진다. 같은 메시를 불러왔다는 이유로 같은 접촉력이나 실제 로봇 응답이 재현됐다고 주장하지 않는다. 물리 엔진별 수치 차이와 단순화 모델의 한계도 보고한다.

가상 비교의 허용 오차를 미리 정하면 ‘비슷해 보임’을 줄일 수 있다. 교육용 기구학 길이 오차 허용을 0.001 m로 정하고 기대 길이가 0.200 m, 보고 길이가 0.1995 m라면 절대 오차 0.0005 m로 그 항목은 통과다. 0.002 m라면 오차 0.198 m로 실패다. 이 기준은 이번 가상 길이 비교용이며 실물 정확도나 안전 정격이 아니다. 길이 통과가 관성이나 제어 성능 통과도 아니다.

원본 모델/자산 개정과 해시, exporter/importer와 대상 엔진의 실제 버전, 옵션과 경고, 단위 변환, 초기 조건과 판정 허용치를 기록한다. 경고 없이 열렸다는 사실은 소비자가 읽었다는 증거이며 실물 검증은 아니다. 기존 1.3 USD와 3.6 브리지를 읽을 때도 상태 미러링·물리 구동·실물 재현의 근거를 나누어 연결한다.

관련 기존 자료 · 보충해서 읽기

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    3.1 SO-101 기구학 모델

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    1.5 Isaac Sim-ROS 2 브리지 설계

    목표 일부 관련

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

아래는 실제 importer 출력이 아닌 가상 이식 보고서다. 원본 팔 길이는 0.200 m, 관절 제한은 [−1,1] rad, 명령 position=0.5 rad, 기록 상태 position=0.4 rad다. 대상 stage는 0.01 m/unit이며 모든 scale은 1이다. 대상의 degree 제한 속성은 [−1,1], 최종 팔 길이는 0.2 unit으로 보고됐다. 화면은 표시되지만 collision/관성 및 구동 플러그인 검토란은 비어 있다. 비교 길이 허용 오차는 0.001 m다.

  1. 명령/상태/RSP의 역할을 구분하고 목표 오차를 계산한다. 상태 발행만으로 구동 경로가 확인되는지 설명한다.
  2. 보존해야 할 대상 길이와 degree 제한을 계산하고 보고값의 물리 길이/오차를 판정한다. 같은 축/영점인지 확인할 두 자세도 제안한다.
  3. 표시 통과로 전체 이식을 승인할 수 있는지 판단한다. 물리/구동/재현성에서 각각 추가로 필요한 증거를 제안한다.

관찰은 역할표·변환 계산·보류 근거로 나누어 적는다. 막히면 길이 unit을 m로 바꾼 뒤 원본과 비교한다. 빈 보고란을 기본값이 맞다는 뜻으로 채우지 않는다. 설치나 실제 상태 설정/구동은 하지 않는다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

가상 인터페이스에 elbow/position 명령 0.6 rad와 상태 0.45 rad가 있다. 차이는 얼마인가? joint_state_broadcaster와 RSP가 이 차이를 줄이는 구동 제어기인지 역할을 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

모든 scale이 1인 stage의 단위가 0.01 m/unit이다. 원본 길이 0.3 m와 URDF 제한 ±π/2 rad를 옮길 때 최종 길이 숫자와 USD RevoluteJoint 제한 속성 값은 무엇인가? 대상 제어 API는 rad라고 명시돼 있다면 목표 0.5 rad도 degree로 바꾸는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

모델이 표시되고 세 자세의 기구학 오차가 기준 안에 들어왔다. 충돌/관성/베이스 고정 여부와 drive/상태 설정 방식, 도구 버전이 기록되지 않았다. 무엇까지 통과했다고 말할 수 있고 무엇을 추가 확인해야 하는가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.