URDF에서 조인트(joint)는 로봇의 각 링크(link)를 연결하여 움직임을 구현하는 중요한 요소이다. 조인트는 로봇의 구조적인 움직임과 동역학적 특성을 정의하는 데 사용되며, URDF는 여러 종류의 조인트를 지원하여 다양한 기계적인 움직임을 모델링할 수 있게 한다.

Revolute Joint (회전 조인트)

회전 조인트는 로봇의 두 링크가 특정 축을 기준으로 회전할 수 있게 하는 조인트이다. 회전 운동만 가능하며, 각속도와 각변위가 중요하다. 회전 조인트는 일반적으로 로봇 팔과 같은 구조에서 많이 사용된다.

\theta(t) = \int_0^t \dot{\theta}(t') \, dt'

여기서 \theta(t)는 시간 t에서의 각도, \dot{\theta}(t)는 각속도이다.

Prismatic Joint (프리즘 조인트)

프리즘 조인트는 두 링크 사이에 직선 운동을 허용하는 조인트이다. 로봇의 각 링크가 직선으로 이동할 수 있으며, 이는 주로 직선 운동을 필요로 하는 로봇 구조에서 사용된다.

x(t) = \int_0^t \dot{x}(t') \, dt'

여기서 x(t)는 시간 t에서의 변위, \dot{x}(t)는 속도이다.

Continuous Joint (연속 회전 조인트)

연속 회전 조인트는 회전 범위가 제한되지 않은 조인트이다. 즉, 두 링크 사이의 회전이 무한히 가능하여 360도 이상 회전할 수 있다. 이 조인트는 보통 바퀴나 프로펠러와 같은 부품에서 사용된다.

\theta(t) = \dot{\theta}(t) t

Fixed Joint (고정 조인트)

고정 조인트는 두 링크를 고정하여 상대적인 움직임이 없게 하는 조인트이다. 두 링크는 서로 고정되어 회전이나 이동이 불가능하며, 이를 통해 복잡한 로봇 구조를 간소화할 수 있다.

\mathbf{T}_{AB} = \mathbf{I}

여기서 \mathbf{T}_{AB}는 링크 A와 B 사이의 변환 행렬이며, 고정 조인트에서는 단위 행렬 \mathbf{I}가 된다.

Floating Joint (자유 조인트)

자유 조인트는 6자유도(3개의 회전, 3개의 평행 이동)를 모두 허용하는 조인트이다. 이는 링크 간의 모든 방향에서의 회전과 이동을 가능하게 한다. 보통 초기 위치 설정에만 사용되며, 시뮬레이션 도중에는 사용되지 않는 경우가 많다.

\mathbf{T}_{AB}(t) = \begin{bmatrix} R_{AB}(t) & \mathbf{d}_{AB}(t) \\ 0 & 1 \end{bmatrix}

여기서 R_{AB}(t)는 회전 행렬, \mathbf{d}_{AB}(t)는 위치 벡터이다.

Planar Joint (평면 조인트)

평면 조인트는 두 링크 간의 상대적인 움직임이 평면 내에서만 가능하게 하는 조인트이다. 두 링크는 지정된 평면 내에서만 회전과 평행 이동이 가능한다.

\mathbf{p}(t) = \begin{bmatrix} x(t) \\ y(t) \\ \theta(t) \end{bmatrix}

여기서 x(t), y(t)는 평면 내의 이동, \theta(t)는 평면 내의 회전을 나타낸다.

Ball Joint (구형 조인트)

구형 조인트는 3축 회전을 모두 허용하는 조인트이다. 링크 간에 회전 운동만 가능하며, 모든 회전축에 대해 자유롭게 움직일 수 있는 것이 특징이다. 주로 로봇의 조인트 부분에 사용되며, 자유로운 회전 운동을 필요로 하는 경우에 적합한다.

\mathbf{R}_{AB}(t) = \mathbf{R}_x(\alpha(t)) \mathbf{R}_y(\beta(t)) \mathbf{R}_z(\gamma(t))

여기서 \alpha(t), \beta(t), \gamma(t)는 각각 x, y, z축에 대한 회전 각도이다. \mathbf{R}_x, \mathbf{R}_y, \mathbf{R}_z는 각 축에 대한 회전 행렬이다.

Universal Joint (유니버설 조인트)

유니버설 조인트는 두 개의 회전 자유도를 가지는 조인트로, 일반적으로 두 축에 대한 회전 운동만 허용한다. 예를 들어, 로봇 팔이 두 축을 중심으로 독립적으로 회전할 수 있는 경우에 사용된다.

\mathbf{R}_{AB}(t) = \mathbf{R}_x(\alpha(t)) \mathbf{R}_y(\beta(t))

여기서 \alpha(t)\beta(t)는 각각 두 회전 축에 대한 회전 각도를 나타낸다.