같은 점을 어느 좌표계에서 적는가
작업대 A와 카메라 B가 서로 다른 원점·축을 쓰면 같은 물체도 다른 숫자로 표현된다. 프레임(frame)은 이런 원점과 방향 축의 묶음이다. 이 단위에서 는 B의 좌표 성분을 A의 좌표 성분으로 옮기는3×3 행렬이다. 열마다 B의 x/y/z 단위축을 A에서 표현한 값을 적는다. 원점이 같을 때 같은 점의 벡터는 로 바뀐다. 위첨자는 결과 또는 입력을 적은 프레임 이름이다.
그림 M02.02-1. 프레임은 원점과 축의 묶음이다. 같은 점 P의 좌표를 B에서 A로 바꾸는 것과 점을 실제로 이동시키는 것은 다르다. +z 쪽에서 xy 평면을 본 개념도이며 수치 예제와는 별개다. 직접 제작.
이 식은 물체를 실제로 움직이지 않고 같은 기하 대상을 다른 기준으로 적는 좌표 변경이다. 같은 숫자 행렬을 한 고정 프레임의 벡터를 실제 회전시키는 능동 변환에도 쓸 수 있지만 무엇을 바꾸는지 선언해야 한다. 행렬을 보고 어느 쪽이 입력인지 추측하지 말고 “B표현→A표현”을 먼저 읽는다. 오른손 기준에서 z축 양의 회전은 +z쪽에서 원점을 향해 xy평면을 내려다볼 때 x축을 y축 쪽으로 돌리는 방향이다.
SO(3)는 모든3×3 행렬이 아니다
회전 행렬 R의 열은 길이1이고 서로 수직이어야 한다. 수식으로 이며 T는 전치, I는3×3 항등행렬이다. 여기에 행렬식 조건을 더한 집합을 SO(3), 특수 직교군이라고 부른다. “군”은 여기서 회전을 합성하거나 되돌려도 같은 회전 집합 안에 남는 구조를 나타낸다. 입문에서는 조건을 검사하는 뜻부터 이해하면 된다. Modern Robotics 저자 설명도 이 열벡터와 조건으로 방향을 표현한다.
라디안(rad)은 원호 길이를 반지름으로 나눈 각도 단위이며 rad=180도다.90도는 rad이고 cos=0,sin=1이다. B축이 A축에 대해 z축으로90도 돌아 있다면 다음과 같이 놓을 수 있다.
첫 열은 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를 차례로 적용하면 오른쪽부터 작용하는 가 된다. 곱을 왼쪽부터 적용한다고 읽거나 축 적용 순서의 이름을 생략하지 않는다.
원점 이동까지 묶는 동차변환
B원점의 A좌표를 m라고 하자. 같은 점의 좌표는 다. 행렬을 한 번 곱하는 표기로 묶기 위해 점 좌표 끝에1을 붙인다. 이를 동차좌표라고 한다.
여기서 오른쪽 위 p는 의 약식이고 아래 행은(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의 역인 를 곱한다. 따라서 역변환은 다음과 같다.
이 예에서 라 역의 이동은(−2,1,0)이다. 단순히 원래 이동을 음수로 바꾼(−1,−2,0)이 아니다. A점(1,3,0)에서 원래 p를 빼면(0,1,0), R전치로 바꾸면 B점(1,0,0)으로 돌아온다.
C프레임도 있다면 처럼 중간 B를 맞춰 합성한다. 오른쪽 C→B를 먼저 적용한 뒤 B→A로 간다. B와 C의 방향이 같고 C원점이 B에서(1,0,0)이면 C원점은 A에서(1,3,0)이다. 숫자 곱이 가능하더라도 프레임이 이어지지 않는 순서면 의미가 맞지 않는다.
네 성분으로 방향을 표현할 때의 계약
단위 쿼터니언은 방향을 네 성분으로 표현하는 또 다른 방법이다. 여기서는 scalar first 순서로 쓴다. 단위 회전축 n과 각도 θ에 대해 다음과 같이 쓴다.
n의 길이는1이고 θ는rad다. z축90도는 θ/2=π/4이며 sin(π/4)=cos(π/4)=√2/2이므로 로 위 R과 같은 방향 관계를 표현한다.
단위 조건은 이다. 길이가0이 아닌 값은 길이로 나누어 정규화할 수 있으나,0벡터는 그렇게 회전으로 고칠 수 없다. q와 모든 성분 부호를 바꾼−q는 같은 회전을 나타낸다. 따라서 성분의 차이가 크다는 이유만으로 방향이 크게 다르다고 단정하지 않는다. 네 숫자를 쓰지만 단위 제약과 이중표현이 있어 자유롭게 독립적인 네 회전각이 아니다.
라이브러리의 성분 순서는 데이터 계약이다. ROS2 공식 튜토리얼은 메시지 성분을 x,y,z,w 순서로 다룬다. 이 단위의 q를 그 순서로 옮기면(0,0,√2/2,√2/2)다. 이름이 quaternion이라고 같아도 순서·프레임·정규화·합성 순서를 생략하면 다른 방향이 된다.