링크 정의

SDF(Simulation Description Format)에서 링크(link)는 로봇의 개별적인 부분들을 나타내며, 각각의 링크는 로봇의 구조적 요소를 표현한다. 링크는 물리적 속성, 시각적 속성, 그리고 충돌 모델을 포함하며, 각각의 요소는 로봇의 시뮬레이션 동작에 중요한 영향을 미친다. 링크의 정의는 다음과 같은 필수적인 요소들을 포함한다.

물리적 속성

링크의 물리적 속성은 질량(mass), 관성(inertia), 질량 중심(center of mass) 등을 정의한다. 이러한 속성은 로봇의 동역학적 시뮬레이션에 중요한 역할을 하며, 특히 질량과 관성 모멘트는 링크의 운동에 영향을 준다.

링크의 질량 m은 다음과 같이 정의된다.

m = \text{질량 값}

관성 모멘트는 3x3 대칭 행렬로 나타내며, 링크의 각 축에 대한 관성 값을 정의한다. 관성 행렬 \mathbf{I}는 다음과 같은 형태를 갖는다.

\mathbf{I} = \begin{bmatrix} I_{xx} & I_{xy} & I_{xz} \\ I_{xy} & I_{yy} & I_{yz} \\ I_{xz} & I_{yz} & I_{zz} \end{bmatrix}

여기서 I_{xx}, I_{yy}, I_{zz}는 각 축에 대한 관성 모멘트, I_{xy}, I_{xz}, I_{yz}는 상호 관성 모멘트를 나타낸다. 관성 모멘트는 로봇이 움직일 때 회전에 얼마나 저항하는지를 결정하므로, 링크의 물리적 크기와 질량 분포에 따라 적절하게 설정해야 한다.

질량 중심은 \mathbf{c} = \begin{bmatrix} c_x & c_y & c_z \end{bmatrix}^\top로 나타내며, 로봇의 각 링크에 대한 질량 중심 좌표를 정의한다. 질량 중심은 링크의 모양과 물질 분포에 따라 달라지며, 링크의 동적 움직임에 중요한 영향을 미친다.

조인트 정의

조인트(joint)는 두 링크를 연결하는 요소로, 링크 간의 상대적인 움직임을 정의한다. SDF에서 조인트는 링크 간의 회전 및 병진 운동을 제어하며, 조인트의 유형에 따라 움직임의 자유도가 달라진다.

조인트의 종류

조인트에는 다양한 종류가 있으며, 각 조인트는 로봇의 특정 운동 메커니즘을 나타낸다. 주요 조인트의 종류는 다음과 같다.

  1. 고정 조인트(fixed joint): 링크 간의 상대적 움직임이 없는 조인트로, 두 링크를 단단히 고정한다.

  2. 회전 조인트(revolute joint): 하나의 축을 중심으로 회전 운동을 허용하는 조인트이다. 회전 축에 대한 제한 및 자유도를 정의할 수 있다.

  3. 프리스매틱 조인트(prismatic joint): 링크 간의 병진 운동을 허용하는 조인트로, 하나의 축을 따라 직선 운동이 가능한다.

  4. 연속 조인트(continuous joint): 제한 없이 무한 회전이 가능한 조인트이다. 로봇 팔의 회전 등에서 자주 사용된다.

  5. 플래너 조인트(planar joint): 링크 간의 2차원 평면에서 자유로운 병진 운동과 회전 운동을 허용한다.

조인트의 물리적 속성

조인트에는 물리적 속성 또한 정의해야 한다. 특히, 조인트가 회전 또는 병진 운동을 할 때 저항하는 힘, 즉 마찰(coefficient of friction) 및 감쇠(damping)를 설정할 수 있다. 이를 통해 로봇의 움직임이 현실적으로 모사될 수 있다.

마찰 계수 \mu는 조인트가 움직일 때 발생하는 저항력을 나타내며, 다음과 같이 설정된다.

\mu = \text{마찰 계수 값}

감쇠 계수 d는 조인트의 운동 속도를 감소시키는 역할을 하며, 다음과 같이 정의된다.

d = \text{감쇠 계수 값}

이를 통해 로봇이 움직일 때 더 부드럽고 현실적인 동작을 하도록 조절할 수 있다.

조인트의 자유도 (Degree of Freedom)

각 조인트는 여러 축을 따라 운동할 수 있으며, 이러한 운동은 자유도(DOF, Degree of Freedom)로 정의된다. 조인트가 허용하는 자유도는 조인트의 종류에 따라 달라진다.

