다물체 동역학

편집 역사 토론
시뮬레이션 물리 게임 개발 마지막 수정: 2026-09-01 04:52:08

1. 개요[편집]

다물체 동역학
Multibody Dynamics (MBD)
대상조인트로 연결된 강체(또는 유연체) 집합의 운동
좌표 선택최소좌표(재귀) vs 최대좌표 + 구속(승수)
최소좌표 알고리즘RNEA O(n) · CRBA O(n²) · ABA O(n)
최대좌표 정식화지수 3 DAE — 드리프트가 기본값
접촉·마찰시뇨리니 조건 + 쿨롱 원뿔 → NCP
대표 코드MSC ADAMS · Simscape Multibody · RecurDyn · MuJoCo · Bullet
한 줄 요약좌표를 어떻게 고르느냐가 이 분야의 절반이다

강체 하나는 강체 동역학이다. 강체 둘을 핀으로 연결하는 순간, 문제의 종류가 바뀐다.

다물체 동역학(Multibody Dynamics, MBD)은 여러 개의 강체 또는 유연체가 조인트·스프링·접촉으로 상호 구속된 계의 운동을 정식화하고 수치적으로 적분하는 분야다. 로봇 팔, 차량 서스펜션, 굴착기 붐, 인공위성 전개 구조, 게임의 래그돌이 전부 같은 수학 위에 서 있다.

단일 강체와의 결정적 차이는 구속이다. 자유로운 강체 nn 개는 자유도가 6n6n 이지만, 조인트가 끼면 실제 자유도는 훨씬 작다. 6자유도 로봇 팔은 링크가 7개라도 자유도가 6이고, 나머지 36개의 방정식은 “이 링크들은 이렇게 붙어 있어야 한다”는 대수 조건이다. 이 구속을 미리 없애느냐 방정식에 남기느냐가 다물체 동역학 전체를 두 계보로 가르는 갈림길이고, 이 문서의 뼈대이기도 하다.

2. 두 갈래 — 최소좌표와 최대좌표[편집]

최소좌표 (재귀)최대좌표 + 구속
미지수관절 변수 qRnq\in\mathbb{R}^{n}물체 위치·자세 6n6n 개 + 승수 λ\lambda
구속좌표 정의에 흡수 — 위반 불가능대수 방정식으로 남음
방정식 종류2계 ODE지수 3 DAE
드리프트원리적으로 없음반드시 생김. 안정화 필요
폐루프좌표가 존재하지 않을 수 있음자연스럽게 처리
접촉 추가껄끄러움구속 하나 더 붙이면 끝
주 사용처로보틱스, ADAMS 계열 일부게임 엔진, 범용 MBD 코드

최소좌표는 트리 구조(폐루프 없음)의 기구를 관절 변수만으로 기술한다. 진자를 각도 θ\theta 하나로 쓰는 것의 일반화이며, 구속이 좌표계 정의 안에 녹아 있으므로 구속을 위반할 방법이 없다. 관절이 늘어나거나 링크가 분리되는 일이 원천적으로 불가능하다는 점에서 압도적으로 깨끗하다.1

최대좌표는 물체마다 6자유도를 다 주고, 조인트를 대수 구속 g(q)=0g(q)=0 으로 걸어 라그랑주 승수법으로 처리한다.

Mq¨=fGTλ,g(q)=0,G=gqM\ddot q=f-G^{\mathsf T}\lambda,\qquad g(q)=0,\qquad G=\frac{\partial g}{\partial q}

승수 λ\lambda 가 곧 구속력(조인트 반력)이다. 이 정식화는 가상일의 원리의 직접적 귀결이며 — 구속력은 허용 가상변위에 대해 일을 하지 않으므로 구속 야코비안의 전치 공간에 놓인다 — 폐루프든 접촉이든 구속을 한 줄 더 쓰는 것으로 끝난다는 유연성이 최대 장점이다.

