[Study, Robotics] Robotics Introduction (Overview, Rotation Matrix)

minbrass·2025년 5월 5일

Study_Robotics

목록 보기
1/2
post-thumbnail
  • 본 글은 스탠포드 CS223A 강의 "Introduction to Robotics"와, 서울대학교 융합과학기술대학원 DRSL 연구실 박재흥 교수님의 "로봇공학" 대학원 강의 자료를 참고하여 공부한 내용이다.


1. Robot Manipulator란?


로봇 매니퓰레이터는 여러 개의 강체인 링크(link)와 이를 연결하는 조인트(joint)들로 구성된다. 즉, 직렬로 연결된 link와 joint들로 구성된 로봇팔의 기계적 구조를 의미한다.

  • Link: 매니퓰레이터를 구성하는 강체요소. 각 link는 joint를 통해 서로 연결 됨.
  • Joint: link간의 상대적인 움직임을 가능하게 하는 메커니즘

위 정의대로, 각 링크는 움직일 수 있는 부분이고, 조인트는 그 링크들을 연결하면서 운동을 가능하게 해주는 장치이다. 링크는 일반적으로 강체로 가정되며, 조인트를 통해 서로 연결되어 구조적으로는 사슬 형태를 이룬다.

이러한 링크와 조인트들의 연결 방식에 따라 로봇의 전체 운동 능력이 결정된다.


1.2. End-effector and base

1.2.1. End-effector

End-effector는 로봇 매니퓰레이터에서 환경과 직접적인 물리적 상호작용을 수행하는 최종 링크 혹은 장치를 말한다.

이 위치에는 일반적으로 그리퍼, 집게, 용접기, 흡착기, 스프레이 도구, 혹은 특정한 작업을 위한 전문화된 툴이 부착된다.

즉, End-effector는 로봇의 주된 기능(예: 물체 집기, 도장, 조립 등)을 실질적으로 수행하는 Task-executing module이라 할 수 있다.

End-effector는 로봇이 외부 세계와 직접 상호작용하는 유일한 부분이기 때문에, 이 지점의 위치 및 자세(position & orientation)를 정밀하게 제어하는 것이 로봇 제어 시스템의 핵심 목적 중 하나이다.

반면, Base는 로봇의 첫 번째 링크 또는 조인트가 고정된 지점으로, 로봇의 전체 구조에서 기준 좌표계(reference frame)가 정의되는 출발점이다. 대부분의 경우 Base는 작업 환경에 물리적으로 고정되어 있으며, 로봇의 나머지 링크들과 조인트들은 이 Base로부터 연결되어 확장된다. 로봇의 운동학적 해석이나 제어 알고리즘을 구성할 때, 모든 링크의 위치와 자세는 Base를 기준으로 표현된다.

로봇 매니퓰레이터의 공간 구성(spatial configuration)은 바로 이 Base로부터 End-effector까지의 기하학적 관계를 의미한다. 이 관계를 수학적으로 정의하는 것이 로봇의 Forward Kinematics와 Inverse Kinematics 문제의 본질이며, 로봇이 "현재 어떤 자세에 있는가?" 또는 "End-effector를 이 위치로 옮기기 위해 어떤 관절 상태가 필요한가?"에 대한 해답을 제공하게 된다.

link과 joint의 개념으로 End-effector와 Base를 정리하자면,

  • End-effector는 일반적으로 마지막 link와 결합된 별도의 모듈로 간주,
  • Base는 일반적으로 0번(시작) link로 간주.

1.3. Joint의 유형과 DOF

로봇 매니퓰레이터의 운동 능력은 그 내부에 포함된 joint의 유형과 구조에 의해 결정된다. 각 joint는 로봇이 특정 방향으로 움직일 수 있는 자유도(Degree of Freedom, DOF) 하나를 제공한다.

로봇에서 자유도란, 로봇이 독립적으로 조작하거나 제어할 수 있는 운동 방향의 수를 의미한다.


1.3.1. Revolute Joint (회전 조인트)

회전 운동을 허용하는 조인트로, 한 축을 중심으로 링크가 회전할 수 있도록 한다. 이 회전은 각도(θ)로 표현되며, 인간의 팔꿈치나 무릎과 유사한 구조이다.


1.3.2. Prismatic Joint (직선 조인트, 슬라이딩 조인트)

직선 방향의 병진 운동을 허용하는 조인트로, 링크가 조인트를 따라 직선으로 이동한다. 이동량은 거리(d)로 표현되며, 서랍을 여닫는 동작과 유사하다.


