본문으로 건너뛰기

M02.02 · 회전·동차변환·SO(3)/SE(3)와 쿼터니언

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

전체 커리큘럼

학습 안내

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

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

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

학습 목표

  • 열벡터·오른손 기준과 프레임 방향을 명시하고 SO(3)·SE(3)의 조건을 설명한다.
  • 작은 점 좌표를 동차변환하고 합성과 역변환을 프레임·수치로 검산한다.
  • 단위 쿼터니언의 성분 순서·정규화·부호 이중표현을 계산하고 잘못된 입력을 구분한다.

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

권장 선수

M02.01의 열벡터·행렬 곱·내적을 사용한다. 모든 예제는 오른손 기준축과 열벡터를 쓰며, 길이는m, 각도는rad로 계산한다. NumPy·ROS 설치는 필요 없다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

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

같은 점을 어느 좌표계에서 적는가

작업대 A와 카메라 B가 서로 다른 원점·축을 쓰면 같은 물체도 다른 숫자로 표현된다. 프레임(frame)은 이런 원점과 방향 축의 묶음이다. 이 단위에서 ARB^AR_B는 B의 좌표 성분을 A의 좌표 성분으로 옮기는3×3 행렬이다. 열마다 B의 x/y/z 단위축을 A에서 표현한 값을 적는다. 원점이 같을 때 같은 점의 벡터는 Av=ARBBv^Av={}^AR_B{}^Bv로 바뀐다. 위첨자는 결과 또는 입력을 적은 프레임 이름이다.

같은 점, 서로 다른 프레임. 프레임은 원점과 축의 묶음이다. 같은 점 P의 좌표를 B에서 A로 바꾸는 것과 점을 실제로 이동시키는 것은 다르다. +z 쪽에서 xy 평면을 본 개념도이며 수치 예제와는 별개다.그림 원본 크기로 보기

그림 M02.02-1. 프레임은 원점과 축의 묶음이다. 같은 점 P의 좌표를 B에서 A로 바꾸는 것과 점을 실제로 이동시키는 것은 다르다. +z 쪽에서 xy 평면을 본 개념도이며 수치 예제와는 별개다. 직접 제작.

이 식은 물체를 실제로 움직이지 않고 같은 기하 대상을 다른 기준으로 적는 좌표 변경이다. 같은 숫자 행렬을 한 고정 프레임의 벡터를 실제 회전시키는 능동 변환에도 쓸 수 있지만 무엇을 바꾸는지 선언해야 한다. 행렬을 보고 어느 쪽이 입력인지 추측하지 말고 “B표현→A표현”을 먼저 읽는다. 오른손 기준에서 z축 양의 회전은 +z쪽에서 원점을 향해 xy평면을 내려다볼 때 x축을 y축 쪽으로 돌리는 방향이다.

SO(3)는 모든3×3 행렬이 아니다

회전 행렬 R의 열은 길이1이고 서로 수직이어야 한다. 수식으로 RTR=IR^TR=I이며 T는 전치, I는3×3 항등행렬이다. 여기에 행렬식 det⁡R=+1\det R=+1 조건을 더한 집합을 SO(3), 특수 직교군이라고 부른다. “군”은 여기서 회전을 합성하거나 되돌려도 같은 회전 집합 안에 남는 구조를 나타낸다. 입문에서는 조건을 검사하는 뜻부터 이해하면 된다. Modern Robotics 저자 설명도 이 열벡터와 조건으로 방향을 표현한다.

라디안(rad)은 원호 길이를 반지름으로 나눈 각도 단위이며 π\pirad=180도다.90도는 π/2\pi/2rad이고 cos=0,sin=1이다. B축이 A축에 대해 z축으로90도 돌아 있다면 다음과 같이 놓을 수 있다.

R=ARB=[0−10100001].R={}^AR_B=\begin{bmatrix}0&-1&0\\1&0&0\\0&0&1\end{bmatrix}.

첫 열은 B의 x축이 A의 y방향임을 뜻한다. 각 열의 길이1과 내적0을 확인하면 직교 조건을 읽을 수 있다. 이 R은 z행/열이(0,0,1)이어서 행렬식은 남은2×2부분으로 계산할 수 있다. 즉 det R=1×(0×0−(−1)×1)=1이다. 반사 행렬 diag(−1,1,1)의 행렬식은 대각 성분의 곱(−1)×1×1=−1이다. 열끼리 수직이어도 이 반사는 SO(3)의 회전이 아니다. 열벡터 능동 합성에서 고정축 X→Y→Z를 차례로 적용하면 오른쪽부터 작용하는 RzRyRxR_zR_yR_x가 된다. 곱을 왼쪽부터 적용한다고 읽거나 축 적용 순서의 이름을 생략하지 않는다.