대가는 미분지수 3의 DAE라는 것이다. 위치 구속 gg 에는 λ\lambda 가 안 나오고, 두 번 미분해 가속도 수준 Gq¨=G˙q˙G\ddot q=-\dot G\dot q 로 가야 비로소 λ\lambda 를 풀 수 있다. 그러면 위치·속도 구속은 적분상수만큼 자유로워져 드리프트가 시간에 대해 대략 t2t^2 로 자란다. 게임에서 관절이 슬금슬금 늘어나는 그 현상이다. 대책(바움가르테 안정화, GGL 정식화, 좌표 사영)의 상세는 미분대수방정식 문서가 다루므로 여기서는 반복하지 않고, 실무적 판단만 남긴다 — 바움가르테는 튜닝 상수 두 개를 얻는 대가로 드리프트를 감추는 것이고, 사영은 정직하지만 심플렉틱 적분기의 구조 보존을 깬다.

폐루프 기구에서는 선택지가 좁아진다. 자동차의 더블 위시본 서스펜션이나 4절 링크는 최소좌표계가 닫힌 형태로 존재하지 않는 대표 사례다. 스패닝 트리를 잡고 나머지 관절을 절단(cut-joint)해 그 자리에만 구속을 거는 혼합 전략이 표준인데, 이때 절단 구속이 서로 종속이면 GG 가 랭크 결손이 되고 λ\lambda 가 유일하지 않다. 정정 부재가 아니라 부정정 구조가 되는 셈이며, 해법은 특이값 분해/QR로 랭크를 잡거나 대각에 작은 정칙화(CFM)를 더하는 것이다.2

3. 재귀 알고리즘 — O(n)이 나오는 이유[편집]

최소좌표계에서 다뤄야 할 문제는 둘이다.

  • 역동역학(inverse dynamics): 관절 궤적 q,q˙,q¨q,\dot q,\ddot q 가 주어졌을 때 필요한 관절 토크 τ\tau 를 구한다. 제어(computed torque)와 모터 사양 결정에 쓴다.
  • 순동역학(forward dynamics): 토크 τ\tau 가 주어졌을 때 가속도 q¨\ddot q 를 구한다. 시뮬레이션에 쓴다.

역동역학의 표준은 재귀 뉴턴-오일러(RNEA)다. 베이스에서 말단으로 한 번 훑으며 각 링크의 속도·가속도를 전파하고, 말단에서 베이스로 되돌아오며 힘·모멘트를 누적한다. 두 번의 순회로 끝나므로 O(n)O(n). 행렬을 아예 만들지 않는다는 것이 요점이다.

순동역학은 두 갈래다. 하나는 관절공간 관성행렬 H(q)H(q) 를 명시적으로 만들고

H(q)q¨=τC(q,q˙)q˙g(q)H(q)\ddot q=\tau-C(q,\dot q)\dot q-g(q)

촐레스키 분해로 푸는 것이다. HH 를 만드는 표준 알고리즘이 CRBA(Composite Rigid Body Algorithm)로 체인에서 O(n2)O(n^2), 분해가 O(n3)O(n^3) 이다. 우변의 Cq˙+gC\dot q+gq¨=0\ddot q=0 으로 RNEA를 한 번 돌리면 공짜로 나온다.

다른 하나가 페더스톤(Featherstone)의 관절체 알고리즘(Articulated Body Algorithm, ABA)이다. “이 링크 아래 매달린 부분 기구 전체를 하나의 유효 관성으로 본다”는 관절체 관성을 세 번의 순회로 재귀 계산해, HH 를 만들지도 역행렬을 구하지도 않고 q¨\ddot q 를 직접 얻는다. 복잡도가 O(n)O(n) 이다.