1.3.3. Degree of Freedom, DOF

로봇의 전체 운동 능력, 즉 총 자유도(DOF)는 로봇 시스템에 포함된 링크와 조인트의 수에 따라 다음과 같이 계산할 수 있다.

  1. 하나의 강체 링크는 3차원 공간에서 다음과 같은 6개의 자유도를 필요로 한다:

    • 3개의 병진 운동: x,y,zx, y, z 방향 이동
    • 3개의 회전 운동: roll,pitch,yawroll, pitch, yaw (또는 x,y,zx, y, z축 회전)

cf) 그렇다면 2차원 공간에서는 몇개의 자유로를 필요로 할까?
-> 2D2D 평면에서의 manipulator의 경우에는 말단위치 (x,y)(x,y)와 말단의 방향 α\alpha 로 구성되기 때문에 일반적으로 단 3개의 자유도를 필요로 한다. 회전축이 하나 더 생기면 바로 2D2D평면을 벗어나 버리기 때문.

  1. 하나의 조인트는 두 링크 간의 상대 운동을 허용함과 동시에 5개의 운동을 제한하고, 오직 1개의 운동만 자유롭게 허용한다.

    • 예를 들어, 회전 조인트는 한 축을 중심으로 회전만 가능하게 하고, 나머지 5개의 운동은 제한한다.
  2. 따라서, 링크와 조인트가 각각 n개로 구성된 로봇 매니퓰레이터에 대해 전체 시스템의 자유도(DOF)는 다음과 같이 계산된다:

DOF=6nlink5njoint\text{DOF} = 6n_{\text{link}} - 5n_{\text{joint}}

하지만 대부분의 로봇 매니퓰레이터에서는 n개의 조인트에 n개의 링크가 1:1로 연결되어 있기 때문에, 다음과 같은 단순화된 공식이 자주 사용된다:

DOF=n\text{DOF} = n

이는 각 조인트가 하나의 자유도를 제공하며, 시스템이 그만큼 독립적인 조작 방향을 갖는다는 것을 의미한다.



2. Joint Space vs. Task Space


2.1. Joint Space

Joint Space(관절 공간)는 로봇의 각 조인트의 상태를 기준으로 구성되는 내부 표현 공간이다. 즉, 로봇 매니퓰레이터의 각 관절이 가지고 있는 회전각(θ) 또는 슬라이딩 거리(d)와 같은 변수들이 좌표축이 되어 만들어지는 수학적 구성 공간이다.

예를 들어, 3개의 조인트가 있는 로봇의 경우, 각 조인트의 상태는 하나의 실수 값으로 표현되며, 전체 로봇의 구성은 3개의 값으로 결정된다. 이 경우 Joint Space는 다음과 같이 3차원 유클리드 공간 R3\mathbb{R}^3의 한 점으로 표현된다:

q=[q1,q2,q3]Tq = [q_1, q_2, q_3]^T

여기서 qiq_i는 각 조인트의 상태 변수이며, 전체 벡터 qq는 로봇의 구성(configuration)을 나타내는 Generalized Coordinates(일반화 좌표계)이다.


2.2. Task Space


(위 그림은 2D2D공간에서의 Task Space를 보여주고 있음을 기억해야한다. 따라서 단 세 개의 자유도만을 필요로 하지만, 아래의 설명에서는 3D3D공간에서의 경우를 설명하고 있다)

Task Space(작업 공간)는 로봇이 외부 세계와 상호작용하는 실제 위치와 자세를 기반으로 한 외부 표현 공간이다. 이 공간에서는 로봇의 구성(configuration)을 조인트 상태가 아니라 end-effector의 position과 orientation로 기술한다.

예를 들어, 로봇의 손끝(end-effector)이 작업 공간에서 어떤 물체를 집어야 하는 상황을 생각해보자. 이때 로봇이 도달해야 할 위치는 기준 좌표계(Frame A)에 대해 다음과 같이 정의된다:

  • position(=위치): 3차원 공간상 좌표 (x,y,z)(x, y, z)
  • orientation(=자세): xx축 / yy축 / zz축으로의 회전을 나타내는 표현
    (→ 이 두 개념에 대해서는 아래서 더 자세히 다뤄보도록 하겠다.)

따라서 Task Space 상의 한 점은 다음과 같은 형태를 가진다:

x=[x,y,z,ϕ,θ,ψ]Tx = [x, y, z, \phi, \theta, \psi]^T

이는 로봇 손끝의 위치와 방향을 완전히 기술하는 6차원의 벡터이며, 이를 Operational Space, 또는 End-effector Space라고도 한다.

