IKPy
URDF에서 곧바로 체인을 구성하는 순수 Python 역기구학 라이브러리
라이선스
Apache-2.0
개요
IKPy는 Pierre Manceron이 만든 가볍고 순수 Python으로 작성된 역기구학(IK) 라이브러리입니다. URDF 파일에서 기구학 체인을 직접 파싱하고, SciPy 기반 수치 최적화기로 순기구학과 역기구학을 풀며, Matplotlib 기반의 간단한 3D 시각화를 포함합니다. 컴파일 의존성이 없어 Python이 실행되는 곳이라면 어디든 설치할 수 있으며, 그 덕분에 교육, 취미용 로봇 팔, 그리고 이 라이브러리가 원래 태어난 Poppy 휴머노이드 생태계에서 널리 사랑받고 있습니다.
IKPy는 로봇을 URDF에서 파싱한 링크들의 Chain으로 모델링합니다(DH 스타일 수동 정의를 위한 헬퍼도 제공). 순기구학은 행렬 체인이고, 역기구학은 관절 값에 대한 유계 최소제곱 최적화로 실행되며 위치·자세 목표, 활성 링크 마스크, 관절 제한을 지원합니다. 체인과 목표를 Matplotlib 3D로 렌더링하는 플로팅 유틸리티와, 2링크 팔에서 Baxter 같은 실제 로봇까지 다루는 튜토리얼이 함께 제공됩니다. 이 라이브러리는 의도적으로 순수 속도 대신 이식성과 해킹 용이성을 택했습니다: 모든 것이 NumPy/SciPy이고, 빌드해야 할 C 확장이 없으며, 체인은 서브클래싱할 수 있는 평범한 Python 객체입니다. 이런 설계 덕분에 IKPy는 Poppy 오픈소스 휴머노이드 생태계의 기구학 레이어가 되었고, IK 교육, 빠른 프로토타이핑, 풀 MoveIt 스택이 과한 취미용 로봇 팔 구동에 흔히 선택됩니다.
중요한 이유
IKPy는 Python 로보틱스 세계의 표준 'IK를 다섯 줄로' 라이브러리입니다: 지난 10년간 URDF 파일에서 동작하는 역기구학까지 가는 가장 마찰 없는 경로였으며, 교육 현장, Poppy 휴머노이드 커뮤니티, 수많은 취미용 로봇 팔 프로젝트에서 사용되고 있습니다.
해결하는 문제
목표 자세에 대한 관절 각도만 필요할 때 풀 모션 플래닝 스택은 지나치게 무거운 장비입니다. IKPy는 pip install 한 번으로 어떤 Python 프로그램에든 URDF 정확도의 순·역기구학을 제공합니다 — ROS도, 컴파일 솔버도, 복잡한 설정 절차도 필요 없습니다.
핵심 요점
- URDF 파일에서 직접 기구학 체인 구성(수동 DH 스타일 정의도 지원)
- 관절 제한, 활성 링크 마스크, 위치·자세 목표를 지원하는 수치 IK
- NumPy/SciPy 기반 순수 Python — 어디서나 설치 가능, 컴파일 의존성 없음
- 체인과 목표를 보여주는 Matplotlib 3D 시각화 내장
- Poppy 휴머노이드 생태계의 기구학 레이어; 교육에서 널리 사용
대상
- 기구학을 배우는 로보틱스 학생
- 취미로 로봇 팔을 만드는 빌더
- 로봇 모션을 스크립팅하는 Python 개발자
- 로보틱스 교과 과정을 만드는 교육자
한계
- 수치 최적화는 해석적 또는 컴파일된 IK 솔버보다 느림 — 고속 제어 루프에는 부적합
- 충돌 검사나 모션 플래닝 없음 — 관절 해만 제공
- 자세 제약이 있는 IK는 잘 수렴하려면 튜닝(초기 위치, 활성 링크)이 필요할 수 있음