자유도는 조인트의 운동을 기술하는 중요한 요소이며, 각 자유도에 대한 상한과 하한을 설정하여 조인트의 움직임을 제어할 수 있다. 예를 들어, 회전 조인트의 각도 제한은 다음과 같이 정의된다.

\theta_{\text{min}} \leq \theta \leq \theta_{\text{max}}

여기서 \theta_{\text{min}}은 최소 회전 각도, \theta_{\text{max}}은 최대 회전 각도를 의미한다.

프리스매틱 조인트의 경우, 병진 운동에 대한 범위는 다음과 같은 수식으로 정의된다.

d_{\text{min}} \leq d \leq d_{\text{max}}

여기서 d_{\text{min}}은 최소 변위, d_{\text{max}}은 최대 변위를 나타낸다.

조인트의 운동 제약

SDF에서 조인트의 운동은 제약 조건을 통해 정의될 수 있다. 제약 조건은 특정 범위 내에서 조인트의 움직임을 제한하거나, 특정 조건 하에서만 움직일 수 있도록 설정하는 것을 의미한다. 주로 각도 제한과 병진 범위를 설정하여 로봇의 움직임을 제어한다.

회전 조인트의 제약

회전 조인트는 주어진 축을 중심으로 회전하지만, 특정 각도로만 회전할 수 있도록 제약을 설정할 수 있다. 예를 들어, 로봇 팔의 조인트가 특정 범위를 넘어서는 각도로 회전하지 않도록 설정할 수 있다. 회전 조인트의 각도 제약은 다음과 같이 설정된다.

\theta_{\text{min}} = -\frac{\pi}{2}, \quad \theta_{\text{max}} = \frac{\pi}{2}

이 경우, 조인트는 -90도에서 90도 사이의 범위에서만 회전할 수 있다.

프리스매틱 조인트의 제약

프리스매틱 조인트는 직선 운동을 할 수 있지만, 특정 거리만큼만 움직일 수 있도록 제약할 수 있다. 예를 들어, 로봇 팔이 일정 범위 이상의 직선 운동을 하지 않도록 설정할 수 있다. 프리스매틱 조인트의 직선 운동 범위는 다음과 같이 정의된다.

d_{\text{min}} = 0, \quad d_{\text{max}} = 0.1

이 제약에 따라, 프리스매틱 조인트는 0에서 0.1m 사이의 범위에서만 직선 운동을 할 수 있다.

조인트의 초기 상태

SDF에서는 조인트의 초기 상태(Initial State)를 설정할 수 있다. 초기 상태는 시뮬레이션이 시작될 때 조인트가 어느 위치에 있는지를 정의한다. 회전 조인트의 경우, 초기 각도는 다음과 같이 설정된다.

\theta_{\text{init}} = 0

프리스매틱 조인트의 경우, 초기 변위는 다음과 같이 설정된다.

d_{\text{init}} = 0.05

초기 상태를 적절히 설정하면 시뮬레이션이 시작될 때 로봇이 의도한 위치에서 동작을 시작할 수 있다.

조인트의 제어

SDF에서 조인트의 제어는 특정 힘이나 토크를 가하는 방식으로 이루어진다. 회전 조인트의 경우, 회전 운동을 제어하기 위해 토크 \tau를 가할 수 있으며, 프리스매틱 조인트의 경우에는 힘 F를 가하여 직선 운동을 제어할 수 있다.

\tau = \text{적용된 토크 값}
F = \text{적용된 힘 값}

적절한 토크와 힘을 적용하면 로봇의 조인트 운동을 효과적으로 제어할 수 있으며, 이를 통해 로봇의 움직임을 시뮬레이션 환경에서 제어할 수 있다.

조인트의 감쇠와 스프링

SDF에서는 조인트에 감쇠(damping)와 스프링(spring)을 설정하여 로봇의 움직임을 더 현실적으로 시뮬레이션할 수 있다. 감쇠는 조인트의 움직임 속도를 줄이거나 저항을 가하는 역할을 하고, 스프링은 조인트가 특정 위치로 복원되도록 하는 힘을 제공한다.

감쇠 계수 (Damping Coefficient)

감쇠는 조인트가 움직일 때 저항하는 힘을 나타내며, 감쇠 계수 d는 운동의 속도에 비례하는 저항력을 정의한다. 회전 조인트에서 감쇠는 다음과 같이 정의된다.

\tau_{\text{damping}} = -d \cdot \dot{\theta}

여기서 \dot{\theta}는 조인트의 각속도이며, 감쇠 계수 d는 단위 시간당 조인트의 회전 운동을 저항하는 정도를 나타낸다.