Task Space는 로봇이 실제로 수행하는 작업 목표를 지정하는 데 적합하며, 물체 집기, 용접, 도장, 경로 추종 등 작업 중심 제어 설계에 주로 활용된다.

예를 들어, “손끝을 (1.0, 2.0, 1.5)의 위치에 두고, 45도 회전된 자세로 유지하라”는 명령은 Task Space에서의 목표를 정의하는 것이다.


2.3. Joint Space와 Task Space의 관계

Joint Space와 Task Space는 서로 다른 관점에서 로봇을 표현하지만, 둘은 Forward Kinematics과 Inverse Kinematics을 통해 상호 변환될 수 있다:

  • Forward Kinematics: Joint 변수 qq → End-effector 위치 및 자세 xx. (즉, x=f(q)x=f(q))
  • Inverse Kinematics: 원하는 xx 존재 → 원하는 xx를 만들기 위해 가능한 qq의 경우를 역으로 추정. (즉, 다해 or 무해의 가능성 존재)

2.4. Redundancy

Redundancy란 로봇의 Joint Space의 차원이 Task Space의 차원보다 클 때 발생하는 현상이다.

로봇이 특정 작업을 수행하기 위해 실제로 필요한 자유도보다 더 많은 조인트를 가지고 있을 때, 동일한 작업 목표를 달성할 수 있는 조인트 구성(configuration)이 여러 개 존재하는 경우를 말한다.

2차원 평면에서 End-effector의 위치 (x,y)(x, y)만 제어하면 되는 작업을 생각해보자. 이 작업은 이론적으로 2개의 자유도만으로 수행 가능하지만, 로봇에 3개의 조인트가 있다면 다음과 같은 상황이 된다:

Task Space 차원=2,\text{Task Space 차원} = 2,
Joint Space 차원=3\text{Joint Space 차원} = 3
Redundant\Rightarrow \text{Redundant}

이 경우, 동일한 End-effector 위치 (x,y)(x, y)를 만들기 위해 조인트 각도 [θ1,θ2,θ3][\theta_1, \theta_2, \theta_3]의 조합이 무한히 존재할 수 있다. 왜 이런 조인트 과잉 상태를 유지하는가? 바로 이러한 경우가 실무에 도움이 되는 경우가 존재하기 때문이다.

  • 충돌 회피: 장애물 근처를 피하는 조인트 구성을 선택
  • 에너지 최소화: 모터의 회전량이 가장 작은 해를 선택
  • 반복 동작의 최소화: 이전 자세와 유사한 해를 선택해 불필요한 움직임을 줄임
  • 특정 joint에 대한 사용 제한 고려: 특정 관절은 움직이지 않도록 설정 가능

이러한 기준을 기반으로, Inverse Kinematics 문제의 해들 중에서 optimized solution을 선택하게 되며, 이 과정은 (일반적인) 최적화이론으로 해결된다.


2.5. Position과 Orientation

앞서 잠시 등장했던 Position과 Orientation에 대해서 구체적으로 알아볼 시간이다!

로봇의 공간상 상태를 완전하게 기술하기 위해서는 단순히 어디에 위치하는가(position) 뿐만 아니라, 어떤 방향을 바라보고 있는가(orientation)도 함께 고려되어야 한다. 이 두 정보가 결합되어야만 강체의 전체 위치와 자세를 정확히 정의할 수 있게 된다.


2.5.1. Position

물체가 기준 좌표계에 대해 공간적으로 어느 위치에 있는지를 나타내는 정보이다. 이는 3차원 공간에서 단순한 벡터로 표현된다.

p=[xyz]\vec{p} = \begin{bmatrix} x \\ y \\ z \end{bmatrix}

여기서 (x,y,z)(x, y, z)는 기준 프레임(Frame AA 또는 Base frame)으로부터 측정된 좌표이며, 이는 물체의 중심의 위치를 나타낸다.


2.5.2. Orientation

Orientation은 기준 좌표계에 대해 물체가 어떤 방향으로 회전되어 있는지를 나타내는 정보이다. 다양한 수학적 표현 방식이 존재하며, 대표적으로 다음과 같다:

  • 회전 행렬(Rotation Matrix): 3×3의 직교 행렬로 구성되며, 물체의 축이 기준 좌표계에 대해 어떻게 정렬되어 있는지를 나타냄
