산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 자동화 제어 시스템

오일러 각 마스터하기: 6축 로봇 정밀 제어를 위한 완벽 가이드

오일러 각으로 공간의 방향을 어떻게 표현하는가?

이 튜토리얼에서 예시로 사용된 메카데믹(Mecademic)의 메카500(Meca500)과 같은 6축 로봇 팔을 사용하는 경우, 툴(엔드 이펙터)을 다양한 방향으로 위치시키는 것에 관심이 있을 것입니다. 즉, 로봇을 프로그래밍하여 엔드 이펙터를 원하는 위치 그리고 원하는 방향(즉, 원하는 자세(pose))으로 이동시킬 수 있어야 합니다. 물론 로봇의 엔드 이펙터를 조그(jog)하거나 핸드 가이드(hand-guide)하여 대략적인 자세로 이동시킬 수 있지만, 이러한 온라인 프로그래밍 방식은 번거롭고 매우 부정확합니다. 원하는 자세를 오프라인에서 계산하고 정의하는 것이 훨씬 효율적입니다. 또한, 이미지에 표시된 것처럼 엔드 이펙터와 관련된 툴 기준 좌표계(tool reference frame)을 정의하려면, 해당 툴 기준 좌표계의 자세를 플랜지 기준 좌표계(flange reference frame)에 대해 계산해야 합니다.

3D 공간에서 자세를 정의하려면 최소 6개의 파라미터가 필요합니다. 예를 들어, 로봇 엔드 이펙터의 위치, 더 정확히 말해 TCP(툴 센터 포인트)의 위치는 일반적으로 툴 기준 좌표계 원점의 x, y, z 좌표로 월드 기준 좌표계(world reference frame)에 대해 정의됩니다. 그렇다면 공간에서의 방향은 어떻게 정의할까요?

오일러 각의 상세 정의