원점 이동까지 묶는 동차변환

B원점의 A좌표를 ApB=(1,2,0)T^Ap_B=(1,2,0)^T m라고 하자. 같은 점의 좌표는 Ap=ARBBp+ApB^Ap={}^AR_B{}^Bp+{}^Ap_B다. 행렬을 한 번 곱하는 표기로 묶기 위해 점 좌표 끝에1을 붙인다. 이를 동차좌표라고 한다.

ATB=[Rp0 0 01],[Ap1]=ATB[Bp1].^AT_B=\begin{bmatrix}R&p\\0\ 0\ 0&1\end{bmatrix},\qquad \begin{bmatrix}{}^Ap\\1\end{bmatrix}={}^AT_B\begin{bmatrix}{}^Bp\\1\end{bmatrix}.

여기서 오른쪽 위 p는 ApB^Ap_B의 약식이고 아래 행은(0,0,0,1)이다. R이 SO(3)에 있고 p가3차원 이동인 이런4×4 변환들의 집합이 SE(3), 특수 유클리드군이다. 점과 달리 순수 방향 벡터에는 이동을 더하지 않으며 동차 표현의 마지막 성분을0으로 둘 수 있다.

B에서 점(1,0,0)m는 먼저 R에 의해(0,1,0)이 되고 원점 이동을 더하면 A에서(1,3,0)m다. 되돌릴 때에는 이동을 먼저 빼고 R의 역인 RTR^T를 곱한다. 따라서 역변환은 다음과 같다.

(ATB)−1=BTA=[RT−RTp0 0 01].(^AT_B)^{-1}={}^BT_A=\begin{bmatrix}R^T&-R^Tp\\0\ 0\ 0&1\end{bmatrix}.

이 예에서 RTp=(2,−1,0)TR^Tp=(2,-1,0)^T라 역의 이동은(−2,1,0)이다. 단순히 원래 이동을 음수로 바꾼(−1,−2,0)이 아니다. A점(1,3,0)에서 원래 p를 빼면(0,1,0), R전치로 바꾸면 B점(1,0,0)으로 돌아온다.

C프레임도 있다면 ATC=ATBBTC^AT_C={}^AT_B{}^BT_C처럼 중간 B를 맞춰 합성한다. 오른쪽 C→B를 먼저 적용한 뒤 B→A로 간다. B와 C의 방향이 같고 C원점이 B에서(1,0,0)이면 C원점은 A에서(1,3,0)이다. 숫자 곱이 가능하더라도 프레임이 이어지지 않는 순서면 의미가 맞지 않는다.

네 성분으로 방향을 표현할 때의 계약

단위 쿼터니언은 방향을 네 성분으로 표현하는 또 다른 방법이다. 여기서는 scalar first q=(w,x,y,z)q=(w,x,y,z) 순서로 쓴다. 단위 회전축 n과 각도 θ에 대해 다음과 같이 쓴다.

q=(cos⁡(θ/2),nxsin⁡(θ/2),nysin⁡(θ/2),nzsin⁡(θ/2))q=(\cos(\theta/2),n_x\sin(\theta/2),n_y\sin(\theta/2),n_z\sin(\theta/2))

n의 길이는1이고 θ는rad다. z축90도는 θ/2=π/4이며 sin(π/4)=cos(π/4)=√2/2이므로 (2/2,0,0,2/2)(\sqrt2/2,0,0,\sqrt2/2)로 위 R과 같은 방향 관계를 표현한다.

단위 조건은 w2+x2+y2+z2=1w^2+x^2+y^2+z^2=1이다. 길이가0이 아닌 값은 길이로 나누어 정규화할 수 있으나,0벡터는 그렇게 회전으로 고칠 수 없다. q와 모든 성분 부호를 바꾼−q는 같은 회전을 나타낸다. 따라서 성분의 차이가 크다는 이유만으로 방향이 크게 다르다고 단정하지 않는다. 네 숫자를 쓰지만 단위 제약과 이중표현이 있어 자유롭게 독립적인 네 회전각이 아니다.