프리스매틱 조인트에서 감쇠는 직선 운동의 속도에 비례하는 저항력으로 표현된다.

F_{\text{damping}} = -d \cdot \dot{d}

여기서 \dot{d}는 직선 운동의 속도이다. 감쇠 계수가 높을수록 조인트가 느리게 움직이며, 감쇠 계수를 적절하게 설정하면 로봇이 움직일 때 과도한 진동을 억제할 수 있다.

스프링 계수 (Spring Coefficient)

스프링은 조인트가 특정 위치로 돌아가도록 하는 힘을 제공한다. 스프링 계수 k는 조인트가 이동했을 때 그 위치로 복원하려는 힘의 크기를 결정한다. 회전 조인트에서 스프링의 복원력은 다음과 같이 정의된다.

\tau_{\text{spring}} = -k \cdot (\theta - \theta_0)

여기서 \theta_0는 조인트의 평형 위치(기본 위치)이고, \theta는 현재 위치이다. 스프링 계수 k가 높을수록 조인트가 빠르게 평형 위치로 돌아오려는 힘이 커진다.

프리스매틱 조인트에서 스프링의 복원력은 다음과 같이 표현된다.

F_{\text{spring}} = -k \cdot (d - d_0)

여기서 d_0는 조인트의 평형 위치이다. 스프링 계수는 조인트가 특정 위치를 벗어났을 때 이를 복원하려는 힘을 제공한다.

조인트의 제약 강성 (Constraint Stiffness)

SDF에서는 조인트에 대해 특정 제약을 설정할 때 제약 강성(constraint stiffness)을 설정할 수 있다. 제약 강성은 조인트가 설정된 제약 범위를 벗어났을 때 이를 얼마나 강하게 복원하려는지를 나타낸다. 제약 강성은 다음과 같은 수식으로 정의된다.

\tau_{\text{constraint}} = -k_{\text{constraint}} \cdot (\theta - \theta_{\text{constraint}})

여기서 k_{\text{constraint}}는 제약 강성을 나타내며, \theta_{\text{constraint}}는 조인트가 따라야 하는 제약된 위치이다. 이 값을 통해 조인트가 제약을 넘어가지 않도록 강하게 제어할 수 있다.

프리스매틱 조인트의 경우, 제약 강성은 다음과 같이 정의된다.

F_{\text{constraint}} = -k_{\text{constraint}} \cdot (d - d_{\text{constraint}})

이러한 제약 강성은 로봇의 동작 범위를 제어하는 데 중요한 역할을 하며, 특히 조인트가 물리적 한계를 넘지 않도록 설정할 때 유용하다.

조인트 모터의 설정

SDF에서 조인트에 모터를 추가하여 직접적으로 구동할 수 있다. 모터는 특정 힘이나 토크를 적용하여 조인트를 제어하며, 회전 조인트의 경우 모터의 토크는 다음과 같이 설정된다.

\tau_{\text{motor}} = \text{모터에 적용되는 토크 값}

프리스매틱 조인트의 경우, 모터의 힘은 다음과 같이 정의된다.

F_{\text{motor}} = \text{모터에 적용되는 힘 값}

모터는 로봇의 특정 동작을 제어하는 데 중요한 역할을 하며, 이를 통해 로봇의 각 조인트나 링크를 정밀하게 움직일 수 있다.

조인트의 속도 및 위치 제어

SDF에서는 조인트의 위치나 속도를 제어할 수 있는 설정이 있다. 위치 제어(Position Control)는 조인트가 특정 각도나 위치에 도달하도록 힘을 가하는 방식이고, 속도 제어(Velocity Control)는 특정 속도로 조인트가 움직이도록 설정하는 방식이다.

위치 제어

위치 제어는 다음과 같은 수식을 따른다.

\theta_{\text{desired}} = \theta_{\text{target}}

여기서 \theta_{\text{target}}은 목표 위치(각도)이다. 조인트는 이 목표 위치에 도달하도록 구동된다.

속도 제어

속도 제어는 조인트가 일정한 속도로 움직이도록 한다. 회전 조인트의 경우 속도 제어는 다음과 같이 설정된다.

\dot{\theta}_{\text{desired}} = \dot{\theta}_{\text{target}}

프리스매틱 조인트의 경우, 직선 속도는 다음과 같이 설정된다.

\dot{d}_{\text{desired}} = \dot{d}_{\text{target}}

이를 통해 로봇의 조인트가 일정한 속도나 위치를 유지하면서 동작하도록 제어할 수 있다.