공간에서의 방향 표현은 복잡한 문제입니다. 오일러의 회전 정리(Euler's rotation theorem)에 따르면, 3D 공간에서 강체의 한 점이 고정된 상태로 변위되는 것은 그 고정점을 지나는 축에 대한 단일 회전과 동일합니다. 따라서 이러한 회전은 세 개의 독립적인 파라미터로 설명할 수 있습니다: 축을 설명하는 두 개와 회전 각도 하나를 위한 것입니다. 그러나 공간에서의 방향은 각각 장단점을 가진 여러 다른 방식으로 표현될 수 있습니다. 이러한 표현 중 일부는 최소한의 세 개 파라미터보다 더 많은 수를 사용합니다.

한 데카르트(3D) 기준 좌표계 F에서 다른 좌표계 F'로 위치 좌표를 변환하는 가장 일반적인 방법은 회전 행렬(rotation matrix)입니다. 이 3×3 행렬은 따라서 기준 좌표계 F'의 F에 대한 방향을 표현하는 데 사용될 수 있습니다. 그러나 이 표현은 나중에 알게 되겠지만 종종 필요함에도 불구하고, 방향을 정의하는 간결하고 직관적인 방법은 아닙니다.

방향을 정의하는 훨씬 더 간결한 방법은 쿼터니언(quaternion)입니다. 이 표현 형태는 정규화된 네 개의 스칼라 벡터로 구성됩니다. 쿼터니언은 로봇 컨트롤러에서 일반적으로 사용되는데, 회전 행렬보다 더 간결할 뿐만 아니라 근사 오류에도 덜 민감하기 때문입니다. 또한, 두 다른 방향 사이의 보간(interpolation) 동안 쿼터니언의 요소들은 연속적으로 변화하여, 오일러 각과 같은 3차원 파라미터화에 내재된 불연속성을 피합니다. 그럼에도 불구하고, 쿼터니언은 직관적이지 않기 때문에 사용자와 로봇 컨트롤러 간의 의사소통 수단으로는 거의 사용되지 않습니다.

오일러 각의 상세 정의

CAD 소프트웨어나 로봇 컨트롤러에서 사용자에게 공간의 방향을 전달하거나 사용자가 방향을 정의할 수 있게 하는 가장 일반적인 방법은 단연 오일러 각(Euler angles)의 사용입니다. '오일러 각'이라는 용어가 종종 오용되기 때문에, 우리는 이 대화형 튜토리얼을 준비했습니다.

오일러 각은 세 개의 각도 집합(또는 순서)이며, 예를 들어 α, β, γ로 표기할 수 있습니다. (종종 오일러 각은 롤(roll), 피치(pitch), 요(yaw)로 표기됩니다.) 오일러 각은 다음과 같이 정의됩니다: 두 개의 데카르트 오른손 3D 기준 좌표계를 고려하세요. 하나는 임의로 고정(fixed) 좌표계라고 부르고, 다른 하나는 이동(mobile) 좌표계라고 부릅니다. 두 기준 좌표계는 처음에 일치합니다. 세 번째 좌표계의 방향을 정의하기 위해(세 좌표계 모두 같은 원점을 공유), 이동 좌표계를 아래 순서대로 회전시켜 세 번째 좌표계와 일치시킵니다.

  1. 고정 좌표계의 x, y, z 축 또는 이동 좌표계의 x', y', z' 축 중 하나에 대해 α도 회전,
  2. 고정 좌표계의 x, y, z 축 또는 이동 좌표계의 x', y', z' 축 중 하나에 대해 β도 회전,
  3. 고정 좌표계의 x, y, z 축 또는 이동 좌표계의 x', y', z' 축 중 하나에 대해 γ도 회전.

세 번의 회전이 수행되는 순서가 중요합니다. 따라서 총 216가지(6³)의 가능한 순서가 존재합니다: x→y→z, y→y→z, z→y→z, x'→y→z, y'→y→z, z'→y→z 등. 그러나 두 번의 연속된 회전이 같은 축에 대해 이루어지는 순서(예: y→y→z)는 일반적인 방향을 설명할 수 없습니다. 또한 첫 회전 이전에 x는 x'와, y는 y'와, z는 z'와 일치합니다. 결과적으로 이 216가지 조합 중 의미 있는 순서가 있는 회전 조합, 즉 12가지 오일러 각 관례(Euler angle conventions)만 유일하게 존재합니다: XYX, XYZ, XZX, XZY, YXY, YXZ, YZX, YZY, ZXY, ZXZ, ZYX, ZYZ.

하지만 12가지 조합 각각은 다른 세 개의 순서와 동등합니다. 즉, 각 오일러 각 관례는 네 가지 다른 방식으로 설명될 수 있습니다. 예를 들어, ZYX 관례는 z→y→x, x'→y'→z', y→z'→x, y→x→z' 순서와 동등합니다. 다행히도 일부 회전은 이동 좌표계 축에 대해, 다른 회전은 고정 좌표계 축에 대해 이루어지는 순서(예: y→z'→x, y→x→z')로 오일러 각을 설명하는 경우는 없습니다.

따라서 12가지 다른 오일러 각 관례가 있지만, 각각은 일반적으로 두 가지 방식으로 설명됩니다: 고정 좌표계 축에 대한 회전 순서로, 또는 이동 좌표계 축에 대한 회전 순서로. 따라서 고정 관례와 이동 관례에 대해 이야기하는 것이 편리할 수 있지만, 이들은 동등합니다. 예를 들어, 고정 XYZ 오일러 각 관례는 x→y→z 순서로 설명되고, 이동 ZYX 오일러 각 관례는 z'→y'→x' 순서로 설명되지만 둘은 동등합니다.

로봇공학에서, 파나소닉(FANUC)과 쿠카(KUKA)는 고정 XYZ 오일러 각 관례를 사용하는 반면, ABB는 이동 ZYX 오일러 각 관례를 사용합니다. 또한, 가와사키(Kawasaki), 오므론 어데프트 테크놀로지(Omron Adept Technologies), 스토브리(Stäubli)는 이동 ZYZ 오일러 각 관례를 사용합니다. 마지막으로, CATIA와 솔리드웍스(SolidWorks)에서 사용되는 오일러 각은 이동 ZYZ 오일러 각 관례에 의해 설명됩니다.

메카데믹(Mecademic)에서는 이동 XYZ 오일러 각 관례를 사용하므로, 오일러 각을 x'→y'→z' 순서로 설명합니다. 왜 다를까요? 그 이유는 과거에 축대칭 공작물을 다루기 위한 기계식 그리퍼를 제공했는데(영상 참조), 이것이 6번 관절의 모터로 작동되었기 때문입니다. 이러한 그리퍼가 장착된 6축 로봇은 두 개의 회전 자유도, 구체적으로 6번 관절 축의 방향, 즉 공작물 대칭 축의 방향만 제어할 수 있습니다. 선택된 오일러 각 관례에서 α와 β는 이 방향을 정의하는 반면, γ는 제어할 수 없는 기생 회전에 해당하므로 무시됩니다.

아래 애플릿은 오일러 각을 이해하는 데 도움이 될 것입니다. 첫 번째, 두 번째, 세 번째 회전의 x, y, z 상자를 클릭하여 12가지 가능한 오일러 각 관례 중 하나를 선택할 수 있습니다. (기본 오일러 각 순서는 메카데믹에서 사용하는 것입니다.) 고정 좌표계 축 또는 이동 좌표계 축에 대한 회전 간 전환을 하려면 이 아홉 개 상자 중 아무거나 더블 클릭하세요. 고정 좌표계 축은 회색으로, 이동 좌표계 축은 검은색으로 표시됩니다. x와 x' 축은 빨간색, y와 y'는 녹색, z와 z'는 파란색으로 그려집니다. 세 개의 파란색 수평 화살표 중 하나를 마우스로 드래그하면 해당 오일러 각이 변경됩니다. 또는 화살표 아래의 텍스트 상자에 직접 오일러 각 값(도 단위)을 입력할 수도 있습니다. 마지막으로 기준 좌표계 위를 마우스로 드래그하여 시점을 변경할 수 있습니다.


α : β : γ :
R = Rx(0°) Ry(0°) Rz(0°) =
1.000 0.000 0.000
0.000 1.000 0.000
0.000 0.000 1.000

회전 행렬을 통한 오일러 각 계산

위 애플릿을 사용하면 주어진 오일러 각 세트에 대해 이동 좌표계의 고정 좌표계에 대한 방향을 오른쪽 하위 그림에서 확인할 수 있습니다. 그러나 실제로는 보통 그 반대 상황입니다. 두 기준 좌표계가 있고, 한 좌표계의 다른 좌표계에 대한 방향을 설명하는 오일러 각을 찾고자 합니다.

최소 두 축이 평행한 방향의 경우, 시행착오를 통해 오일러 각을 추측해 볼 수 있습니다. 예를 들어, 이 튜토리얼 시작 부분의 이미지를 다시 보고 메카데믹에서 사용하는 오일러 각(그리퍼와 관련된 툴 기준 좌표계의 플랜지 기준 좌표계에 대한 방향을 정의하는)을 찾아보세요. 정답은 α = −90°, β = 0°, γ = −90°입니다. 그리 쉽지 않죠? 따라서 더 효율적이기 위해서는 회전 행렬에 대해 배워야 합니다.

앞서 언급했듯이, 공간의 모든 방향은 3×3 회전 행렬로 표현할 수 있습니다. 예를 들어, x 축에 대한 α 회전, y 축에 대한 β 회전, z 축에 대한 γ 회전은 각각 다음 세 가지 기본 회전 행렬에 해당합니다:

Rx(α) =
1 0 0
0 cos(α) −sin(α)
0 sin(α) cos(α)
,
Ry(β) =
cos(β) 0 sin(β)
0 1 0
−sin(β) 0 cos(β)
,
Rz(γ) =
cos(γ) −sin(γ) 0
sin(γ) cos(γ) 0
0 0 1
.

이 행렬들을 기본 회전 행렬(basic rotation matrices)이라고 부르겠습니다. 회전 순서에 해당하는 기본 회전 행렬의 곱을 얻으려면, 첫 번째 회전에 해당하는 기본 회전 행렬을 쓰는 것으로 시작합니다. 예를 들어, 첫 번째 회전이 x (또는 x') 축에 대한 것이면 Rx(ψ)를 쓰고, 여기서 ψ는 회전 각도입니다. 이후 모든 회전에 대해, 회전이 이동 기준 좌표계의 축에 대한 것이면 현재 결과에 다음 회전 행렬을 후승곱(right multiply, 우측 곱셈)하고, 고정 기준 좌표계의 축에 대한 것이면 현재 결과에 다음 회전 행렬을 선승곱(left multiply, 좌측 곱셈)합니다. 우리 애플릿을 사용하여 기본 회전 행렬의 결과 곱을 확인해 보세요. 예를 들어, 회전 순서 x'→y'→z'는 곱 R = Rx(α)Ry(β)Rz(γ)에 해당합니다. 따라서 메카데믹에서 사용하는 오일러 각에 해당하는 회전 행렬은 다음과 같습니다:

R(α, β, γ) =
cos(β)cos(γ) −cos(β)sin(γ) sin(β)
cos(α)sin(γ) + sin(α)sin(β)cos(γ) cos(α)cos(γ) − sin(α)sin(β)sin(γ) −sin(α)cos(β)
sin(α)sin(γ) − cos(α)sin(β)cos(γ) sin(α)cos(γ) + cos(α)sin(β)sin(γ) cos(α)cos(β)
.

따라서 주어진 방향에 대해 두 가지 작업을 수행해야 합니다: 첫째, 해당 방향에 해당하는 회전 행렬을 찾아야 합니다. 둘째, 몇 가지 간단한 방정식을 사용하여 오일러 각을 추출해야 합니다. 먼저 회전 행렬을 찾는 두 가지 방법을 보여드리겠습니다.

아래 그림과 같은 예를 고려해 보세요. 여기서는 좌표계 F'의 F에 대한 방향을 나타내는 회전 행렬을 찾아야 합니다. (x 축은 빨간색, y 축은 녹색, z 축은 파란색으로 표시함을 상기하세요.)

여기서 F와 일치하도록 세 번째 기준 좌표계를 정렬하여 이동 좌표계로 삼고, 이 좌표계를 z' 축을 중심으로 θ도 회전한 다음 y' 축을 중심으로 φ도 회전하면 F'의 방향을 얻을 수 있음을 쉽게 알 수 있습니다. 따라서 우리가 찾는 회전 행렬은:

Rdesired = Rz(θ)Ry(φ) =
cos(θ)cos(φ) −sin(θ) cos(θ)sin(φ)
sin(θ)cos(φ) cos(θ) sin(θ)sin(φ)
−sin(φ) 0 cos(φ)
.

또는 위 회전 행렬을 직접 얻을 수도 있습니다. 첫 번째, 두 번째, 세 번째 열은 각각 좌표계 F'의 x, y, z 축을 따라 있는 단위 벡터의 좌표를 좌표계 F에 대해 나타냅니다.

이제 원하는 방향을 나타내는 회전 행렬을 얻었으므로, Rdesired = R(α, β, γ)인 아홉 개의 스칼라 삼각 방정식 시스템을 α, β, γ에 대해 풀기만 하면 됩니다. 다행히 이 문제는 일반적인 해법을 가지며, 우리는 사용할 방정식을 단순히 제공해 드리겠습니다.

좌표계 F'의 F에 대한 원하는 방향이 다음 회전 행렬로 표현된다고 합시다:

Rdesired =
r1,1 r1,2 r1,3
r2,1 r2,2 r2,3
r3,1 r3,2 r3,3
.

메카데믹에서 사용하는 이동 XYZ 관례에 따른 오일러 각(단위: 도)은 다음 두 가지 경우에 따라 얻습니다:

케이스 1: r1,3 ≠ ±1 (즉, 좌표계 F'의 z' 축이 좌표계 F의 x 축과 평행하지 않은 경우).

β = asin(r1,3), γ = atan2(−r1,2, r1,1), α = atan2(−r2,3, r3,3).

케이스 2: r1,3 = ±1 (즉, 좌표계 F'의 z' 축이 좌표계 F의 x 축과 평행한 경우).

β = r1,390°, γ = atan2(r2,1, r2,2), α = 0.

일반적인 케이스 1에서, 모든 각도가 반개구간 (−180°, 180°]에 있는 두 가지 해 세트가 실제로 존재합니다. 그러나 두 해 세트를 모두 계산할 필요는 없으므로, −90° < β < 90°인 첫 번째 해만 제시합니다. 또한, 우리 해법에서 atan2(y, x) 함수를 사용합니다. 일부 프로그래밍 언어, 공학용 계산기, 대부분의 스프레드시트 소프트웨어에서 이 함수의 인자 순서가 반대임을 주의하세요.

마지막으로, 케이스 2는 소위 표현 특이점(representation singularity)에 해당합니다. 이 특이점은 3D 공간에서 방향을 표현하는 모든 3-파라미터 표현에 존재합니다(메카데믹의 오일러 각 선택만이 아닙니다). 이는 구 위의 점을 두 개의 파라미터로만 표현하는 문제와 유사합니다. 예를 들어, 지구에서 남극과 북극에서는 경도가 정의되지 않습니다. 즉, 이 특이점은 메커니즘의 특이점(예: 소위 짐벌 락(gimbal lock))과는 무관하며, 이는 실제 물리적 문제(자유도 상실 등)에 해당합니다.

연습 문제

우리에게 실제로 발생했던 상황을 고려해 보세요. 피스나르(FISNAR) 디스펜싱 밸브를 메카500 로봇 팔의 엔드 이펙터에 부착하고 싶었습니다. 자연스럽게 어댑터를 설계하고 가공한 엔지니어는 오일러 각에는 관심이 없었고, 가공성과 도달 가능성만 고려했습니다. 그의 설계에는 본질적으로 두 번의 45° 회전이 있었습니다. 첫째, 로봇 플랜지의 정반대편에 있는 두 개의 나사 구멍을 사용하여 어댑터를 부착했는데, 이로 인해 첫 번째 45° 회전이 발생했습니다. 둘째, 플랜지 인터페이스 평면과 디스펜서 축 사이의 각도가 45°였습니다.

위 그림은 실제 설치(왼쪽)와 정의해야 했던 툴 좌표계(오른쪽)를 보여줍니다. 축대칭 툴을 사용할 때 툴의 z축을 툴의 축과 정렬하는 것이 일반적인 관행입니다. 이는 이동 XYZ 오일러 각 관례에서 특히 유용한데, 축대칭 툴에 대한 중복 회전이 세 번째 오일러 각 γ에 해당하기 때문입니다. 따라서 첫 두 오일러 각이 툴의 축을 정의하고, 세 번째 각은 로봇의 최적 구성(특이점에서 멀리 떨어진)을 선택하는 데 사용될 수 있습니다.

우리 예로 돌아가서, 이동 XYZ 관례에 따른 오일러 각을 시행착오로 찾아내는 것이 불가능함을 보이겠습니다. 실제로 이 툴 기준 좌표계 선택으로 최종 방향을 다음 두 회전 순서로 표현할 수 있습니다: R = Rz(45°)Ry(45°). 여기서 앞서 설명한 방정식을 사용하여 이동 XYZ 관례에 따른 오일러 각을 추출하면: α = −35.264°, β = 30.000°, γ = 54.735°를 얻습니다. 이제 이런 상황에서 오일러 각을 마스터해야 한다는 것이 납득되시나요?

표현 특이점과 방향 오류

이동 XYZ 오일러 각 관례의 경우, 좌표계 F'의 z' 축이 좌표계 F의 x 축과 평행하면, 같은 방향을 정의하는 α와 γ의 무한한 쌍이 존재합니다. 원하는 방향을 정의하는 데 하나만 필요하므로, 우리는 임의로 α를 0으로 설정했습니다. 더 구체적으로, β = 90°이면 α + γ = φ를 만족하는 모든 α와 γ 조합(여기서 φ는 임의의 값)은 같은 방향에 해당하며, 메카데믹 컨트롤러는 {0, 90°, φ}로 출력합니다. 마찬가지로, β = −90°이면 α − γ = φ를 만족하는 모든 α와 γ 조합은 같은 방향에 해당하며, 컨트롤러는 {0, −90°, −φ}로 출력합니다. 그러나 좌표계 F'의 z' 축이 좌표계 F의 x 축과 거의 평행한 방향(즉, β가 ±90°에 매우 가까운 경우)을 표현하려 하면, 오일러 각이 수치적 오류에 매우 민감해집니다. 이런 경우에는 오일러 각을 사용하여 방향을 정의할 때 소수점 이하 자릿수를 최대한 많이 입력해야 합니다.

여러 메카500 사용자를 걱정하게 했던 다음 상황을 고려해 보세요. 툴 기준 좌표계의 월드 기준 좌표계에 대한 방향을 {0°, 90°, 0°}로 설정했는데, 이는 표현 특이점입니다. 그런 다음 이 방향을 유지하면서 엔드 이펙터를 공간의 여러 위치로 이동시킵니다. 일부 위치에서 수치적 노이즈 때문에 컨트롤러가 r1,3 = ±1 조건(앞서 언급한 케이스 2)을 감지하지 못하고, 방향이 표현 특이점에 해당하지 않는 것처럼 오일러 각을 계산합니다. 따라서 컨트롤러는 {41.345°, 90.001°, −41.345°} 같은 값을 반환하는데, 이는 {0°, 90°, 0°}와 완전히 다르고 매우 멀리 떨어진 것처럼 보입니다. 하지만 실제로는 그렇지 않습니다.

위치 오류가 √(Δx² + Δy² + Δz²)로 측정되는 것과 달리, 방향 오류는 오일러 각의 변화와 직접 관련되지 않습니다. 특히 표현 특이점 근처에서는 더욱 그렇습니다. 이 소위 오일러 각의 비유클리드적(non-Euclidean) 특성을 더 잘 이해하기 위해, 지구상의 위치를 표현하는 데 사용되는 구면 좌표를 고려해 보세요. 북극에서 위도는 90°(북쪽)지만, 경도는 무엇일까요? 북극에서는 경도가 정의되지 않거나 임의의 값일 수 있습니다. 이제 북극에서 그리니치 방향으로 1mm만 이동한다고 상상해 보세요. 이 경우 위도는 89.99999999°가 되지만, 경도는 0° 값을 갖게 됩니다. 다시 북극으로 돌아와 도쿄 방향으로 1mm 이동한다고 상상해 보세요. 새로운 경도는 약 140°가 될 것입니다. 두 위치 사이에서 경도 오차는 140°입니다! 그러나 실제 각도 오차는 약 0.00000002°에 불과합니다.

위에서 설명한 상황은 다른 모든 오일러 각 관례에서도 유사합니다. 오일러 각 관례에 따라, 해당 표현 특이점은 좌표계 F'의 특정 축이 좌표계 F의 다른 특정 축과 평행할 때 발생합니다. 이러한 표현 특이점에서 첫 번째와 세 번째 회전이 종속적이 됩니다.

결론적으로, 오일러 각(특히 로봇 프로그래밍에 사용되는 관례)을 마스터하지 않거나(또는 정교한 오프라인 프로그래밍 소프트웨어를 사용하지 않으면), 단순한 픽 앤 플레이스(pick and place) 작업 외에는 거의 프로그래밍할 수 없습니다. 로봇공학은 단순하지 않기 때문에, 우리는 여러분이 기초를 이해하도록 최선을 다해 돕고 있습니다.

자동화 제어 시스템

  1. 세프로, 사출 성형용 신형 콤팩트 6축 로봇 라인업 확장
  2. NPE 2018: 더 빠르고 똑똑하고 협업적인 로봇들의 향연
  3. 스타 오토메이션, NPE2018서 붓 휘두르는 로봇으로 일본 서예 시연
  4. 유신 아메리카, 멀티 로봇 셀로 셰이커 컵 원사이클 완전 생산 시연
  5. 이구스, 6,200달러부터 시작하는 저비용 고속 조립 로봇 출시… ±0.5mm 정밀도
  6. 슈렁크(Schunk), 모리스빌(노스캐롤라이나) 40,000ft² 확장 완료… 로봇 그리퍼 국내 조립 첫 실현·커스터마이징·품질 강화
  7. 사출 성형 자동화: 전문가 통찰과 새로운 트렌드
  8. 비트만 바텐펠트, 고강도 사출 성형 자동화용 WX153 신규 로봇 라인 출시
  9. 유니버설 로봇, 킴 포블센 신임 사장 선임으로 덴마크 로보틱스 리더십 강화
  10. GP4: Yaskawa의 초고속·고정밀 콤팩트 6축 로봇