Kinematic Redundancy
- 다른 이름: manipulator redundancy
- 카테고리: Foundations & spatial maths › Kinematics
- 태그: kinematics, inverse-kinematics, null-space, manipulators, redundancy-resolution
로봇이 작업에 필요한 것보다 많은 관절을 가져 같은 엔드 이펙터 자세를 연속적인 관절 구성 집합으로 도달할 수 있을 때, 그 로봇은 해당 작업에 대해 기구학적으로 여유자유도를 가진다.
정의
매니퓰레이터의 관절 수 n이 제어해야 하는 작업의 차원 m보다 클 때, 그 매니퓰레이터는 해당 작업에 대해 기구학적으로 여유자유도를 가진다(kinematically redundant). 전형적인 예는 6차원 엔드 이펙터 자세를 제어하는 7관절 로봇 암으로, 여유자유도가 하나 남는다. 다만 여유자유도는 작업을 기준으로 정의된다. 6관절 로봇 암도 공구 끝의 위치만 고정하는 작업이나 드릴 축을 중심으로 한 회전을 자유롭게 두는 작업에서는 여유자유도를 가진다. 고정된 엔드 이펙터 자세에 대해 그 자세를 달성하는 관절 구성은 하나의 점이 아니라 (n − m)차원 집합을 이루며, 이를 흔히 자기 운동 다양체(self-motion manifold)라고 부른다. 실제로 이는 손이 가만히 있는 동안 로봇 암이 팔꿈치를 움직일 수 있다는 뜻이다.
속도 수준에서 여유자유도는 m × n 매니퓰레이터 자코비안 J의 영공간으로 나타난다. 그 영공간 안의 관절 속도는 엔드 이펙터 운동을 만들지 않는다. 분해 속도(resolved-rate) 제어기는 표준 형식 q̇ = J⁺ẋ + (I − J⁺J)q̇₀로 이를 활용하며, 여기서 J⁺는 의사역행렬이다. 첫째 항은 작업을 추종하고, 둘째 항은 부차 목표 q̇₀를 영공간에 투영한다. 흔한 부차 목표로는 관절 한계에서 멀리 떨어지기, 팔꿈치를 장애물에서 떨어뜨려 두기, 특이점을 피하기 위해 조작성을 높이기, 관절 토크 줄이기가 있다. 작업 우선순위 역기구학은 이를 바탕으로 여러 작업에 순위를 매겨, 우선순위가 낮은 각 작업이 그보다 위에 있는 작업들의 영공간 안에서만 작용하도록 한다.
여유자유도는 역기구학의 동작 방식도 바꾼다. 수치 IK 솔버는 무한히 많은 해 중 하나를 반환하는데, 이 해는 초기값과 알고리즘에 의해 암묵적으로 선택되므로 연속된 질의 사이에 서로 멀리 떨어진 구성으로 건너뛸 수 있다. 구형 어깨와 구형 손목을 가진 일반적인 7관절 설계를 위한 해석적 IK는 남는 자유도를 명시적으로 매개변수화하는데, 흔히 어깨에서 손목까지의 직선을 축으로 팔꿈치를 회전시키는 팔 각도(arm angle 또는 swivel angle)로 나타낸다. 여유자유도를 팔꿈치 위/아래, 손목 뒤집힘 같은 이산적인 IK 분기의 유한 집합과 혼동해서는 안 된다. 그런 분기는 여유자유도가 없는 6관절 로봇 암에도 있다.
중요한 이유
여유자유도 덕분에 7관절 로봇 암은 손이 경로를 따라가는 동안 장애물을 돌아 뻗고, 관절 한계를 피하고, 특이점에서 멀리 떨어질 수 있다. 많은 협동 로봇 암과 휴머노이드 팔이 7개 관절을 갖는 이유도 여기에 있다. 한편 여유자유도는 역기구학과 계획을 더 어렵게 만든다. 연속체 중에서 하나의 구성을 무언가가 골라야 하며, 잘못 고르면 관절 한계에서 멈추거나 팔꿈치가 갑자기 뒤집힌다.
주요 응용
- 엔드 이펙터가 경로를 추종하는 동안 팔꿈치의 장애물 회피와 자기 충돌 회피
- 긴 공구 경로에서의 관절 한계 회피와 특이점 회피
- 양팔 조작과 폐쇄 체인 조작: 남는 자유도가 공유 제약을 만족시키는 데 도움이 된다
- 어떤 단일 작업에 필요한 것보다 훨씬 많은 관절을 가진 휴머노이드와 모바일 매니퓰레이터의 전신 제어
- 협동 작업에서 로봇 암 자세를 예측 가능하게 유지하고 사람에게서 떨어뜨려 두기
- 주어진 엔드 이펙터 운동에 대한 관절 토크나 에너지 줄이기
실제 사례
한 엔지니어가 사람이 근처에서 일하는 동안 스펀지로 탁자를 닦도록 7관절 로봇 암을 프로그래밍한다. 닦는 경로가 엔드 이펙터 자세를 고정하므로 자유도 하나가 남는다. 제어기는 닦는 운동에 대해 자코비안 의사역행렬로 관절 속도를 계산하고, 팔꿈치를 추적된 사람의 위치에서 밀어내고 각 관절 가동 범위의 가운데 쪽으로 미는 영공간 항을 더한다. 시험 중에 팀은 각 경유점마다 호출한 일반 수치 IK 솔버가 때때로 팔꿈치가 반대쪽에 있는 해를 반환해 큰 관절 도약을 일으킨다는 것을 발견한다. 팀은 각 질의를 이전 해에서 웜 스타트하고 팔꿈치 위치를 팔 각도로 명시적으로 매개변수화하는 방식으로 바꾸어, 여유자유도를 솔버에 맡기지 않고 플래너가 의도적으로 선택하게 한다.
흔한 오해
- 여유자유도란 단순히 관절이 6개보다 많다는 뜻이다 — 여유자유도는 작업을 기준으로 정의되므로, 엔드 이펙터 좌표를 6개보다 적게 구속하는 작업에서는 6관절 로봇 암도 여유자유도를 가진다
- 여유자유도 로봇 암은 6관절 로봇 암과 같은 방식으로 여러 IK 해를 가진다 — 여유자유도가 없는 로봇 암은 이산적인 해의 유한 집합을 갖는 반면, 여유자유도 로봇 암은 연속적인 해의 집합을 가진다
- 영공간 운동은 작업에 결코 영향을 주지 않는다 — 영공간 운동은 엔드 이펙터 자세를 1차 근사에서만 바꾸지 않으므로, 오차를 보정하지 않으면 큰 스텝이나 특이점 근처의 운동이 여전히 작업을 흐트러뜨릴 수 있다
알아야 할 사람
- 조작 및 모션 플래닝 엔지니어
- 작업 공간 제어와 전신 제어를 다루는 제어 엔지니어
- 휴머노이드 및 모바일 매니퓰레이터 개발자
- 매니퓰레이터 기구학을 공부하는 로봇공학 학생
관련 기술
- 자코비안 의사역행렬(Jacobian Pseudoinverse)
- 영공간 투영(Null-Space Projection)
- 해석적 역기구학(Analytic Inverse Kinematics)
- 조작성 타원체(Manipulability Ellipsoid)
- 감쇠 최소제곱법(Damped Least Squares)
관련 용어
관련 프로젝트
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
- DART: C++ physics engine for articulated rigid body dynamics and robotics simulation
- IKPy: Pure-Python inverse kinematics library that builds chains straight from URDF
- frax: JAX library for fast, differentiable robot kinematics, dynamics and inverse kinematics