로보틱스에서의 좌표 변환
로보틱스 응용 분야에서는 로봇, 센서, 기타 객체의 위치를 정의하기 위해 다양한 좌표계를 사용할 수 있습니다. 일반적으로 3차원 공간에서 객체의 위치는 위치 값과 방향 값으로 지정할 수 있습니다. 이러한 값은 여러 가지 방식으로 표현할 수 있으며, 몇몇 표현은 특정 응용 분야에서만 사용됩니다. 평행 이동과 회전은 위치와 방향을 의미하는 또 다른 용어입니다. Robotics System Toolbox™는 로보틱스에서 일반적으로 사용되는 표현을 지원하며, 표현 간에 변환도 가능합니다. 이러한 표현을 3차원 점에 적용할 때 좌표계 간에 변환할 수 있습니다. 지원되는 표현은 그 사용법에 대한 간단한 설명 및 MATLAB®에서 상응하는 숫자와 함께 아래에 자세히 나와 있습니다. 각 표현의 이름은 약어가 있습니다. 약어는 이 툴박스에서 지원되는 인수와 변환 함수의 이름을 지정하는 데 사용됩니다.
이 섹션의 마지막 부분에서 이러한 표현 간의 변환을 위해 제공하는 변환 함수에 대해 알아볼 수 있습니다.
Robotics System Toolbox는 위치와 방향이 오른손 카테시안 좌표계로 정의된다고 가정합니다.
축-각도
약어: axang
3차원 공간에서의 회전으로, 벡터에 의해 정의된 고정 좌표축을 중심으로 하는 스칼라 회전으로 설명됩니다.
숫자 표현: 1×3 단위 벡터와 스칼라 각도가 결합된 1×4 벡터
예를 들어 y축을 중심으로 한 pi/2
라디안의 회전은 다음과 같습니다.
axang = [0 1 0 pi/2]
오일러 각
약어: eul
오일러 각은 강체의 방향을 설명하는 세 개의 각도입니다. 각 각도는 주어진 좌표 프레임 축을 중심으로 한 스칼라 회전입니다. Robotics System Toolbox는 두 가지 회전 순서를 지원합니다. 로봇 응용 분야에서는 'ZYZ'
축 순서가 일반적으로 사용됩니다. 또한 “RPY(롤 피치 요)”라고 표시하기도 하는 'ZYX'
축 순서를 지원합니다. 점에 회전을 적용하거나 다른 표현으로 변환하려면 사용하는 축 순서를 알고 있는 것이 중요합니다.
숫자 표현: 스칼라 각도로 구성된 1×3 벡터
예를 들어 y축을 중심으로 한 pi 회전은 다음과 같이 표현됩니다.
eul = [0 pi 0]
참고: 축 순서는 변환에 저장되지 않으므로 적용할 회전 순서를 알고 있어야 합니다.
동차 변환 행렬
약어: tform
동차 변환 행렬은 평행 이동과 회전을 하나의 행렬로 결합합니다.
숫자 표현: 4×4 행렬
예를 들어 y축을 중심으로 한 각도 α의 회전과 y축을 따라 4단위만큼의 평행 이동은 다음과 같이 표현됩니다.
tform = cos α 0 sin α 0 0 1 0 4 -sin α 0 cos α 0 0 0 0 1
행 벡터 행렬(n×4 크기의 점 행렬)로 표현되는 동차 좌표 앞에 변환 행렬을 곱하는 전위곱을 수행해야 합니다. 행렬 곱셈을 위해 전치('
)를 사용하여 점을 회전합니다. 예를 들면 다음과 같습니다.
points = rand(100,4); tformPoints = (tform*points')';
쿼터니언
약어: quat
쿼터니언은 하나의 스칼라 회전과 3개 요소의 벡터로 구성된, 요소를 4개 가진 벡터입니다. 쿼터니언은 다른 표현에 내재된 특이점 문제를 방지하기 때문에 유리합니다. 첫 번째 요소 w는 벡터를 정규화하는 스칼라이고 다른 3개 값 [x y z]는 회전 축을 정의합니다.
숫자 표현: 1×4 벡터
예를 들어 y축을 중심으로 한 pi/2
회전은 다음과 같이 표현됩니다.
quat = [0.7071 0 0.7071 0]
회전 행렬
약어: rotm
회전 행렬은 3차원 공간에서의 회전을 설명합니다. 행렬식이 1인 정방 정규 직교 행렬입니다.
숫자 표현: 3×3 행렬
예를 들어 x축을 중심으로 한 α도 회전은 다음과 같습니다.
rotm = 1 0 0 0 cos α -sin α 0 sin α cos α
행 벡터 행렬(n×3 크기의 점 행렬)로 표현되는 좌표 앞에 회전 행렬을 곱하는 전위곱을 수행해야 합니다. 행렬 곱셈을 위해 전치('
)를 사용하여 점을 회전합니다. 예를 들면 다음과 같습니다.
points = rand(100,3); rotPoints = (rotm*points')';
평행 이동 벡터
약어: trvec
평행 이동 벡터는 3차원 유클리드 공간에서 카테시안 좌표로 표현됩니다. 모든 점에 동일하게 적용되는 좌표 평행 이동만 포함됩니다. 회전은 포함되지 않습니다.
숫자 표현: 1×3 벡터
예를 들어 x축을 따라 3단위만큼, z축을 따라 2.5단위만큼의 평행 이동은 다음과 같이 표현됩니다.
trvec = [3 0 2.5]
변환 함수와 변환
Robotics System Toolbox는 앞에서 언급한 변환 표현에 대한 변환 함수를 제공합니다. 어느 한 전용 함수가 모든 변환을 지원하는 것은 아닙니다. 아래는 지원되는 변환(파란색)을 보여주는 표입니다. 회전 표현과 평행 이동 표현에 대한 약어도 표시됩니다.
다음으로 변환 | 축-각도(axang ) | 오일러 각(eul ) | 숫자형 쿼터니언(quat ) | 쿼터니언 객체(quaternion ) | 회전 행렬(rotm ) | 변환 행렬(tform ) | 평행 이동 벡터(trvec ) | |
다음에서 변환 | ||||||||
축-각도(axang ) | — | — | axang2quat | quaternion | axang2rotm | axang2tform | — | |
오일러 각(eul ) | — | — | eul2quat | quaternion | eul2rotm | eul2tform | ||
숫자형 쿼터니언(quat ) | quat2axang | quat2eul | — | quaternion | quat2rotm | quat2tform | ||
쿼터니언 객체(quaternion ) | — | euler | compact | — | — | |||
회전 행렬(rotm ) | rotm2axang | rotm2eul | rotm2quat | quaternion | — | rotm2tform | ||
변환 행렬(tform ) | tform2axang | tform2eul | tform2quat | — | tform2rotm | — | tform2trvec | |
평행 이동 벡터(trvec ) | — | — | — | — | — | trvec2tform | — |
모든 변환 함수의 이름은 표준 형식을 따릅니다. 모두 alpha2beta
형식을 따르며, 여기서 alpha
는 변환시킬 표현의 약어이고 beta
는 변환된 표현의 약어입니다. 예를 들어 오일러 각에서 쿼터니언으로의 변환은 eul2quat
가 됩니다.
모든 함수는 유효한 입력을 기대합니다. 유효하지 않은 입력을 지정하면 출력이 정의되지 않습니다.
라디안과 도 사이의 변환, 카테시안 좌표와 동차 좌표 사이의 변환, 래핑된 각도 차이 계산을 위한 다른 변환 함수들도 있습니다. 변환의 전체 목록은 좌표 변환과 궤적 항목을 참조하십시오.