O(n)O(n)O(n3)O(n^3) 을 항상 이기는 것은 아니라는 점이 실무적으로 중요하다. ABA의 상수항이 크기 때문에 자유도 10 안팎이 손익분기이고, 6축 로봇 팔처럼 짧은 체인에서는 CRBA + 촐레스키 쪽이 오히려 빠르다. 게다가 HH 는 순동역학 말고도 쓸 데가 많다 — 조작도(manipulability), 임피던스 제어, 접촉 문제의 델라수스 연산자 JH1JTJH^{-1}J^{\mathsf T} 가 전부 HH 를 필요로 한다. 그래서 로보틱스 라이브러리는 셋을 다 갖고 있다.

이 알고리즘들의 표기를 깔끔하게 만드는 도구가 공간 벡터 대수(spatial vector algebra)다. 각속도와 선속도를 6차원 운동 벡터로, 모멘트와 힘을 6차원 힘 벡터로 묶어 다루면 회전과 병진을 따로 쓰던 식이 하나로 합쳐진다. 페더스톤의 표기법이 사실상 표준이 된 이유이고, 구현 코드의 줄 수를 절반으로 줄인다.

4. 접촉과 마찰 — 여기서 정직함이 끝난다[편집]

조인트는 등식 구속이라 얌전하다. 접촉은 부등식 구속이라 문제의 종류가 또 바뀐다. 침투 간격 gng_n 과 법선 임펄스 λn\lambda_n 에 대해

0gn    λn00\le g_n\;\perp\;\lambda_n\ge0

시뇨리니 조건이고, 여기에 쿨롱 마찰 λtμλn\lVert\lambda_t\rVert\le\mu\lambda_n 이 붙으면 비선형 상보성 문제(NCP)가 된다. 정식화의 상세는 선형 상보성 문제 문서에 있으므로, 흔히 잘못 서술되는 지점 하나만 바로잡고 넘어간다.

쿨롱 마찰 원뿔 자체는 볼록하다. {(λn,λt):λtμλn}\{(\lambda_n,\lambda_t):\lVert\lambda_t\rVert\le\mu\lambda_n\} 은 2차 원뿔(second-order cone)이고, 볼록 원뿔의 교과서적 예시다. 비볼록한 것은 원뿔이 아니라 문제 전체다. 최대 소산 원리와 상보성이 결합하면 고착(stick)과 미끄러짐(slip) 중 어느 상태인지가 미리 정해지지 않는 조합적 선택이 되고, 그 분기 구조 때문에 실행 가능 집합이 비볼록해진다. 팽르베 역설처럼 해가 아예 없는 경우까지 존재한다.

이 사정을 아는 순간 아니테스쿠(Anitescu)의 볼록 완화가 왜 나왔는지가 보인다. 상보성 조건을 살짝 고쳐 전체를 볼록 원뿔 상보성 문제로 만들면, 해의 존재와 유일성이 보장되고 최적화 이론을 그대로 쓸 수 있다. MuJoCo가 매 스텝 볼록 최적화를 푸는 근거이기도 하다. 대가는 물리적 인공물이다 — 빠르게 미끄러지는 물체가 미세하게 떠오른다. 미끄럼 속도에 비례하는 가짜 법선 분리속도가 생기기 때문이며, 정확성을 조금 팔아 강건성을 산 거래다. 강건성이 없으면 아예 안 돌아가는 실시간 시뮬레이션에서는 대개 남는 장사다.

게임 엔진 쪽 실무 해법인 순차 임펄스투영 가우스-자이델(PGS)은 제약 해결기 문서가 다룬다. 요점만 옮기면, PGS는 1차 수렴이라 반복 횟수를 예산으로 잘라 쓸 수 있고(60 Hz에 10회 같은 식), 대신 긴 체인과 큰 질량비에서 눈에 띄게 물러진다. 무거운 상자 위에 가벼운 상자를 올리면 되지만 반대로 하면 파고드는 그 현상이다. 이 약점을 정면으로 해결하는 것이 위에서 본 재귀 알고리즘이며, Bullet이 별도로 관절체(Featherstone) 솔버를 제공하는 이유다.

5. 시간 적분[편집]

