실습 2-A: 좌표 변환 체인과 쿼터니언

[SIM] 아래 명령은 저장소 루트가 아니라 ebook/book/02_physx_simulation 장 루트에서 실행한다.

목표

  • 변환 행렬의 곱셈 순서를 검증한다.
  • Euler convention과 quaternion 성분 순서를 명시한다.
  • round-trip 오차를 수치로 평가한다.

준비

cd ebook/book/02_physx_simulation
python3 -m venv .venv
source .venv/bin/activate
python -m pip install numpy
python code/transforms.py

절차

  1. world_from_table, table_from_object의 translation을 그림으로 그린다.
  2. world_from_object = world_from_table.compose(table_from_object) 결과를 기록한다.
  3. 다음 검사를 코드에 추가한다.
identity = world_from_object.inverse().compose(world_from_object).matrix()
print(np.max(np.abs(identity - np.eye(4))))
  1. table_from_object.compose(world_from_table)처럼 순서를 바꿔 결과가 왜 달라지는지 설명한다.
  2. yaw만 0°, 30°, 90°로 바꾸고 object 원점의 world 좌표를 표로 작성한다.
  3. pitch를 89°, 90°, 91°로 바꾸고 matrix/quaternion이 연속적으로 변하는지 확인한다.
  4. quaternion을 다른 API로 전달한다고 가정하고 (xyzw) -> (wxyz) adapter를 작성한다.

기록표

조건world positionquaternion xyzwround-trip max error
yaw 0°
yaw 30°
yaw 90°

토의

  1. 행렬 원소 오차가 0이 아닌 이유는 무엇인가?
  2. Euler angle이 불연속적으로 보이더라도 실제 회전은 연속적일 수 있는 이유는 무엇인가?
  3. 좌표계 이름을 변수명에 포함시키면 어떤 종류의 결함을 예방하는가?

완료 조건

  • 변환 방향과 convention을 보고서에 명시했다.
  • inverse/compose round-trip 오차를 수치로 제시했다.
  • 잘못된 quaternion 순서가 만드는 오류 사례를 하나 제시했다.

장비 없이 먼저 해보기

가상실습

실제 장비의 정밀한 동작을 재현하는 대신, 제어값을 바꾸고 결과를 관찰하는 실습 흐름을 안전하게 연습합니다.

Browser simulation

2링크 로봇팔 기구학

관절각을 직접 바꾸어 순기구학을 관찰하거나, 목표점을 정해 단순 역기구학 추종을 실행합니다.

개념 모형
실습 과제: 관절각을 바꿔 말단 위치를 예측한 뒤, 목표점을 이동하고 역기구학 추종 결과와 비교하세요.
초록: 목표 · 주황: 말단

말단 X

97.7mm

말단 Y

91.0mm

위치 오차

42.3mm

수동 관절 조작

  • ›대기: 목표점을 정하고 추종을 실행하세요.
단순화 안내: 지연, 마찰, 백래시, 센서 비선형성 등 실제 장비의 모든 특성을 재현하지 않습니다. 실물 적용 전에는 저속·제한된 작업공간·비상 정지 조건에서 다시 검증하세요.
가상실습 해설과 적용 범위

관절각 변경이 말단 위치에 주는 영향을 관찰합니다. 좌표계·회전 순서·링크 길이를 구분하고 목표에 도달하지 못하면 도달 가능 범위와 특이점을 확인하세요. OpenUSD 장면 편집이나 실제 로봇의 모든 관절을 재현하지는 않습니다.

직접 답하고 피드백 받기

답안은 이 브라우저에 저장됩니다. AI 평가는 학습을 위한 피드백이며 실제 코드 실행이나 장비 동작을 검증하지 않습니다.

1. 수행 결과와 근거

위 과제를 수행하고 설정값, 관찰 결과, 해석과 개선안을 작성하세요. 실제 장비 없이 한 경우 가상실습 결과임을 명시하세요.

0 / 8,000자 · 최소 10자
이 장의 예제 코드·설정 파일 (4)

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