라이브러리의 성분 순서는 데이터 계약이다. ROS2 공식 튜토리얼은 메시지 성분을 x,y,z,w 순서로 다룬다. 이 단위의 q를 그 순서로 옮기면(0,0,√2/2,√2/2)다. 이름이 quaternion이라고 같아도 순서·프레임·정규화·합성 순서를 생략하면 다른 방향이 된다.

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

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

    2.2 좌표계와 4×4 동차 변환

    목표 일부 관련

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

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

    4.2 Isaac Sim/USD, ROS 2, OpenCV 좌표 변환

    목표 일부 관련

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

  • 기존 요약 레슨 · 관련 기존 자료 · 보충 참고

    좌표계와 동차 변환 읽기

    목표 일부 관련

    핵심 요약 레슨입니다. 자세한 유도·수식·코드는 연결된 상세 본문을 함께 읽으세요.

학습 범위와 한계

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

실습 필수

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

종이에 본문의 R, B원점 p=(1,2,0)m, B점 b=(1,0,0)m를 적는다.

  1. 열벡터의 길이/직교·행렬식 조건과 R의 입력/출력 프레임을 적는다. diag(−1,1,1)이 왜 같은 종류의 회전이 아닌지 비교한다.
  2. b를 A점으로 바꾸고 역변환으로 되돌린다. 역의 이동 −R전치p를 계산한다. C원점이 B에서(1,0,0)이고 방향이 같을 때 C→B→A 합성도 확인한다.
  3. z축90도의 scalar-first q를 구하고 길이를 확인한다. ROS식 성분 순서로 다시 적고−q의 방향,0쿼터니언의 문제를 설명한다.

판정은 프레임/집합 조건, 순서 있는 좌표 계산, quaternion 계약의 세 요소다. 막히면 회전 결과와 원점 이동을 다른 줄에 쓰고, q의 네 성분 위에 w/x/y/z를 먼저 적는다. 단위를 모른 채90이라는 숫자를 삼각함수에 바로 넣지 않는다.

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

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

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

  • 기존 실습 원고 · 관련 기존 자료 · 보충 참고

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

    목표 일부 관련

    실습 원고 참조. 로컬/ROS/Isaac/GPU/실물 실행과 장비 없는 기본 경로의 목표 검수는 미실시. 연결된 원고의 환경·절차를 확인하세요. 원고 열람은 실습 수행을 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    02_physx_simulation/code/transforms.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

학습 범위와 한계

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

평가·해설 필수

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

확인 문제 Q1

3×3 행렬의 열 길이가1이고 서로 수직이면 무조건 SO(3)인가? 추가 조건과 반례를 들고, ARB^AR_B의 입력/출력 프레임을 설명하라.

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

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

확인 문제 Q2

본문 R,p를 유지하고 B점(0,1,0)m를 A로 바꾼 뒤 역으로 되돌려라. 역변환 이동을 단순−p로 쓰면 안 되는 이유와 합성 ATBBTC^AT_B{}^BT_C의 적용 순서를 적어라.

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

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

확인 문제 Q3

scalar-first로 받은 q=(2,0,0,2)를 정규화하고 ROS 순서로 옮겨라.−q와 방향을 비교하고 q=(0,0,0,0)에도 같은 절차를 적용할 수 있는지 설명하라.

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

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

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

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    `geometry_msgs/Quaternion`과 `Gf.Quatd` 사이 변환에서 발생할 수 있는 오류를 설명하라.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    기존 교재 해설·평가 기준을 참고할 수 있습니다. 답안 평가 후 화면의 비교 항목도 확인하세요.

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    `Rz(yaw) Ry(pitch) Rx(roll)`과 `Rx Ry Rz`가 다른 이유를 예로 설명하라.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    \(q\)와 \(-q\)가 같은 회전을 나타내는 성질이 interpolation 구현에 주는 영향을 설명하라.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 보고서 · 관련 기존 자료 · 보충 참고

    실습 보고서 · 기존 원고와 평가 안내

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    q와 -q가 같은 회전이라는 사실을 데이터셋 loss 설계에서 어떻게 처리할 수 있는가?

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    두 quaternion 사이의 shortest-path SLERP를 구현하라. dot product가 음수일 때 처리에 주의한다.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    쿼터니언 시계열에서 \(q\)와 \(-q\)가 번갈아 저장될 때 단순 차분이 만드는 문제를 설명하라.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    기존 교재 해설·평가 기준을 참고할 수 있습니다. 답안 평가 후 화면의 비교 항목도 확인하세요.

학습 범위와 한계

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

참고 자료

학습 확인

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

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

학습 이동

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

전체 목차로 돌아가기 →

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