vn+1=vn+ΔtM1 ⁣(fGTλ),qn+1=qn+Δtvn+1\mathbf{v}_{n+1}=\mathbf{v}_n+\Delta t\,M^{-1}\!\left(f-G^{\mathsf T}\lambda\right), \qquad \mathbf{q}_{n+1}=\mathbf{q}_n+\Delta t\,\mathbf{v}_{n+1}

반음함수 오일러(semi-implicit / symplectic Euler)가 실시간 계보의 사실상 표준이다. 1차 정확도밖에 안 되는데도 자리를 지키는 이유는 셋이다. (가) 심플렉틱이라 에너지가 장기적으로 표류하지 않는다 — 명시적 오일러처럼 상자 더미가 저절로 폭발하지 않는다. (나) 구속을 속도 수준에서 걸면 미지수 λ\lambda 에 대해 선형계가 되어, 매 스텝 정확히 한 번의 (근사) 선형 풀이로 끝난다. 접촉의 상보성까지 속도 수준에서 처리하는 시간 이산화(스튜어트-트링클)와 궁합이 맞는다. (다) 구현이 두 줄이다.

정밀 해석 계보는 다르다. 상용 MBD 코드는 강성이 큰 부싱·스프링과 지수 3 구속을 함께 안고 가야 하므로 암시적·강성 정확 적분기를 쓴다. MSC ADAMS의 기본값 GSTIFF는 기어(Gear)의 BDF를 지수 3 DAE에 직접 적용한 것이고, 승수 성분의 오차 추정이 h2h^{-2} 로 증폭되는 문제 때문에 안정화 지수 2 정식화(SI2)와 HHT-α\alpha 옵션이 함께 제공된다. 이 계보의 배경은 미분대수방정식강성 방정식 문서를 보면 된다. 구조동역학 쪽에서 넘어온 뉴마크법·HHT-α\alpha 가 MBD에서도 그대로 쓰인다는 점이 재미있는데, 유연 다물체(강체 + 모드 축약 유연체)에서 두 분야가 실제로 만나기 때문이다.3

6. 실무 코드와 응용[편집]

코드성격좌표·솔버
MSC ADAMS기계 산업 표준, 차량·항공최대좌표 DAE, GSTIFF/SI2/HHT
RecurDyn국산(FunctionBay), 접촉·유연체 강점재귀 정식화 기반
Simscape MultibodyMATLAB/Simulink 통합블록으로 기구를 조립해 방정식 자동 생성
Project Chrono오픈소스, 입자·유체 연성최대좌표 + 원뿔 상보성
MuJoCo강화학습·로보틱스최소좌표 + 소프트 볼록 접촉
Pinocchio · Drake · DART로보틱스 라이브러리RNEA/CRBA/ABA + 해석적 미분
Bullet · PhysX · Havok게임최대좌표 순차 임펄스(+ 관절체 옵션)

응용에서 반복적으로 나타나는 것들.

  • 로봇 순/역동역학. RNEA로 중력·코리올리 보상 토크를 실시간 계산하는 computed torque 제어가 산업 로봇의 기본이다. 최근에는 궤적 최적화·강화 학습이 동역학의 미분까지 요구해서, RNEA의 해석적 도함수를 제공하는 라이브러리(Pinocchio)가 표준이 되었다.
  • 차량 서스펜션. 더블 위시본은 공간 폐루프이고, 스티어링까지 넣으면 루프가 여럿이다. 킹핀 축·캠버·토 변화가 전부 기구학의 산물이라, 서스펜션 설계는 사실상 폐루프 기구 합성 문제다. 타이어 힘 모델은 별개의 경험 모형으로 얹는다.
  • 기구학 특이점. 4절 링크의 토글 위치나 서스펜션 완전 신장처럼 구속 야코비안 GG 가 랭크를 잃는 자세에서, 구속력 λ\lambda 가 발산하고 뉴턴 반복이 죽는다. 역운동학 문서의 특이점과 같은 현상이 동역학 쪽에서 나타난 것이며, 대응은 감쇠 최소자승 의사역행렬이나 특이점 회피 궤적 설계다.
  • 유연 다물체. 실제 부재는 휜다. 모드 해석으로 얻은 소수의 모드로 탄성 변형을 축약해 강체 자유도에 붙이는 부유 기준좌표계(floating frame of reference) 정식화가 표준이며, 여기서 부분구조법의 크레이그-뱀턴 축약이 그대로 재활용된다. 대변형에는 절대절점좌표(ANCF) 계열이 쓰인다.

