운동학(Kinematics)은 물체의 운동을 기술하는 고전 역학의 한 분야이다. 운동학에서는 물체가 어떻게 움직이는지 설명하며, 움직임을 발생시키는 원인인 힘이나 토크는 고려하지 않는다. 이는 위치, 속도, 가속도 등의 물리량을 중심으로 분석하며, 로봇의 관절 각도 계산, 애니메이션 캐릭터의 자세 변경 등 다양한 응용 분야에 사용된다.
- 순방향 운동학(Forward Kinematics): 주어진 입력(관절 각도 등)을 기반으로 결과 위치(말단 위치)를 계산한다.
- 역방향 운동학(Inverse Kinematics): 목표 위치를 기반으로 이를 만족하는 입력(관절 각도 등)을 계산한다.
역학 (Mechanics)
역학(Mechanics)은 물체의 힘, 운동, 상호작용을 다루는 학문으로, 두 가지 주요 분야로 나뉜다
- 정역학(Statics): 정지 상태의 물체와 평형을 연구하며, 외부 힘과 토크의 합이 0인 상태를 다룬다.
- 동역학(Dynamics): 시간에 따라 물체가 어떻게 움직이는지 연구하며, 여기서 다시 두 하위 분야로 세분화된다
- 운동학(Kinematics): 물체의 움직임을 기술.
- 운동역학(Kinetics): 움직임을 발생시키는 힘과 토크를 분석.
1. 구성 상태 (Cofiguration)
자유도 (Freedom)
자유도(Degree of Freedom, DoF)는 물체가 독립적으로 움직일 수 있는 가능한 방향이나 축의 수를 의미한다. 이는 물체의 움직임을 기술하기 위해 필요한 최소 좌표의 개수를 나타내며, 구성 공간의 차원을 정의한다. 자유도는 물체의 위치와 방향을 완전히 설명하기 위해 필요한 변수의 수로도 이해할 수 있다.
먼저, 3D 공간에서의 단단한 물체를 예로 들면, 물체는 x, y, z의 세 가지 위치 좌표와 θ₁, θ₂, θ₃의 세 가지 회전 각도를 가진다. 따라서 총 6개의 자유도를 가진다. 예를 들어, 공중에 떠 있는 드론을 생각해보면, 드론은 앞뒤(x), 좌우(y), 상하(z)로 이동할 수 있고, 좌우로 기울기(roll), 앞뒤로 기울기(pitch), 회전(yaw)도 가능하다. 이는 드론이 6개의 독립적인 움직임을 가질 수 있음을 보여준다.
2D 평면에서의 물체는 더 단순한 사례이다. 물체는 x, y 두 위치 좌표와 회전 각도 θ로 설명되므로, 총 3개의 자유도를 가진다. 예를 들어, 탁자 위의 컵을 생각해보자. 컵은 탁자 위에서 좌우(x), 앞뒤(y)로 움직일 수 있으며, 회전(θ)도 가능하다. 그러나 컵은 위아래(z)로 움직일 수 없고 기울기도 불가능하기 때문에 자유도가 3으로 제한된다.
자유도의 계산은 다음과 같은 수식으로 이루어진다: 자유도 = (총 변수 수) − (독립적인 제한 조건의 수)
이를 적용하기 위해 위에 동전 예시에서 이번에는 동전 위에 3개의 점을 정해보자
이 평면이 좌표계에 있다고 할때 이 3개의 점은 로 표현 할 수 있다. 만약 이 3개의 점이 이 평면에서 어디에든 서로 독립적으로 움직일 수 있다면 이 한 점의 자유도는 2임으로 동전의 자유도가 6이 된다. 하지만 동전은 강체임으로 각각의 점 사이에 거리는 모두 일정하다. 그럼으로 다음과 같은 제약조건 식을 세울 수 있다.
여기에 앞에서 설명한 규칙을 적용하면
동전의 자유도 = 6 (모든 점의 자유도의 합) - 3 (독립적인 제약조건의 개수) = 3
이렇게 앞에서 설명한 동전의 자유도와 같은 것을 알 수 있다. 이와같은 방식을 적용하면 3차원에 놓여진 강체의 자유도는 6이라는 것을 알 수 있다. 로봇은 강체로 이루어 졌기 때문에 게임 내 캐릭터에서는 위 규칙을 다음과 같이 나타낼 수 있다.
이는 물체가 가질 수 있는 모든 가능한 움직임에서 제한 조건(예: 고정, 접촉, 구속 등)을 빼는 방식으로 계산된다.
이와 같은 방식으로 자유도는 물체의 움직임에 제약이 추가될 때마다 줄어든다. 다른 예시로 자동차의 경우를 생각해보자. 자동차는 도로 위에서 좌우(x), 앞뒤(y)로 움직일 수 있지만, 위아래(z)로는 움직이지 않는다. 또한, 도로와의 마찰로 인해 자동차는 옆으로 미끄러질 수 없고, 단지 앞뒤로 회전하거나 이동할 수만 있다. 이 경우 자동차의 자유도는 3D 공간의 6개에서 제약으로 인해 3개(앞뒤 이동, 좌우 방향 전환, 회전)로 줄어든다.
조인트(Joint)와 링크(Link)
로봇이나 인체를 모델링할 때 조인트(Joint)와 링크(Link)의 정의는 필수적이다. 조인트는 두 개의 링크를 연결하여 상대적인 움직임을 허용하는 메커니즘이며, 링크는 조인트 사이를 연결하는 강체(변형이 없는 물체)이다. 조인트와 링크는 함께 작동하여 복잡한 동작을 만들어 낼 수 있다. 조인트의 주요 종류와 각 특징은 다음과 같다:
- 회전 조인트(Revolute Joint)
회전 조인트는 하나의 회전 자유도(1-DoF)를 가지며, 가장 단순하고 일반적으로 사용되는 조인트 유형이다. 이 조인트는 축을 중심으로 링크가 회전할 수 있도록 한다. 예를 들어, 로봇 팔의 각 관절은 회전 조인트로 구성되어 있으며, 문을 열고 닫는 경첩 또한 회전 조인트의 한 예이다. 이러한 조인트는 특정 각도로만 움직일 수 있는 제한을 가지며, 회전 각도를 제어함으로써 원하는 동작을 구현한다. - 프리즘 조인트(Prismatic Joint)
프리즘 조인트는 직선 방향의 움직임을 허용하는 조인트로, 1-DoF를 가진다. 이 조인트는 링크가 고정된 축을 따라 슬라이딩하듯 움직이도록 한다. 예를 들어, 자동차 엔진의 피스톤은 프리즘 조인트의 대표적인 사례이다. 또한, 공장 자동화 시스템에서 사용되는 로봇의 선형 슬라이더도 프리즘 조인트로 작동한다. - 구형 조인트(Spherical Joint)
구형 조인트는 3개의 회전 자유도(3-DoF)를 가지며, 여러 방향으로 회전할 수 있다. 인체의 어깨 관절은 구형 조인트의 대표적인 예로, 팔이 여러 방향으로 회전하고 회전축이 바뀌는 복잡한 움직임을 가능하게 한다. 이러한 조인트는 특히 로봇 공학에서 다축 회전이 필요한 상황이나, 자연스러운 움직임을 구현하기 위해 사용된다. - 힌지 조인트(Hinge Joint)
힌지 조인트는 한 방향으로만 회전을 허용하는 조인트로, 1-DoF를 가진다. 팔꿈치나 무릎과 같은 인체 관절이 힌지 조인트의 대표적인 사례이다. 이 조인트는 회전 각도를 제한하여 특정 방향으로만 움직일 수 있게 한다. 로봇의 경우, 도어 로봇이나 간단한 기계 관절에서 힌지 조인트가 자주 사용된다.
링크(Link)는 조인트를 통해 서로 연결되는 강체로, 조인트 간의 거리를 유지하며 힘과 운동을 전달하는 역할을 한다. 모든 링크는 강체로 가정되며, 변형이 발생하지 않는 이상적인 상태에서 작동한다. 예를 들어, 로봇 팔의 각 부분(상완, 전완)은 링크로 간주될 수 있으며, 조인트를 통해 서로 연결되어 있다. 링크와 조인트의 상호작용은 부모-자식 관계로 정의된다. 한 링크가 움직이면, 해당 링크에 연결된 다른 링크도 영향을 받아 연쇄적으로 움직인다. 예를 들어, 인간의 손을 들어 올리는 동작을 생각해보자. 손의 움직임은 팔꿈치와 어깨 관절의 회전으로 인해 발생하며, 팔의 각 링크가 부모-자식 관계를 통해 서로 영향을 주고받는다. 로봇의 경우, 링크의 길이와 조인트의 회전 범위를 조절하여 다양한 궤적을 생성할 수 있다.
다음은 전형적인 로봇 관절이다.
모든 관절은 정확히 두 개의 링크를 연결하며, 세 개 이상의 링크를 동시에 연결하는 것은 허용하지 않는다. 다음은 로봇 관절이 제공하는 자유도 와 제약조건 이다.
예를 들어 원통형(Cylindrical)관절은 하나의 공간 강체에 다른 강체에 대한 5개의 제약조건을 가함으로서 두 강체 사이에 하나의 자유도를 부여한다. 여기서 2.1에서 설명한 자유도 규칙이 적용되는 것을 알 수 있다.(6-5=1)
Grübler's Formula (그뤼블러의 공식)
링크와 관절로 이루어진 매커니즘의 자유도는 그뤼블러의 공식으로 계산할 수 있다. 이 공식은 매커니즘의 각 구성 요소가 제공하는 자유도와 제약조건을 기반으로 시스템의 자유도를 정의한다. 특히, 매커니즘이 평면에서 작동할 경우 강체의 자유도 m=3m = 3이 되고, 이를 활용하여 자유도를 계산할 수 있다. 단, 이 공식은 모든 관절 제약조건이 독립적일 때만 성립한다.
그뤼블러 공식은 다음과 같이 표현된다.
- 링크의 개수:
- 관절의 개수:
- 강체의 자유도: (공간:=6, 평면:=3)
- 관절 가 제공하는 자유도:
- 관절 가 제공하는 제약조건의 수:
위에 상황을 2.1.에서 설명한 규칙에 적용하면 로봇의 자유도를 쉽게 구할 수 있는 공식이 나온다.
이 식은 관절 제약조건이 독립이 아니면 성립하지 않으며 이 공식을 그뤼블러의 공식이라고 한다.
아래 그림에 나오는 매커니즘에 그뤼블러 공식을 적용해 보자
평맨 매카니즘임으로 이다.
- (a)의 경우
임으로 자유도는 이다.
- (b)의 경우
2개의 방법으로 분석 할 수 있다.
1). 3개의 회전형 관절과 1개의 선형관절 그리고 4개의 링크
2). 2개의 회전형 관절과 1개의 RP관절(회전형 관절과 선형 관절을 연결한 것 )
더 많은 예제는 본 책에서 볼 수 있다.
구성 공간(Configuration Space)
구성 공간(Configuration Space*은 로봇이나 시스템의 모든 가능한 상태를 표현하는 공간이다. 이 공간은 시스템의 상태를 수학적으로 정의하며, 로봇 공학, 물리 기반 시뮬레이션, 게임 엔진 등에서 상태 표현과 경로 계획을 위해 사용된다.
구성 공간은 시스템이 가질 수 있는 모든 가능한 상태를 좌표의 집합으로 나타낸다. 각 상태는 특정 위치와 방향을 나타내는 하나의 점으로 구성 공간에 매핑된다. 구성 공간의 차원은 시스템의 자유도(Degree of Freedom, DoF)에 따라 달라지며, 자유도의 수는 구성 공간의 차원을 결정한다.
위상 동형 (Topology Equivalent)
위상 공간의 개념은 공간의 모양과 구조를 이해하는 데 중요한 역할을 한다. 예를 들어, 구의 표면에서 움직이는 점은 위도와 경도로 표현되며, 이 경우 상태 공간(Configuration Space, C-Space)은 2차원이다. 마찬가지로, x−y 평면 위에서 움직이는 점은 좌표 (x,y)로 표현되며, 이 경우의 상태 공간도 2차원이다. 그러나 이 두 C-Space는 같은 차원이지만, 모양이 다르다는 점에서 차이가 있다. x−y 평면은 끝이 없이 무한히 확장되는 반면, 구의 표면은 끝이 감싸진 형태를 가지므로, 두 공간은 위상 동형이 아니다.
위상 동형(topological equivalence)은 한 공간을 자르거나 붙이지 않고 다른 공간으로 연속적으로 변형할 수 있을 때 성립한다. 예를 들어, 구의 표면을 부드럽게 눌러 미식축구공처럼 타원형으로 만드는 것은 자르거나 붙이는 작업이 필요 없으므로, 구와 타원형은 위상 동형이다. 반대로, 구를 평면으로 펴는 경우에는 자르는 작업이 필요하므로 위상 동형이 아니다.
위상을 이해하기 쉬운 예로 1차원 공간을 생각해보자. 무한히 뻗어 있는 직선은 위상적으로 열려 있는 구간 (a,b)와 유사하다. 반면, 원(circle)은 끝이 감싸져 있는 닫힌 형태로, 직선이나 열려 있는 구간과는 위상적으로 다르다. 또한, 직선의 닫힌 구간 [a,b]는 시작과 끝이 있는 제한된 공간으로, 열려 있는 구간이나 원과도 다르다.
이러한 위상적 구분은 상태 공간을 이해하는 데 유용하다. 예를 들어, 로봇 팔의 상태 공간은 각 관절의 회전 각도(원형 공간 S^1와 길이 (직선 구간 [a,b])의 곱으로 표현할 수 있다. 이는 낮은 차원의 공간들(예: 원과 선분)을 결합해 더 복잡한 상태 공간을 구성하는 방식의 좋은 예다.
예를들어 평면상의 강체의 configulation은 위치를 나타내는 와 방향을 나타내는 으로 표현됨으로
C-Space는 으로 나타낼 수 있다.
2D 평면 위에서 움직이는 강체 물체는 x, y 위치와 회전 각도 θ로 표현된다 (왼쪽 그림). 이는 유클리드 평면 R2와 원형 공간 S1의 곱으로 나타낼 수 있다. 즉, 구성 공간은 R2×S1이다. 책상이 놓인 방 안에서 로봇 청소기가 움직인다고 가정하자. 청소기의 상태는 방 안에서의 위치 (x, y)와 회전 방향 θ로 표현된다. 이를 구성 공간에 나타내면, 청소기의 모든 가능한 상태가 이 공간의 한 점으로 매핑된다.
위 그림은 2D 평면에서 움직이는 강체 물체의 구성 공간을 나타낸다.
- 왼쪽 그림은 R2 평면을 보여주며, 로봇 청소기의 위치(x, y)와 회전 방향(θ)이 표시된다. 화살표는 로봇의 회전 방향(θ\theta)을 나타낸다.
- 오른쪽 그림은 공간(원형 공간)을 나타내며, 로봇의 방향(θ)이 원 위의 점으로 매핑된다. 이는 로봇의 회전 상태를 정의하는 구성 요소이다.
2개의 관절을 가진 로봇 팔은 각 관절의 회전 각도 θ₁, θ₂로 상태를 표현할 수 있다. 이는 두 개의 원형 공간 S1의 곱으로 나타내어 구성 공간이 S1×S1이 된다. 로봇 팔의 끝부분(말단)이 특정 위치에 도달하도록 설계해야 한다면, 구성 공간 상에서 θ₁와 θ₂의 모든 조합을 탐색하여 목표 위치를 만족하는 상태를 찾을 수 있다.
구성 공간은 두 가지 방식으로 정의할 수 있다:
명시적 표현(Explicit Representation)
명시적 표현은 구성 공간의 각 상태를 좌표로 명확히 나타내는 방식으로, 예를 들어 3D 공간에서 움직이는 로봇의 상태를 (x,y,z,θ1,θ2,θ3)와 같은 형태로 정의한다. 이는 로봇의 모든 가능한 상태를 명확히 파악할 수 있게 해주지만, 때로는 한계가 있다. 예를 들어, 구의 표면을 위도와 경도로 표현할 때, 위도는 [−90∘,90∘], 경도는 [−180∘,180∘)의 범위 내에서만 유효하다. 이런 표현은 북극점과 남극점과 같은 특이점(singularities)을 가진다. 특이점에서는 좌표 값이 큰 변화(예: 북극 근처에서 경도의 급격한 변화)를 보이며, 이는 속도 계산 시 좌표의 시간 변화율이 무한대로 발산하는 문제를 일으킬 수 있다. 이러한 특이점이 실제 로봇의 구성 공간에서 접근 가능하다면, 이를 회피하거나 수정된 표현 방법을 사용해 문제를 해결해야 한다.
암시적 표현(Implicit Representation)
암시적 표현은 상태를 나타내는 제약 조건을 통해 구성 공간을 정의하는 방식이다. 예를 들어, 구의 표면 위에 있는 물체의 상태는 x^2 + y^2 + z^2 = r^2라는 제약 조건을 만족하는 점들로 표현된다. 여기서 r은 구의 반지름으로, 이 조건은 물체가 구의 표면 위에 있다는 사실을 수학적으로 암시한다. 이는 직접적 매개변수화에서 발생하는 특이점 문제를 해결할 수 있는 방법이다. 암시적 표현은 n차원 공간을 표현할 때 n개 이상의 변수를 사용하고, 이에 제약 조건을 추가해 자유도를 제한하는 방식으로 작동한다. 예를 들어, 회전행렬(rotation matrix)은 9개의 매개변수와 6개의 제약 조건을 통해 3차원 공간상의 방향을 표현하며, 롤-피치-요 각도와 달리 특이점이 없어 안정적인 표현을 제공한다. 이는 n차원보다 높은 차원의 공간에서 제약 조건을 통해 n차원을 표현한다고 생각할 수 있다.
계층적 모델링(Hierarchical Modeling)
계층적 모델링(Hierarchical Modeling)은 복잡한 시스템을 단순하고 체계적으로 표현하는 기법으로, 특히 인체 모델링과 같은 골격 기반 구조에서 자주 사용된다. 이 방식은 각 구성 요소를 부모-자식 관계로 정의하여 동작을 효율적으로 제어할 수 있으며, 자연스럽고 현실감 있는 움직임을 구현하는 데 적합하다.
인체 모델링에서 골격은 링크(뼈)와 조인트(관절)로 구성되며, 부모-자식 관계를 통해 각 구성 요소의 움직임이 상호 영향을 주고받는다. 예를 들어, 인간 팔의 골격 구조에서 어깨는 부모 노드로, 상완과 전완은 각각 자식 노드로 정의된다. 어깨가 움직이면 상완, 전완, 손으로 연쇄적으로 변환이 전파되어 자연스러운 동작이 구현된다. 이러한 관계는 관절의 국소적 변환(Local Transformation)과 이를 체인을 따라 전달하는체인 전파(Chain Propagation)를 통해 구현된다. 각 관절의 회전과 이동은 독립적으로 정의되며, 부모 링크의 변환이 자식 링크로 전달되면서 최종적으로 말단 링크의 위치와 방향이 결정된다.
지금까지 운동학 (Kinematics)를 이해하는데 필요한 내용들을 다루었다. 이후에는 정방향 운동학 (Forward Kinematics)과 역방향 운동학 (inverse Kinematics)에 대해 다룰 것이다.
'Computer Graphics > Animation Kinematics' 카테고리의 다른 글
Animation Kinematics [3] : 운동학 수치 해석 (Kinematics Numerical approach) (0) | 2024.12.14 |
---|---|
Animation Kinematics [2] : 역기구학 (Inverse Kinematics) (0) | 2024.10.08 |
Animation Kinematics [1] : 정방향 운동학 (Forward kinematics) (0) | 2024.09.28 |