애니 논문: 인버스 키네매틱스

로봇 팔은 어떻게 사과를 잡을까? — 인버스 키네매틱스 이야기
친구야, 팔을 뻗어서 책상 위의 연필을 잡아 볼래?
쉽게 잡았지? 그런데 신기한 일이 하나 있어.
연필을 잡을 때, 너는 "어깨를 30도 돌리고, 팔꿈치를 45도 굽혀야지"라고 생각하지 않았어. 그냥 "연필을 잡자!"라고만 생각했는데, 어깨와 팔꿈치가 알아서 딱 맞게 움직였지.
이렇게 "손이 갈 곳"을 먼저 정하고, 팔의 관절이 얼마나 움직여야 하는지 거꾸로 계산하는 것을 인버스 키네매틱스(Inverse Kinematics, 줄여서 IK)라고 해.
우리말로 하면 "거꾸로 풀어내는 움직임 계산"이라는 뜻이야. 로봇과 애니메이션에서 정말 중요한 기술이란다.
1. 먼저 '앞으로 계산'부터 알아보자 (포워드 키네매틱스)
거꾸로를 알려면, 먼저 똑바로를 알아야겠지?
로봇 팔은 여러 개의 막대(뼈)와 관절(접히는 부분)로 되어 있어. 사람 팔이랑 똑같아. 어깨, 팔꿈치, 손목처럼 말이야.
포워드 키네매틱스(앞으로 계산)는 이런 질문이야.
"어깨를 30도 돌리고, 팔꿈치를 60도 굽히면… 손끝은 어디에 있을까?"
관절 각도를 먼저 알려 주고, 손끝 위치를 알아내는 거야. 이건 계산이 비교적 쉬워. 각도만 알면 답이 딱 하나로 정해지거든.
인버스 키네매틱스(거꾸로 계산)는 반대 질문이야.
"손끝을 저기 사과 위치에 두고 싶어. 그러면 어깨와 팔꿈치를 몇 도씩 움직여야 할까?"
목표 위치를 먼저 알려 주고, 관절 각도를 거꾸로 알아내는 거지.
2. 그림으로 한눈에 보기
아래 그림을 봐. 왼쪽은 "각도를 알려 주면 손끝 위치가 나오는" 앞으로 계산이야. 오른쪽은 "사과 위치를 알려 주면 각도가 나오는" 거꾸로 계산이지.
3. 거꾸로 계산은 왜 어려울까?
앞으로 계산은 답이 하나야. 각도가 정해지면 손끝 위치도 하나로 정해지거든.
그런데 거꾸로 계산은 훨씬 어려워. 이유가 있어.
첫째, 답이 여러 개일 수 있어. 컵을 잡을 때 팔꿈치를 위로 올려도 되고, 아래로 내려도 되지? 손끝은 같은 곳에 있는데 팔 모양은 다르잖아. 컴퓨터는 이 중에서 가장 자연스러운 답을 골라야 해.
둘째, 답이 없을 수도 있어. 팔 길이보다 멀리 있는 물건은 아무리 각도를 바꿔도 못 잡아. 이럴 때 컴퓨터는 "닿을 수 없어요"라고 알아차려야 하지.
셋째, 관절이 많아지면 훨씬 복잡해져. 관절이 2개면 그럭저럭 풀 수 있는데, 사람 몸처럼 관절이 수십 개면 경우의 수가 어마어마하게 많아져. 그래서 컴퓨터는 "조금씩 움직여 보고, 목표에 가까워졌나 확인하기"를 아주 빠르게 반복하는 방법을 자주 써. 마치 어두운 방에서 손을 더듬으며 조금씩 스위치를 찾아가는 것처럼 말이야.
4. 애니메이션에서는 어떻게 쓰일까?
애니메이션 캐릭터의 몸속에는 진짜 뼈 대신 가상의 뼈대(리그)가 들어 있어. 뼈들이 사슬처럼 줄줄이 이어져 있어서 이걸 키네매틱 체인(운동 사슬)이라고 불러.
IK가 없다면 애니메이터는 캐릭터가 물컵을 잡는 장면 하나를 만들려고 어깨, 팔꿈치, 손목 각도를 전부 손으로 맞춰야 해. 정말 힘들겠지?
IK가 있으면 애니메이터는 캐릭터의 손을 컵 위로 끌어다 놓기만 하면 돼. 그러면 컴퓨터가 어깨와 팔꿈치 각도를 스스로 계산해서 자연스러운 팔 모양을 만들어 줘.
걷는 장면에서도 IK가 대활약이야. 발이 땅에 딱 붙어 미끄러지지 않게, 발 위치를 먼저 정하고 무릎과 엉덩이 관절을 거꾸로 계산하거든. 울퉁불퉁한 언덕을 걸을 때도 발이 땅속에 파묻히거나 공중에 뜨지 않는 건 IK 덕분이야.

5. 로봇에서는 어떻게 쓰일까?
공장의 로봇 팔도 똑같아. "저 부품을 집어서 여기에 놓아라"라는 명령을 받으면, 로봇은 IK로 각 관절 모터를 몇 도씩 돌릴지 계산해.
로봇 팔 끝에는 사람 손목처럼 빙글빙글 돌아가는 손목 관절이 달려 있는 경우가 많아. 마지막 세 개의 관절 축이 한 점에서 만나도록 만들면, 위치 계산과 방향 계산을 따로따로 풀 수 있어서 IK가 훨씬 쉬워져. 어려운 문제를 두 개의 쉬운 문제로 쪼개는 거지.
6. 수학으로는 어떻게 쓸까? (살짝만 구경하기)
수학자들은 이 문제를 짧은 식으로 적어. "목표 위치 x를 넣으면, 관절 각도 q가 나오는 함수를 찾자"라는 뜻이야.
여기서 x는 손끝이 가야 할 목표 지점이고, q는 각 관절이 움직여야 할 각도들의 묶음이야. 이 함수 f를 딱 떨어지게 구할 수 있으면 좋지만, 안 될 때가 많아서 컴퓨터가 "조금씩 고쳐 가며 정답에 다가가는 방법"을 쓴다고 했지? 그게 바로 이 식을 푸는 요령이야.
7. 오늘 배운 것 정리!
- 포워드 키네매틱스: 관절 각도를 알려 주면 → 손끝 위치를 계산. 쉬움!
- 인버스 키네매틱스(IK): 손끝이 갈 목표를 알려 주면 → 관절 각도를 거꾸로 계산. 어려움!
- 답이 여러 개이거나 없을 수도 있어서, 컴퓨터는 자연스러운 답을 골라야 해.
- 애니메이션에서는 손과 발의 위치를 정하면 나머지 관절이 자동으로 따라오게 해 줘.
- 로봇에서는 물건을 정확히 집고 놓을 수 있게 모터의 회전 각도를 계산해 줘.
다음에 게임 캐릭터가 계단을 자연스럽게 오르거나, 로봇 팔이 물건을 척척 집는 걸 보면 이렇게 외쳐 보자. "저건 인버스 키네매틱스야!"
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기