Kinematics & Planning
로봇의 좌표계 변환, 정/역 기구학 모델링 및 장애물 회피를 위한 경로 계획 알고리즘의 물리적 구현을 학습하는 노드입니다.
Article
M
Me
hyunyoun's Blog
computer-architecture-embedded-systemscomputer-architectureembedded-systemsroboticscontrol-systems-mechanicskinematicsplanninglearning8 min read
1. Overview
운동학과 경로 계획(Kinematics & Planning)은 바퀴와 관절 덩어리인 로봇이 공간(X, Y, Z) 속에서 자신의 손끝 위치를 수학적으로 특정하고, 장해물을 피해 목표 지점까지 궤적(Trajectory)을 부드럽게 그려내는 로보틱스의 기하학적 두뇌이자 네비게이션 공학입니다.
학습자는 모터 각도를 3차원 위치 좌표로 변환하는 정기구학(Forward Kinematics) 행렬 곱셈과, 반대로 "머그컵을 집으려면 어깨와 팔꿈치를 몇 도 꺾어야 하는가?"를 역산하는 극악의 난제, 역기구학(Inverse Kinematics) 역학을 뜯어봅니다. 나아가 허공을 휘젓는 관절 로봇뿐 아니라 바퀴 달린 자동차 로봇(Differential Drive)의 비홀로노믹(Non-holonomic) 움직임 제약을 해부하고, 장애물 지도 속에서 A*나 RRT 알고리즘으로 길을 찾고 미분 가능한 부드러운 스플라인 궤적을 쏘아내는 모션 플래닝(Motion Planning) 아키텍트 역량을 확보합니다.
2. Scope & Boundaries
In-Scope
- 공간 기하학 (Spatial Geometry): 동차 변환 행렬(Homogeneous Transformation Matrix), 회전(Rotation), 이동(Translation), 쿼터니언(Quaternion)과 오일러 각.
- 매니퓰레이터 운동학 (Manipulator Kinematics): 관절(Joint) 변수, 정기구학(FK), 역기구학(IK, 해석적 및 수치적 방법), 야코비안(Jacobian) 행렬과 특이점(Singularity).
- 모바일 로봇 기구학 (Mobile Kinematics): 차동 구동(Differential Drive), 스티어링 기하학(Ackermann), 비홀로노믹 제약(옆으로 못 가는 자동차).
- 경로 및 궤적 계획 (Planning): 전역 경로 탐색(A*, RRT), 궤적 생성(Cubic Spline, Trapezoidal Velocity), 지역 회피(DWA).
Out-of-Scope
- 동역학적 힘 제어 (Dynamics & Force Control): 팔을 뻗을 때 필요한 '토크'와 '관성 모멘트'를 계산하는 물리 02-08-01. Actuators & Physical Modeling 영역.
- 비전 센서 및 SLAM: 카메라로 장애물을 인식하고 지도를 실시간으로 그리는 인식 영역 02-08-03. Sensor Fusion & State Estimation 영역. (※ 이 모듈은 주어진 지도 안에서의 '움직임 기하학'만 다룸)
Boundaries
- Kinematics vs. Dynamics (02-08-01): 동역학(02-08-01)이 "이 로봇 팔(10kg)을 1초 만에 저기로 뻗으려면 모터가 몇 Nm의 토크(힘)를 쏟아야 쇳덩이가 안 부러질까?"라면, 운동학(Kinematics)은 "힘이 얼마 들던 그건 내 알 바 아니고, 팔꿈치 30도, 손목 15도 돌리면 손끝 좌표가 허공 (X=3, Y=5)에 정확히 꽂힌다"라는 뼈다귀 기하학(Geometry)의 세계입니다.
3. Counterexample
- 역기구학 특이점(Singularity) 무지 (Robotic Arm Lock): 역기구학 수식만 믿고 로봇 팔을 쭉 일직선으로 뻗어버리는 경로를 짜는 초보적인 실수. 관절이 일직선으로 펴지는(Singularity) 순간 수학적 행렬식(야코비안의 행렬식)이 0이 되어, 제어기가 수만 도의 속도를 모터에 때려 넣어버리고 로봇 팔이 발작을 일으키며 스스로 모터를 부러뜨립니다. 로봇 팔의 궤적은 반드시 특이점 구역을 우회하도록(Avoidance) 튜닝되어야 합니다.
- 자동차 바퀴의 비홀로노믹 제약 무시 (Crab Walk Illusion): 자율주행 자동차(바퀴 4개)에게 로봇 청소기처럼 "오른쪽 벽으로 1미터 수평 이동(X+1, Y=0)해"라는 점 궤적을 쏘아버리는 코딩 붕괴. 자동차 바퀴 시스템은 앞뒤 회전만 가능하지 대각선이나 옆으로 미끄러질 수 없다는 비홀로노믹(Non-holonomic) 물리 제약이 있습니다. 자동차는 핸들을 꺾어 호(Arc)를 그리며 전진/후진을 반복해야만 옆으로 이동(평행 주차)할 수 있으므로 궤적 플래닝 수식 자체가 관절 로봇과 완전히 달라야 합니다.
4. Prerequisites
- 선형대수와 행렬 (Basic): 3차원 공간에서 회전()과 이동을 묶어 행렬로 곱하는 벡터 기하학 뼈대를 알아야 궤적을 계산할 수 있습니다. (01-01-01 Linear Algebra Basics)
- 미분과 다항식 (Basic): 모터가 덜컥거리지 않도록 속도(1차 미분)와 가속도(2차 미분)가 부드럽게 이어지는 스플라인 곡선을 이해해야 합니다.
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 공간을 접는 블록, 좌표 변환과 쿼터니언 (Coordinate Transforms)
- Why to Learn: 로봇 베이스, 어깨, 팔꿈치, 손끝에 달린 각자의 독립된 3차원 축 좌표계를 곱셈 한 번으로 세계 좌표계(World) 하나로 통일시키는 뼈대 기하학을 세우기 위함입니다.
- What to Learn:
- Concepts: 동차 변환 행렬(Homogeneous Transformation Matrix), 로테이션 행렬(Rotation, ), 트랜슬레이션 벡터(Translation, ).
- Skills: 오일러 각(Roll-Pitch-Yaw) 짐벌 락 회피, 쿼터니언(Quaternion) 대수.
- Tools: NumPy 공간 연산(Spatial Math).
- Trade-offs: 사람이 직관적으로 이해하기 쉬운 오일러 각(X, Y, Z축 순차 회전)을 쓰면 비행기가 수직으로 섰을 때 X축과 Z축이 겹쳐 팽이가 돌 듯 발작하는 짐벌 락(Gimbal Lock)의 죽음을 맞이하지만, 쿼터니언 4차원 허수를 쓰면 수학은 미치도록 난해해지지만 컴퓨터는 절대 꼬이지 않는 전방위 회전 방어벽.
- How to Learn:
- 1단계: 어깨 관절에서 팔꿈치 관절로 10cm(이동) 떨어져 있고 30도(회전) 비틀려 있다는 정보를, 이동과 회전 기호가 한데 섞인 거대 행렬(동차 변환) 하나로 욱여넣는 압축 기하학을 해부합니다.
- 2단계: 어깨 뼈대 행렬 팔꿈치 뼈대 행렬 손목 뼈대 행렬을 3번 연속으로 곱하면(Matrix Multiplication), 손끝의 최종 위치와 방향(Pose)이 뿅 하고 튀어나오는 수학적 컨베이어 벨트를 뜯어봅니다.
- Implement: 파이썬
numpy로 변환 행렬 클래스 구축.Translate(x=10) @ RotateZ(deg=90)식의 체인(Chain) 곱셈을 수행하여 0,0 원점 좌표(Origin)가 최종 좌표 공간에서 어디로 떨어지는지 3차원 벡터 값을 텍스트로 덤프하는 정기구학 기초 모사.
Recommended
Core Topic 02: 정답이 없는 역산의 지옥, 역기구학 (Inverse Kinematics, IK)
- Why to Learn: 카메라로 인식한 사과 좌표()로 로봇 손을 가져가려면, 6개의 복잡한 모터 각도()를 동시에 맞춰야 하는, 방정식 개수보다 변수 개수가 많은 무한 루프 역산을 뚫어내기 위해서입니다.
- What to Learn:
- Concepts: 정기구학(FK), 역기구학(IK), 다관절 체인(Articulated Chain), 해의 다중성(Multiple Solutions).
- Skills: 해석적(Analytical) IK 해법(삼각함수/코사인 제2법칙), 수치적(Numerical) 반복 해법(Newton-Raphson).
- Tools: 로봇 툴 센터 포인트(TCP) 좌표 튜닝.
- Trade-offs: 해석적(Analytical) 방법으로 역기구학 수식을 직접 종이에 풀면(Closed-form) 연산 속도가 빛의 속도지만 로봇 팔 관절 뼈대가 아주 예쁘게 3축이 직교하게 생겼을 때만 풀리는 한계 vs 수치적(Numerical) 컴퓨터 노가다로 조금씩 각도를 꺾어가며 정답을 찾는 방식을 쓰면 아무렇게나 생긴 로봇도 다 풀 수 있지만 수만 번 루프를 도느라 CPU 오버헤드 붕괴.
- How to Learn:
- 1단계: 로봇의 팔 관절(자유도도 6개)로 허공의 어떤 점(3D 위치+각도)을 잡는 방법(해답)이 위로 꺾는 방법, 아래로 뒤틀어 꺾는 방법 등 8개나 중복 생성(Multiple Solutions)되는 물리적 관절 중첩을 해부합니다.
- 2단계: 현재 로봇 팔이 위로 꺾여있다면 가급적 아래로 크게 요동치지 않고 최단 경로 모터 구동만으로 그 점에 도달하는, "가장 에너지 소모가 적은(최적화) 역기구학 해(Solution)"를 선택하는 튜닝 궤적을 뜯어봅니다.
- Implement: 2링크 평면 로봇(어깨, 팔꿈치) 파이썬 봇 시뮬레이션. 목표 타겟
(X=5, Y=5)를 입력받아 제2 코사인 법칙 수식(Analytical IK)으로Theta_1(어깨)과Theta_2(팔꿈치)각도를 2쌍(팔을 구부린 엘보 업/엘보 다운) 뽑아내고, 그중 현재 모터 각도에서 가장 적게 움직이는 솔루션을 채택하는 역기구학 라우팅 콘솔 출력.
Practical
Core Topic 03: 역행렬의 블랙홀, 야코비안과 특이점 (Jacobian & Singularity)
- Why to Learn: 역기구학으로 잘 뻗어 나가던 로봇 팔이, 관절이 일직선으로 쭉 펴지는 순간 미친 듯이 떨며 모터가 과열 폭파되는 '수학적 0으로 나누기(Divide by Zero)' 재앙을 미리 감지하고 방어하기 위함입니다.
- What to Learn:
- Concepts: 야코비안 행렬(Jacobian Matrix, 속도 기구학), 특이점(Singularity), 조인트 공간(Joint Space) vs 태스크 공간(Task Space).
- Skills: 특이점 회피(Singularity Avoidance) 알고리즘, 감쇠 최소자승법(DLS).
- Tools: 야코비안 행렬식(Determinant) 감시.
- Trade-offs: 로봇 팔을 일직선 한계치까지 쫙 뻗으면 작업 반경(Reach)이 최대화되어 극강의 활용도를 자랑하지만, 그 부근(특이점 영역)에서는 X 좌표를 1mm 움직이기 위해 모터 각도가 180도 미친 듯이 휙 돌아가야(무한대 속도 요구) 하므로 기계가 찢겨나가는 수학적 붕괴선.
- How to Learn:
- 1단계: 모터가 1초에 몇 도 도느냐(관절 속도 )에 야코비안()이라는 뼈대 행렬을 곱하면 로봇 손끝이 1초에 몇 m/s로 날아가느냐(데카르트 속도 )로 변환되는 속도 컨베이어 벨트를 해부합니다. ()
- 2단계: 반대로 손끝을 1m/s로 움직이려면 모터를 몇 도의 속도로 돌려야 하냐()를 풀 때, 팔이 일직선이 되어 야코비안 행렬()의 행렬식이 0이 되면, 의 역행렬()이 분모가 0인 무한대(Infinity) 발산 블랙홀(Singularity)로 빠져 모터에 초광속 브러시리스 명령이 떨어지는 파멸의 궤적을 뜯어봅니다.
- Implement: 모터 각도 배열을 입력받아 야코비안 행렬식(
det(J))을 계산하는 파이썬 방호벽 작성. 로봇 팔이 179도(거의 펴짐)에 도달해det(J) < 0.01(블랙홀 근접) 상태가 되면 즉각[WARNING] Singularity Approached! Reducing TCP velocity to zero.경고를 터트리고 로봇 구동을 일시 정지(Halt)시키는 브레이크 덤프.
Advanced
Core Topic 04: 스플라인의 실크로드, 경로 계획과 모션 생성 (Path Planning & Spline Trajectories)
- Why to Learn: 목표 지점 좌표를 IK로 풀었다고 모터에 냅다 각도를 던져버리면, 로봇 관절이 0.1초 만에 풀 파워 가속을 때리며 쿵쾅거리다 기어가 부서지므로, 가속도 미분값이 물 흐르듯 부드럽게 이어지는 융단 궤적(Trajectory)을 깔아주기 위해서입니다.
- What to Learn:
- Concepts: 경로(Path, 공간의 선) vs 궤적(Trajectory, 경로 + 시간/속도 프로파일).
- Skills: 사다리꼴 속도 프로파일(Trapezoidal Velocity), 3차/5차 스플라인(Cubic/Quintic Spline) 보간법, RRT / A* 탐색.
- Tools: 매니퓰레이터 J-Jerk(가가속도) 리미터.
- Trade-offs: 목표 위치까지 그냥 직선 사다리꼴(Trapezoidal) 속도로 가속-정속-감속을 밟으면 연산이 가볍지만 가속도가 꺾이는 모서리 구간에서 로봇이 '탁탁' 치는 덜컹거림(Jerk)이 터지고, 이걸 막겠다고 5차 다항식(Quintic) 스플라인을 씌워 미분선(Jerk)을 둥글게 깎아버리면 칩 연산량 팽창과 궤적의 뚱뚱함(Overshoot)이 발생하는 모션 딜레마.
- How to Learn:
- 1단계: 로봇 청소기가 거실을 통과할 때 방해물(소파)을 피해 격자(Grid)나 무작위 나무(RRT)를 뻗어 나가 최단 '경로(Path: X,Y 점들의 모음)' 선을 긋는 공간 탐색 알고리즘을 해부합니다.
- 2단계: 그 점들을 그냥 선으로 이으면 꺾이는 구간에서 무한대의 가속도가 요구되므로, 점과 점 사이에 시간()을 주입하고 3차 방정식 다항식을 씌워, 현재 속도와 다음 점의 속도가 완벽히 동일한 기울기로 미분 가능하게 부착(Spline Interpolation)되는 극강의 스무딩(Smoothing) 궤적을 뜯어봅니다.
- Implement: 현재 각도 0도, 목표 90도, 제한 시간 2초일 때, 3차 다항식 곡선 계수()를 수식으로 풀어내는 파이썬 모션 제너레이터 구축. 루프를
t=0부터t=2까지 0.1초 단위로 굴리며 뽑아낸 가속도(Acceleration(t)) 배열에 모서리나 튀는 스파이크가 없이 돔 형태로 완벽한 둥근 궤적이 찍히는 수학의 곡선미 시각화.