7. 검증 — 무엇을 보는가[편집]

다물체 시뮬레이션이 조용히 틀리는 방식은 정해져 있고, 그래서 검증 및 확인 체크리스트도 정형화되어 있다.

  • 구속 위반량을 시간에 대해 찍어 본다. 위치 구속 g\lVert g\rVert 가 단조 증가하면 드리프트이고, 톱니로 진동하면 사영이 매 스텝 되돌리고 있다는 뜻이다.
  • 에너지를 본다. 감쇠와 외력이 없는 계에서 총 에너지가 표류하면 적분기나 안정화 파라미터를 의심한다. 반음함수 오일러는 에너지가 진동하되 표류하지 않아야 정상이다.
  • 구속력의 물리적 타당성을 본다. λ\lambda 가 특정 자세에서 튀면 랭크 결손이나 특이점이다.
  • 시간스텝 절반으로 다시 돌린다. 접촉이 낀 계는 비평활이라 차수가 1로 떨어지는 것이 정상이고, 답 자체가 바뀌면 접촉 판정이 스텝에 의존하고 있다는 신호다.

마지막 항목이 특히 잔인하다. 비평활 동역학은 초기조건과 스텝에 예민해서, 결정론적 재현성을 요구하는 순간(멀티플레이어 게임의 동기화, 인증용 해석) 부동소수점 순서까지 고정해야 한다. 물리 엔진 문서의 결정론 항목이 이 이야기를 다룬다.

8. 관련 문서[편집]

9. Footnotes[편집]

  1. 최소좌표를 처음 배우면 “왜 처음부터 이걸 안 쓰지”라는 생각이 든다. 답은 접촉이다. 접촉은 어디서 몇 개가 생길지 매 프레임 달라지는 구속이고, 최소좌표계는 정의상 구속 목록이 고정돼 있어야 만들어진다. 매 프레임 좌표계를 다시 짤 수는 없으니, 게임 엔진이 최대좌표로 간 것은 게으름이 아니라 요구사항의 귀결이다.

  2. 자유도 계산에서 그뤼블러 공식(F=6(n1)(6fi)F=6(n-1)-\sum(6-f_i) 류)을 그대로 믿으면 안 되는 순간이 있다. 평면 4절 링크를 공간 기구로 세면 자유도가 음수로 나오는데 실제로는 잘 돌아간다. 링크 축들이 평행하다는 특별한 기하 덕분에 구속이 종속이 되어 랭크가 줄기 때문이며, 이런 기구를 과구속 기구(overconstrained mechanism)라 부른다. 벤네트 링크가 교과서 사례다. 수치 코드는 이걸 “구속 행렬 랭크 결손”이라는 무미건조한 경고로 알려 준다.

  3. 재미있는 역사적 대칭이 있다. 구조동역학은 “변형은 크지만 회전은 작다”에서 출발했고, 다물체 동역학은 “회전은 크지만 변형은 없다”에서 출발했다. 두 분야가 유연 다물체에서 만났을 때 서로의 가정이 정확히 반대라는 것을 발견했고, 그래서 초기 20년간 논문의 절반이 “당신들의 정식화는 원심 강성화 항을 빠뜨렸다”는 논쟁이었다. 회전하는 유연 보의 강성이 회전속도에 따라 커진다는 그 항이다.