Position, Orientation and Coordinate Transformations
좌표 프레임은 강체에 부착되어 강체 사이의 상대 포즈(위치 및 방향)를 나타냅니다. 그런 다음 이 두 좌표 프레임 간의 기하학적 관계가 지정됩니다.
Position
다른 프레임에 대한 한 프레임의 원점 위치는 translation vector (3x1)로 설명할 수 있습니다. :
Orientation
한 좌표 프레임의 다른 프레임에 대한 방향은 rotation matrix (3x3) 로 설명할 수 있습니다.
Pose
homogeneous transformation matrix (4x4)는 동시에 다른 좌표 프레임을 기준으로 한 좌표 프레임의 위치와 방향을 나타냅니다.
Roll-Pitch-Yaw
강성 차체는 최대 3개의 회전 자유도를 갖습니다. 즉, 임의의 강성 차체 방향을 설명하는 데는 세 개의 독립적인 양만 있으면 충분합니다. 이러한 방향의 최소 표현 중 하나는 roll-pitch-yaw representation 표현이며, roll (\(\phi\)), pitch (\(\theta\)), 및 yaw (\(\psi\)) 각도로 정의됩니다.:
롤-피치-요(roll-pitch-yaw) 표현의 장점은 3개의 값만 필요하다는 것입니다. 이러한 값은 다른 표현에 비해 기하학적으로 이해하기 쉽습니다. 단점은 다음과 같습니다.:
값이 연속적이지 않습니다.
최종 방향은 다음에 따라 다릅니다.
회전을 적용하는 순서입니다.
이동 축(intrinsic rotations) 또는 고정 축(extrinsic rotations)에 대한 회전 적용.
롤-피치-요(roll-pitch-yaw) 표현은 로봇 공급업체 사이에서 일반적입니다. 그러나 모든 로봇 공급업체가 동일한 규칙을 가정하는 것은 아닙니다. 롤-피치-요 각도를 다른 표현으로 변환하려면 규칙, 즉 회전 순서와 회전 순서가 고유한지 외부적인지를 이해하는 것이 필요합니다.
Axis-Angle / Rotation Vector
Axis-angle 표현은 다음을 설명합니다.
회전 방향의 축을 나타내는 단위 벡터(\(\boldsymbol{u}\))에 의한 회전입니다.
각도(\(\theta\))는 축에 대한 회전의 크기를 설명합니다.
총 4개의 매개 변수가 있습니다. 단위 벡터의 각 요소에 각도를 곱하는 것은 파라미터의 수를 최소화하기 위한 일반적인 방법이며, 그 결과는 회전 벡터(\(\boldsymbol{r}\))입니다.:
롤-피치-요 각도보다 축-각도 표현의 장점은 연속성과 회전 순서 문제가 없다는 것입니다. 그러나 물리적인 방향과 회전 벡터의 수치를 일치시키는 것은 어렵습니다. 또 다른 단점은 3D 포인트에 직접 회전을 적용할 수 없다는 것입니다. 이를 위해서는 다른 표현으로의 변환이 필요합니다.
Unit Quaternion
Unit quaternions 4개의 매개변수로 축 각도 표현을 인코딩하는 간단하지만 강력한 방법을 나타냅니다.
Unit quaternions은 회전 행렬보다 더 간결하고 수치적으로 안정적이며 효율적이기 때문에 두 좌표 프레임 간의 방향을 나타내는 가장 좋은 방법으로 간주됩니다. 롤-피치-요(roll-pitch-yaw) 표현과 비교할 때 Unit quaternions은 gimbal lock(방향을 고유하게 표현하는 것이 불가능)을 겪지 않습니다. 또한 축-각도 표현과 달리 Unit quaternions을 3차원 점에 직접 적용할 수 있습니다.
Coordinate Transformations
3D에서 강체의 모든 좌표 변환은 회전과 이동으로 표현될 수 있습니다. 예를 들어, 점(또는 점군)을 한 좌표계( \(b\) )에서 다른 좌표계( \(a\) )로 변환할 수 있습니다. 이는 rotation matrix 과 translation vector 를 사용하여 수행할 수 있습니다.
두 프레임 사이의 포즈를 설명하는 Homogeneous transformation matrix 를 로도 동일한 작업을 수행할 수 있습니다.
여기서 \(\widetilde{p}^{a}\) 와 \(\widetilde{p}^{b}\) 는 각각 벡터 \(p^{a}\) 와 \(p^{b}\) 의 동차 표현입니다.
위 방정식의 동차 변환 행렬 \(\boldsymbol{H}^{a}_{b}\) 는 다음을 나타냅니다.
프레임 \(b\) 점 \(p^{b}\) math:
a`의 점 :math:`p^{a}\(a\) 로 변환하는 연산(좌표 변환 행렬)프레임 \(b\) 에 대해 정의된 점 \(p^{b}\)
p^{b}를 프레임 \(a\) 에 대해 정의된 것처럼 표현하는 연산(좌표 변환 행렬)프레임 \(b\) \(a\) b`의 포즈(위치 및 방향)
프레임 \(a\) 에서 프레임 \(b\) 로의 변환(위치 및 방향)은 동차 변환 행렬로 표현됩니다.
코드 샘플에서는 이 변환 행렬에 대해 다음 표기법을 사용합니다: a_to_b_transform 또는 b_pose_in_a_frame.