R=[r11r12r13r21r22r23r31r32r33]R = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix}
  • Euler Angles: 3개의 축에 대해 순차적으로 회전하는 각도 (ϕ,θ,ψ\phi, \theta, \psi)로 구성됨
  • Quaternion: 4차원 벡터로 회전을 표현하는 방식, 연산 효율이 높고 특이점(singularity)이 없음
  • Angle-Axis: 하나의 회전축과 그 축을 중심으로의 회전 각도로 구성

2.5.3. Position + Orientation

Position과 Orientation을 함께 고려하면, 하나의 강체는 다음과 같은 6차원 구성벡터로 완전히 표현된다:

x=[po]=[xyzϕθψ]x = \begin{bmatrix} \vec{p} \\ \vec{o} \end{bmatrix} = \begin{bmatrix} x \\ y \\ z \\ \phi \\ \theta \\ \psi \end{bmatrix}

이 표현은 Task Space의 기본 단위가 된다. 또한 이 표현은 곧이어 다루게 될 동차변환행렬(Homogeneous Transformation Matrix)로 통합 표현할 수 있다.



3. Rotation Matrix


3.1. Rotation Matrix의 정의와 의미

Rotation Matrix(회전행렬)는 3차원 공간에서 한 좌표계(Frame BB)가 다른 좌표계(Frame AA)에 대해 어떻게 회전되어 있는지를 수학적으로 표현하는 3×33 \times 3의 정방행렬이다. 보통 다음과 같이 표기한다:

ARB{}^A R_B : 일반적인 회전행렬의 표현. 여기서 ARB{}^A R_B는 프레임 BB의 단위벡터들을 프레임 AA의 기준에서 표현한 행렬을 의미한다.

다시 말해, BB 프레임의 x,y,zx, y, z축이 AA 프레임에서 어떻게 보이는지를 각각 AA 프레임의 단위벡터에 투영하여 얻은 것이다. 따라서 이 행렬의 각 열은 BB 프레임의 축들이 AA 프레임에서 어떻게 정렬되어 있는지를 나타내는 벡터이다.

회전 행렬은 다음 두 가지 의미를 갖는다

  1. 좌표계 변환의 의미: 한 좌표계에서 다른 좌표계로 벡터를 변환할 수 있게 해준다.
  2. 기하학적 회전의 의미: 강체가 기준 프레임에 대해 어떻게 회전했는지를 명시적으로 표현해준다.

3.2. Dot Product를 통한 계산

회전 행렬은 두 좌표계의 dot product을 기반으로 구성된다. 특히 행렬의 각 원소는 아래와 같은 방식으로 정의된다:

[ARB]ij=a^ib^j[{}^A R_B]_{ij} = \hat{a}_i \cdot \hat{b}_j
  • a^i\hat{a}_i: A 프레임의 i번째 축 단위벡터
  • b^j\hat{b}_j: B 프레임의 j번째 축 단위벡터

즉, A 프레임의 i번째 축과 B 프레임의 j번째 축 사이의 방향 관계를 내적으로 계산하여 B의 j번째 축이 A 프레임에서 얼마나 투영되는지를 나타낸다. 이를 통해 얻은 3x3 회전 행렬은 기준 좌표계에서 대상 좌표계의 방향성을 완전히 설명할 수 있다.


3.3. 회전 행렬의 전치와 역행렬

회전 행렬은 다음과 같은 중요한 수학적 성질을 가진 직교 행렬(orthogonal matrix)이다:

RTR=I,R1=RTR^T R = I,\quad R^{-1} = R^T

이는 회전 행렬이 벡터의 크기를 보존하며, 축의 정렬 관계만 변환한다는 것을 의미한다. 즉, 회전은 강체 운동의 일종으로 물체를 변형시키지 않고 단지 방향만 바꾸는 변환이다.

이러한 성질 덕분에 좌표계 변환 시 매우 효율적이다:

  • BB 프레임에서 정의된 벡터 vBv_BAA 프레임으로 변환하려면:

    vA=ARBvBv_A = {}^A R_B \cdot v_B
  • 반대로 AA 프레임에서 BB 프레임으로 변환하려면 전치 행렬을 사용하면 된다. (역행렬과 전치행렬이 같기 때문이다!) :

    vB=ARBTvAv_B = {}^A R_B^T \cdot v_A

이렇게 전치가 곧 역행렬이 되기 때문에, 회전 변환은 가역적이고 손실 없는 좌표계 변환 수단이 된다.

3.4. 예시로 살펴보기: z축 기준 90도 회전

z축을 기준으로 시계방향 90도 회전하는 경우의 회전 행렬을 다음과 같이 제시한다:

Rz(90)=[010100001]R_z(90^\circ) = \begin{bmatrix} 0 & -1 & 0 \\ 1 & \phantom{-}0 & 0 \\ 0 & \phantom{-}0 & 1 \end{bmatrix}

이 행렬을 해석하면 다음과 같다:

  • 원래 xx축이 yy축 방향으로 회전 → 새로운 xx축은 (0,1,0)(0, 1, 0)
  • 원래 yy축이 x-x축 방향으로 회전 → 새로운 yy축은 (1,0,0)(-1, 0, 0)
  • zz축은 변화 없음 → zz축은 (0,0,1)(0, 0, 1)

즉, 이 행렬은 공간 내에서 좌표계가 z축을 중심으로 반시계 방향(수학적 정의)으로 90도 회전했을 때, 새 좌표계의 축들이 원래 좌표계에서 어떻게 표현되는지를 확인할 수 있게 해준다.



4. 동차변환행렬(Homogeneous Transformation)


4.1. Rotation과 Translation

로봇 매니퓰레이터는 현실 세계에서 단순히 회전만 수행하는 것이 아니라, 특정 위치로의 이동(translation) 또한 함께 수행해야 한다. (벡터의 평행이동)

예를 들어, 로봇 팔이 물체를 집기 위해 이동한 후, 해당 위치에서 회전하여 자세를 맞추는 동작은 회전과 병진 운동이 복합적으로 이루어지는 과정이다.

이러한 공간상의 동작은 단순한 회전 행렬로는 표현이 불가능하다. 회전(Rotation)이동(Translation)을 함께 통합하여 수학적으로 일관되게 표현하고 계산하려면, 하나의 연산 구조 안에서 회전과 이동을 동시에 다룰 수 있는 프레임워크가 필요하다. 이 목적을 위해 도입된 것이 바로 동차변환행렬이다.


4.2. 동차변환행렬이란?

앞서 설명한대로, 동차변환행렬은 3차원 공간상의 회전(Rotation)과 이동(Translation)을 하나의 4×44 \times 4 행렬로 통합하여 표현하는 방식을 의미한다.

일반적으로 다음과 같이 구성된다:

T=[Rp01]T = \begin{bmatrix} R & \vec{p} \\ 0 & 1 \end{bmatrix}

여기서,

  • RR3×3R \in \mathbb{R}^{3 \times 3}는 회전 행렬로, 기준 프레임에 대해 대상 프레임의 방향성을 표현
  • pR3×1\vec{p} \in \mathbb{R}^{3 \times 1}는 이동 벡터로, 기준 프레임에 대해 대상 프레임의 원점 위치를 표현
  • 하단의 [01][0 \quad 1]은 행렬 곱 연산을 위해 추가된 항으로, 벡터의 차원을 동차 좌표계에 맞추기 위한 확장.
    (즉, 좌측 아래 00RR에 대응되므로 [0,0,0][0, 0, 0] 이라고 봐야한다.)

이 행렬을 적용할 점 역시 일반적인 벡터 [x y z]T[x\ y\ z]^T가 아니라, 동차 좌표계(homogeneous vector)인 [x y z 1]T[x\ y\ z\ 1]^T 형태로 표현되어야 한다.
(맨 뒤의 1은 위치벡터임을 나타내 주는걸로 생각해도 된다! 사실 별 의미 없다.)

이렇게 함으로써 회전과 이동을 단일 행렬 곱 연산으로 한 번에 처리할 수 있게 된다.


4.3. 연산자로서의 동차변환행렬

동차변환행렬은 단순한 표현 수단을 넘어, 좌표계 간 변환을 수행하는 연산자(operator)로 작용한다.

예를 들어, 어떤 점 PR3P \in \mathbb{R}^3이 프레임 BB에서 표현되어 있고, 프레임 BB가 프레임 AA에 대해 TBAT^A_B라는 동차변환을 가졌다면, 다음과 같이 점 PP를 프레임 AA 기준으로 변환할 수 있다:

PA=TBAPBP^A = T^A_B \cdot P^B

여기서 PBP^B[x y z 1]T[x\ y\ z\ 1]^T 형태의 동차 벡터이고, 결과 PAP^A는 프레임 A 기준에서 동일한 물리적 점의 좌표이다.



5. References


[1] Stanford Edu - Introduction to Robotics(CS223A)

[2] 서울대학교 융합과학기술대학원 박재흥 교수 - 로봇공학개론 수업

[3] 참고 서적:

  • Introduction to Robotics: Mechanics and Control, John J. Craig, Pearson Education
profile
인공지능 대학원 진학을 희망하는 학부생의 정리노트

0개의 댓글