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)은 여러 개의 강체 또는 유연체가 조인트·스프링·접촉으로 상호 구속된 계의 운동을 정식화하고 수치적으로 적분하는 분야다. 로봇 팔, 차량 서스펜션, 굴착기 붐, 인공위성 전개 구조, 게임의 래그돌이 전부 같은 수학 위에 서 있다.
단일 강체와의 결정적 차이는 구속이다. 자유로운 강체 개는 자유도가 이지만, 조인트가 끼면 실제 자유도는 훨씬 작다. 6자유도 로봇 팔은 링크가 7개라도 자유도가 6이고, 나머지 36개의 방정식은 “이 링크들은 이렇게 붙어 있어야 한다”는 대수 조건이다. 이 구속을 미리 없애느냐 방정식에 남기느냐가 다물체 동역학 전체를 두 계보로 가르는 갈림길이고, 이 문서의 뼈대이기도 하다.
2. 두 갈래 — 최소좌표와 최대좌표[편집]
| 최소좌표 (재귀) | 최대좌표 + 구속 | |
|---|---|---|
| 미지수 | 관절 변수 | 물체 위치·자세 개 + 승수 |
| 구속 | 좌표 정의에 흡수 — 위반 불가능 | 대수 방정식으로 남음 |
| 방정식 종류 | 2계 ODE | 지수 3 DAE |
| 드리프트 | 원리적으로 없음 | 반드시 생김. 안정화 필요 |
| 폐루프 | 좌표가 존재하지 않을 수 있음 | 자연스럽게 처리 |
| 접촉 추가 | 껄끄러움 | 구속 하나 더 붙이면 끝 |
| 주 사용처 | 로보틱스, ADAMS 계열 일부 | 게임 엔진, 범용 MBD 코드 |
최소좌표는 트리 구조(폐루프 없음)의 기구를 관절 변수만으로 기술한다. 진자를 각도 하나로 쓰는 것의 일반화이며, 구속이 좌표계 정의 안에 녹아 있으므로 구속을 위반할 방법이 없다. 관절이 늘어나거나 링크가 분리되는 일이 원천적으로 불가능하다는 점에서 압도적으로 깨끗하다.1
최대좌표는 물체마다 6자유도를 다 주고, 조인트를 대수 구속 으로 걸어 라그랑주 승수법으로 처리한다.
승수 가 곧 구속력(조인트 반력)이다. 이 정식화는 가상일의 원리의 직접적 귀결이며 — 구속력은 허용 가상변위에 대해 일을 하지 않으므로 구속 야코비안의 전치 공간에 놓인다 — 폐루프든 접촉이든 구속을 한 줄 더 쓰는 것으로 끝난다는 유연성이 최대 장점이다.
대가는 미분지수 3의 DAE라는 것이다. 위치 구속 에는 가 안 나오고, 두 번 미분해 가속도 수준 로 가야 비로소 를 풀 수 있다. 그러면 위치·속도 구속은 적분상수만큼 자유로워져 드리프트가 시간에 대해 대략 로 자란다. 게임에서 관절이 슬금슬금 늘어나는 그 현상이다. 대책(바움가르테 안정화, GGL 정식화, 좌표 사영)의 상세는 미분대수방정식 문서가 다루므로 여기서는 반복하지 않고, 실무적 판단만 남긴다 — 바움가르테는 튜닝 상수 두 개를 얻는 대가로 드리프트를 감추는 것이고, 사영은 정직하지만 심플렉틱 적분기의 구조 보존을 깬다.
폐루프 기구에서는 선택지가 좁아진다. 자동차의 더블 위시본 서스펜션이나 4절 링크는 최소좌표계가 닫힌 형태로 존재하지 않는 대표 사례다. 스패닝 트리를 잡고 나머지 관절을 절단(cut-joint)해 그 자리에만 구속을 거는 혼합 전략이 표준인데, 이때 절단 구속이 서로 종속이면 가 랭크 결손이 되고 가 유일하지 않다. 정정 부재가 아니라 부정정 구조가 되는 셈이며, 해법은 특이값 분해/QR로 랭크를 잡거나 대각에 작은 정칙화(CFM)를 더하는 것이다.2
3. 재귀 알고리즘 — O(n)이 나오는 이유[편집]
최소좌표계에서 다뤄야 할 문제는 둘이다.
- 역동역학(inverse dynamics): 관절 궤적 가 주어졌을 때 필요한 관절 토크 를 구한다. 제어(computed torque)와 모터 사양 결정에 쓴다.
- 순동역학(forward dynamics): 토크 가 주어졌을 때 가속도 를 구한다. 시뮬레이션에 쓴다.
역동역학의 표준은 재귀 뉴턴-오일러(RNEA)다. 베이스에서 말단으로 한 번 훑으며 각 링크의 속도·가속도를 전파하고, 말단에서 베이스로 되돌아오며 힘·모멘트를 누적한다. 두 번의 순회로 끝나므로 . 행렬을 아예 만들지 않는다는 것이 요점이다.
순동역학은 두 갈래다. 하나는 관절공간 관성행렬 를 명시적으로 만들고
를 촐레스키 분해로 푸는 것이다. 를 만드는 표준 알고리즘이 CRBA(Composite Rigid Body Algorithm)로 체인에서 , 분해가 이다. 우변의 는 으로 RNEA를 한 번 돌리면 공짜로 나온다.
다른 하나가 페더스톤(Featherstone)의 관절체 알고리즘(Articulated Body Algorithm, ABA)이다. “이 링크 아래 매달린 부분 기구 전체를 하나의 유효 관성으로 본다”는 관절체 관성을 세 번의 순회로 재귀 계산해, 를 만들지도 역행렬을 구하지도 않고 를 직접 얻는다. 복잡도가 이다.
이 을 항상 이기는 것은 아니라는 점이 실무적으로 중요하다. ABA의 상수항이 크기 때문에 자유도 10 안팎이 손익분기이고, 6축 로봇 팔처럼 짧은 체인에서는 CRBA + 촐레스키 쪽이 오히려 빠르다. 게다가 는 순동역학 말고도 쓸 데가 많다 — 조작도(manipulability), 임피던스 제어, 접촉 문제의 델라수스 연산자 가 전부 를 필요로 한다. 그래서 로보틱스 라이브러리는 셋을 다 갖고 있다.
이 알고리즘들의 표기를 깔끔하게 만드는 도구가 공간 벡터 대수(spatial vector algebra)다. 각속도와 선속도를 6차원 운동 벡터로, 모멘트와 힘을 6차원 힘 벡터로 묶어 다루면 회전과 병진을 따로 쓰던 식이 하나로 합쳐진다. 페더스톤의 표기법이 사실상 표준이 된 이유이고, 구현 코드의 줄 수를 절반으로 줄인다.
4. 접촉과 마찰 — 여기서 정직함이 끝난다[편집]
조인트는 등식 구속이라 얌전하다. 접촉은 부등식 구속이라 문제의 종류가 또 바뀐다. 침투 간격 과 법선 임펄스 에 대해
이 시뇨리니 조건이고, 여기에 쿨롱 마찰 이 붙으면 비선형 상보성 문제(NCP)가 된다. 정식화의 상세는 선형 상보성 문제 문서에 있으므로, 흔히 잘못 서술되는 지점 하나만 바로잡고 넘어간다.
쿨롱 마찰 원뿔 자체는 볼록하다. 은 2차 원뿔(second-order cone)이고, 볼록 원뿔의 교과서적 예시다. 비볼록한 것은 원뿔이 아니라 문제 전체다. 최대 소산 원리와 상보성이 결합하면 고착(stick)과 미끄러짐(slip) 중 어느 상태인지가 미리 정해지지 않는 조합적 선택이 되고, 그 분기 구조 때문에 실행 가능 집합이 비볼록해진다. 팽르베 역설처럼 해가 아예 없는 경우까지 존재한다.
이 사정을 아는 순간 아니테스쿠(Anitescu)의 볼록 완화가 왜 나왔는지가 보인다. 상보성 조건을 살짝 고쳐 전체를 볼록 원뿔 상보성 문제로 만들면, 해의 존재와 유일성이 보장되고 최적화 이론을 그대로 쓸 수 있다. MuJoCo가 매 스텝 볼록 최적화를 푸는 근거이기도 하다. 대가는 물리적 인공물이다 — 빠르게 미끄러지는 물체가 미세하게 떠오른다. 미끄럼 속도에 비례하는 가짜 법선 분리속도가 생기기 때문이며, 정확성을 조금 팔아 강건성을 산 거래다. 강건성이 없으면 아예 안 돌아가는 실시간 시뮬레이션에서는 대개 남는 장사다.
게임 엔진 쪽 실무 해법인 순차 임펄스와 투영 가우스-자이델(PGS)은 제약 해결기 문서가 다룬다. 요점만 옮기면, PGS는 1차 수렴이라 반복 횟수를 예산으로 잘라 쓸 수 있고(60 Hz에 10회 같은 식), 대신 긴 체인과 큰 질량비에서 눈에 띄게 물러진다. 무거운 상자 위에 가벼운 상자를 올리면 되지만 반대로 하면 파고드는 그 현상이다. 이 약점을 정면으로 해결하는 것이 위에서 본 재귀 알고리즘이며, Bullet이 별도로 관절체(Featherstone) 솔버를 제공하는 이유다.
5. 시간 적분[편집]
반음함수 오일러(semi-implicit / symplectic Euler)가 실시간 계보의 사실상 표준이다. 1차 정확도밖에 안 되는데도 자리를 지키는 이유는 셋이다. (가) 심플렉틱이라 에너지가 장기적으로 표류하지 않는다 — 명시적 오일러처럼 상자 더미가 저절로 폭발하지 않는다. (나) 구속을 속도 수준에서 걸면 미지수 에 대해 선형계가 되어, 매 스텝 정확히 한 번의 (근사) 선형 풀이로 끝난다. 접촉의 상보성까지 속도 수준에서 처리하는 시간 이산화(스튜어트-트링클)와 궁합이 맞는다. (다) 구현이 두 줄이다.
정밀 해석 계보는 다르다. 상용 MBD 코드는 강성이 큰 부싱·스프링과 지수 3 구속을 함께 안고 가야 하므로 암시적·강성 정확 적분기를 쓴다. MSC ADAMS의 기본값 GSTIFF는 기어(Gear)의 BDF를 지수 3 DAE에 직접 적용한 것이고, 승수 성분의 오차 추정이 로 증폭되는 문제 때문에 안정화 지수 2 정식화(SI2)와 HHT- 옵션이 함께 제공된다. 이 계보의 배경은 미분대수방정식과 강성 방정식 문서를 보면 된다. 구조동역학 쪽에서 넘어온 뉴마크법·HHT- 가 MBD에서도 그대로 쓰인다는 점이 재미있는데, 유연 다물체(강체 + 모드 축약 유연체)에서 두 분야가 실제로 만나기 때문이다.3
6. 실무 코드와 응용[편집]
| 코드 | 성격 | 좌표·솔버 |
|---|---|---|
| MSC ADAMS | 기계 산업 표준, 차량·항공 | 최대좌표 DAE, GSTIFF/SI2/HHT |
| RecurDyn | 국산(FunctionBay), 접촉·유연체 강점 | 재귀 정식화 기반 |
| Simscape Multibody | MATLAB/Simulink 통합 | 블록으로 기구를 조립해 방정식 자동 생성 |
| Project Chrono | 오픈소스, 입자·유체 연성 | 최대좌표 + 원뿔 상보성 |
| MuJoCo | 강화학습·로보틱스 | 최소좌표 + 소프트 볼록 접촉 |
| Pinocchio · Drake · DART | 로보틱스 라이브러리 | RNEA/CRBA/ABA + 해석적 미분 |
| Bullet · PhysX · Havok | 게임 | 최대좌표 순차 임펄스(+ 관절체 옵션) |
응용에서 반복적으로 나타나는 것들.
- 로봇 순/역동역학. RNEA로 중력·코리올리 보상 토크를 실시간 계산하는 computed torque 제어가 산업 로봇의 기본이다. 최근에는 궤적 최적화·강화 학습이 동역학의 미분까지 요구해서, RNEA의 해석적 도함수를 제공하는 라이브러리(Pinocchio)가 표준이 되었다.
- 차량 서스펜션. 더블 위시본은 공간 폐루프이고, 스티어링까지 넣으면 루프가 여럿이다. 킹핀 축·캠버·토 변화가 전부 기구학의 산물이라, 서스펜션 설계는 사실상 폐루프 기구 합성 문제다. 타이어 힘 모델은 별개의 경험 모형으로 얹는다.
- 기구학 특이점. 4절 링크의 토글 위치나 서스펜션 완전 신장처럼 구속 야코비안 가 랭크를 잃는 자세에서, 구속력 가 발산하고 뉴턴 반복이 죽는다. 역운동학 문서의 특이점과 같은 현상이 동역학 쪽에서 나타난 것이며, 대응은 감쇠 최소자승 의사역행렬이나 특이점 회피 궤적 설계다.
- 유연 다물체. 실제 부재는 휜다. 모드 해석으로 얻은 소수의 모드로 탄성 변형을 축약해 강체 자유도에 붙이는 부유 기준좌표계(floating frame of reference) 정식화가 표준이며, 여기서 부분구조법의 크레이그-뱀턴 축약이 그대로 재활용된다. 대변형에는 절대절점좌표(ANCF) 계열이 쓰인다.
7. 검증 — 무엇을 보는가[편집]
다물체 시뮬레이션이 조용히 틀리는 방식은 정해져 있고, 그래서 검증 및 확인 체크리스트도 정형화되어 있다.
- 구속 위반량을 시간에 대해 찍어 본다. 위치 구속 가 단조 증가하면 드리프트이고, 톱니로 진동하면 사영이 매 스텝 되돌리고 있다는 뜻이다.
- 에너지를 본다. 감쇠와 외력이 없는 계에서 총 에너지가 표류하면 적분기나 안정화 파라미터를 의심한다. 반음함수 오일러는 에너지가 진동하되 표류하지 않아야 정상이다.
- 구속력의 물리적 타당성을 본다. 가 특정 자세에서 튀면 랭크 결손이나 특이점이다.
- 시간스텝 절반으로 다시 돌린다. 접촉이 낀 계는 비평활이라 차수가 1로 떨어지는 것이 정상이고, 답 자체가 바뀌면 접촉 판정이 스텝에 의존하고 있다는 신호다.
마지막 항목이 특히 잔인하다. 비평활 동역학은 초기조건과 스텝에 예민해서, 결정론적 재현성을 요구하는 순간(멀티플레이어 게임의 동기화, 인증용 해석) 부동소수점 순서까지 고정해야 한다. 물리 엔진 문서의 결정론 항목이 이 이야기를 다룬다.
8. 관련 문서[편집]
- 강체 동역학 · 물리 엔진 · 제약 해결기 · 래그돌
- 미분대수방정식 · 강성 방정식 · 뉴마크법 · 심플렉틱 적분기 · 변분 적분기
- 라그랑주 역학 · 해밀턴 원리 · 일반화 좌표 · 가상일의 원리 · 라그랑주 승수법
- 선형 상보성 문제 · 충돌 감지 · 구속 동역학 · 위치 기반 동역학
- 역운동학 · 자코비안 행렬 · 특이값 분해 · 촐레스키 분해 · 슈어 보수
- 모드 해석 · 부분구조법 · 유연 다물체 · 구조해석
- Bullet · PhysX · Havok · MuJoCo · 검증 및 확인
9. Footnotes[편집]
-
최소좌표를 처음 배우면 “왜 처음부터 이걸 안 쓰지”라는 생각이 든다. 답은 접촉이다. 접촉은 어디서 몇 개가 생길지 매 프레임 달라지는 구속이고, 최소좌표계는 정의상 구속 목록이 고정돼 있어야 만들어진다. 매 프레임 좌표계를 다시 짤 수는 없으니, 게임 엔진이 최대좌표로 간 것은 게으름이 아니라 요구사항의 귀결이다. ↩
-
자유도 계산에서 그뤼블러 공식( 류)을 그대로 믿으면 안 되는 순간이 있다. 평면 4절 링크를 공간 기구로 세면 자유도가 음수로 나오는데 실제로는 잘 돌아간다. 링크 축들이 평행하다는 특별한 기하 덕분에 구속이 종속이 되어 랭크가 줄기 때문이며, 이런 기구를 과구속 기구(overconstrained mechanism)라 부른다. 벤네트 링크가 교과서 사례다. 수치 코드는 이걸 “구속 행렬 랭크 결손”이라는 무미건조한 경고로 알려 준다. ↩
-
재미있는 역사적 대칭이 있다. 구조동역학은 “변형은 크지만 회전은 작다”에서 출발했고, 다물체 동역학은 “회전은 크지만 변형은 없다”에서 출발했다. 두 분야가 유연 다물체에서 만났을 때 서로의 가정이 정확히 반대라는 것을 발견했고, 그래서 초기 20년간 논문의 절반이 “당신들의 정식화는 원심 강성화 항을 빠뜨렸다”는 논쟁이었다. 회전하는 유연 보의 강성이 회전속도에 따라 커진다는 그 항이다. ↩