Post

Week 1 "Robot Dynamics — Kinematics 입문"

Introduction to Robotics, Assumptions, Vector Notation, Body Frame, Recursion on 2D N Pendulum, Recursion for Position and Orientation

Week 1 "Robot Dynamics — Kinematics 입문"

Robot Dynamics: Kinematics 입문

1. Schematic Drawing and Terminology

로봇은 link(링크)joint(관절) 로 구성된 체인 구조.

Joint의 종류

Joint Type표현자유도$q_i$ 의미
Revolute Joint원통 모양1 (회전)joint angle [rad]
Prismatic Joint직사각형 모양1 (직선)joint displacement [m]

모든 관절값을 모은 벡터:

\[q = \begin{pmatrix} q_1 \\ q_2 \\ \vdots \end{pmatrix}\]

2. Joint Space vs. Work Space

\[\text{Joint Space} \xrightarrow{\text{DK (Direct Kinematics)}} \text{Work Space}\] \[\text{Work Space} \xrightarrow{\text{IK (Inverse Kinematics)}} \text{Joint Space}\]
공간표현설명
Joint Space$q \in \mathbb{R}^n$로봇 내부 관절값
Work Space$r_e, A_e$end-effector의 위치/자세
  • DK: $q$를 알면 end-effector 위치를 항상 유일하게 계산 가능
  • IK: 원하는 위치에서 $q$를 역으로 계산 → 해가 없거나, 하나거나, 여러 개일 수 있음

3. Overview of Chapters

전체 제어 흐름:

1
2
3
Task → [Planning: r_e, A_e → IK] → q → [Control: ID] → τ → Robot
                                                              ↓
                                                           Sensors (feedback)
챕터내용
KinematicsJoint Space ↔ Work Space 변환
Dynamics힘/토크와 운동의 관계
Planning경로 계획
Control모터 명령 전달

4. Vector Notation

벡터 vs. 좌표

같은 벡터 $r_2$라도 어느 frame에서 표현하느냐에 따라 숫자가 달라짐:

\[_f r_2 = \begin{pmatrix} 2\,\text{cm} \\ 1\,\text{cm} \\ 0 \end{pmatrix} \neq\; _h r_2\]
  • 왼쪽 아래 첨자 = 어느 frame에서 표현했는지
  • 벡터 자체는 frame-independent (물리적 실체)
  • 좌표는 frame-dependent (숫자 표현)

Vector Chain Rule

\[r_e = r_6 + r_{6e}\] \[r_{24} = r_4 - r_2\]

Frame 간 변환

\[_0 r_2 = {_2 A_0}^T \cdot {_2 r_2}\]

rotation matrix $A$의 역행렬 = transpose (orthonormal 행렬의 성질)


5. Why Do We Need Several Frames?

각 body $i$마다 body-fixed frame을 붙이는 이유:

Body description(관성 텐서 등)을 body-fixed frame에서 표현하면 시간에 따라 변하지 않는 상수가 됨

정보표기설명
Orientation$A_{i/0}$Body $i$가 inertial frame 대비 얼마나 돌아있는지
Body description$_{i/i}$자기 frame에서의 물리적 특성 → 상수
Position$r_{i/0}$Body $i$의 origin이 inertial frame에서 어디 있는지

joint angle $q_i$ 하나마다 새 frame이 하나씩 추가되고, 이전 frame 기준으로 표현하는 것이 kinematic chain의 핵심


6. Recursion on 2D N-Pendulum

N개 링크 진자에서 position/orientation을 재귀적으로 계산.

Position 재귀

\[_0 r_0 = 0\] \[_0 r_1 = {_0 r_0} + {_0 r_{01}} = 0\] \[_0 r_2 = {_0 r_1} + {_0 r_{12}} = 0 + c_1 \begin{pmatrix} \cos\phi_1 \\ \sin\phi_1 \end{pmatrix}\]

Orientation 재귀 (2D)

\[\phi_0 = 0, \quad \phi_1 = q_1, \quad \phi_2 = q_1 + q_2\]

2D에서 orientation은 joint angle의 단순 합산.


7. Recursion for Position and Orientation (3D)

주어진 정보

각 body $i$에 대해:

  • $0 r\pi$ : parent origin의 inertial frame 위치
  • $0 A\pi$ : parent orientation
  • $\pi r{\pi i}\big_{q_i=0}$ : $q_i = 0$일 때 상대 위치
  • $_\pi A_i\big_{q_i=0}$ : $q_i = 0$일 때 상대 orientation

Recursion 공식

\[_0 r_i = {_0 r_\pi} + {_0 A_\pi} \cdot {_\pi r_{\pi i}}\] \[_0 A_i = {_0 A_\pi} \cdot {_\pi A_i}\]

Revolute Joint ($+z$ 축 회전)

  • Position: $q_i$에 무관 (origin 위치 불변)
  • Orientation: $q_i$만큼 추가 회전
\[_{i|q_i=0} A_i = \begin{pmatrix} \cos q_i & -\sin q_i & 0 \\ \sin q_i & \cos q_i & 0 \\ 0 & 0 & 1 \end{pmatrix}\]

Revolute Joint ($-y$ 축 회전)

  • Position: $(0, 0, 0)$ 추가 (변화 없음)
  • Orientation: $-y$ 축이지만 부호 정의에 의해 $A_y(q_i)$와 동일한 형태
\[_{i|q_i=0} A_i = \begin{pmatrix} \cos q_i & 0 & -\sin q_i \\ 0 & 1 & 0 \\ \sin q_i & 0 & \cos q_i \end{pmatrix}\]

Prismatic Joint ($+z$ 축)

  • Position: $z$ 방향으로 $q_i$만큼 이동
\[_\pi r_{\pi i} = {_\pi r_{\pi i}}\big|_{q_i=0} + {_\pi A_i} \begin{pmatrix} 0 \\ 0 \\ q_i \end{pmatrix}\]
  • Orientation: 항상 단위행렬 (회전 없음)
\[_{i|q_i=0} A_i = I = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}\]

8. Joint Type 비교 요약

 Revolute JointPrismatic Joint
운동회전직선 이동
$q_i$각도 [rad]변위 [m]
Position 변화없음 (상수)$q_i$만큼 축 방향 이동
Orientation 변화$q_i$만큼 회전 행렬 추가없음 (단위행렬)
This post is licensed under CC BY 4.0 by PythonToGo .