관절체 알고리즘 (Articulated-Body Algorithm)
한 줄 정의: 관절 토크로부터 관절 가속도를 링크 수에 비례하는 O(n) 계산량으로 구하는 순동역학 알고리즘입니다.
쉽게 풀면
로봇에 토크를 주면 어떻게 움직일지(순동역학)를 계산하는 효율적인 방법입니다. 링크가 많아져도 계산량이 링크 수에 비례해서만 늘어납니다. Roy Featherstone이 1983년에 제안했습니다.
왜 중요한가
물리 시뮬레이터와 모델 기반 제어는 순동역학을 매우 자주 계산하므로 속도가 중요합니다. ABA는 여러 로봇 동역학 라이브러리의 핵심 계산으로 쓰입니다.
논문에서는 이렇게 쓰입니다
"30자유도 휴머노이드의 시뮬레이션에서 관절체 알고리즘을 사용하여 매 제어 주기마다 순동역학을 계산하였다."
자유도가 많은 로봇에서도 빠르게 순동역학을 풀기 위해 ABA를 썼다는 뜻입니다.
조금 더 깊게 보면
ABA는 세 번의 재귀 패스로 이루어집니다. 뿌리에서 끝으로 가며 속도를 구하고, 끝에서 뿌리로 오며 각 부분 트리의 '관절체 관성'과 편향력을 모은 뒤, 다시 뿌리에서 끝으로 가며 가속도를 구합니다. 질량 행렬을 만들어 선형계를 푸는 방법(O(n³))보다 자유도가 클 때 훨씬 효율적입니다. 공간 벡터(spatial vector) 표기와 함께 설명되는 경우가 많습니다.
주의할 점
뉴턴-오일러정식화의 재귀 알고리즘은 주로 역동역학(원하는 가속도에 필요한 토크)을 푸는 데 쓰이고, ABA는 순동역학(토크가 주어졌을 때 가속도)을 푸는 알고리즘입니다. 두 방향을 혼동하지 않아야 합니다.