역기구학, 답이 없어서 방법이 네 가지입니다
앞 글에서 예제 코드를 뜯어보니, 로봇을 움직이는 건 결국 "그 좌표로 가라" 는 한 줄이었습니다. 그렇다면 그 한 줄은 실제로 무엇을 계산할까요. 답을 찾으러 로봇 파일을 열었는데, 앞 글 끝에 적어 둔 그 말 — 답이 없는 문제 — 과 정말로 마주쳤습니다. 실행 옵션에 역기구학 계산 방식이 네 가지나 들어 있었습니다. 하나면 될 텐데 왜 넷을 남겨 놨을까. 로봇 파일 262줄을 처음부터 끝까지 읽고 나서야 알았습니다. 이 문제에는 정답이 하나가 아니라 무한히 많았습니다. 관절은 일곱인데 자유도는 여섯이었습니다 파일을 열자마자 눈에 띈 것이 기본 자세를 정하는 숫자 배열이었습니다. 값이 아홉 개 들어 있더군요. 팔 관절이 일곱, 손가락이 둘. 그래서 아홉입니다. 여기서 걸린 게 있습니다. 공간에서 물체의 자세를 정하려면 값이 몇 개 필요할까요. 위치 세 개와 방향 세 개, 합쳐서 여섯입니다. 그런데 이 팔은 관절이 일곱 이에요. 하나가 남습니다. 산업용 로봇 팔이 대개 6축인 이유가 그것이죠. 6이면 필요한 만큼 딱 맞습니다. 그런데 이 로봇은 일부러 하나를 더 달았습니다. 손끝 위치를 그대로 둔 채로 팔꿈치만 슬쩍 돌릴 수 있게요. 사람 팔도 그렇습니다. 컵을 잡은 손을 고정한 채 팔꿈치를 위아래로 움직여 보면 바로 느껴집니다. 장애물을 피하거나 무리한 자세를 피할 때 이 여유분이 요긴합니다. 좁은 상자 안에 손을 넣어야 하는데 팔꿈치가 벽에 닿는다면, 손은 그대로 두고 팔꿈치만 비켜 세우면 되니까요. 6축 로봇에는 그런 선택지가 없습니다. 손을 그 위치에 두는 자세가 사실상 하나로 정해져 버립니다. 대신 대가가 있었습니다. 남는 자유도 하나가 계산을 까다롭게 만듭니다. 선택지가 많다는 건 고를 기준이 필요하다는 뜻이기도 하니까요. 야코비안은 뒤집을 수 없는 행렬입니다 제어의 한복판에 야코비안이라는 행렬이 있었습니다. 이름은 거창한데 뜻은 단순합니다. 관절을 조금 움직이면 손이 어디로 얼마나 가는가 를 적어 둔...