질량 하나로 하중을 설명할 수 있을까
질량 m은 kg 단위의 관성 규모이고 무게는 중력에 의한 힘이다. 중력가속도 g가 m/s²일 때 무게 크기는 mg(N)다. 밀도 ρ는 kg/m³ 단위의 부피당 질량이며 균일한 재료라면 질량은 ρV다. V는 m³ 단위 부피다. 예를 들어 가상 닫힌 상자의 부피가 0.002 m³이고 균일 밀도를 500 kg/m³로 가정하면 1 kg이다. 이 계산은 내부가 차 있고 같은 재료라는 가정에 의존한다. 외형 메시만으로 빈 공간이나 전자부품의 질량을 알아낼 수는 없다.
시뮬레이터가 밀도/형상으로 질량을 추정하는 경로를 사용했다면 추정값의 출처와 재계산 조건을 기록한다. 명시 질량·밀도·충돌 근사 중 어떤 정보가 실제로 적용되는지는 소비자의 규칙을 확인한다. 임의로 작은 질량을 넣어 경고를 없앤 모델은 실제 부품을 설명하지 못할 수 있다. visual 경량화나 collision 변경이 자동 추정에 영향을 줄 가능성도 따로 검사한다.
질량중심 COM은 질량을 가중치로 한 위치 평균이다. 모든 위치를 같은 프레임/단위로 맞춘 뒤 계산한다. 고정 결합한 두 부품의 질량을 m₁/m₂, 중심 위치를 x₁/x₂, 총질량을 M이라 쓰면 다음과 같다. 이번 예는 x축 위에 놓인 중심들만 비교한다.
m₁=1 kg가 x₁=0 m, m₂=3 kg가 x₂=0.2 m에 있으면 M=4 kg, x_C=0.6/4=0.15 m다. 기하학적 중간 0.1 m와 다르다. x=0의 지지점에서 팔이 수평이고 중력이 −z, g=10 m/s²라면 무게는 40 N, 중력 토크 크기는 0.15×40=6 N·m다. 유지하려면 반대 방향의 토크가 필요하다. COM을 기하학적 중간으로 오해하면 4 N·m로 과소평가한다. 이 값은 가상 하중 계산이지 실제 모터의 연속 정격 판정이 아니다.
관성은 기준을 맞춰 합한다
회전 관성은 질량뿐 아니라 축에서 얼마나 멀리 분포하는지에 따라 달라지며 단위는 kg·m²다. 같은 총질량이라도 중심 가까이 모인 것과 끝에 모인 것은 가속 응답이 다르다. 3차원에서는 대칭 3×3 관성 텐서로 표현하며 대각/비대각과 표현 축을 함께 읽는다. CAD의 링크 끝점 기준 행렬과 URDF의 COM 기준 행렬을 혼용하지 않는다. USD의 주관성 값과 주축 방향처럼 표현 방식이 다르면 그 대응도 확인한다.
그림 M10.04-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
두 부품을 하나의 강체로 고정 결합할 때는 각 부품 관성을 공통 축으로 회전시키고 공통 기준점으로 옮겨 더한다. M08.04의 평행축 정리를 축 하나에 적용하면, 평행한 z축에서 부품 COM 관성 I_i와 새 축까지의 수직 거리 d_i에 대해 기여는 I_i+m_i d_i²다. d_i는 단순한 3차원 거리 대신 해당 축으로부터의 수직 거리라는 점이 중요하다.
위 두 부품의 축 방향이 정렬됐고 각각 COM의 z축 관성이 I₁=0.002, I₂=0.006 kg·m²라고 하자. 합친 COM의 z축까지 거리는 0.15/0.05 m다. 이 계산은 앞의 중력 토크와 별개로 z축 회전 관성을 구하는 것이다.
0.002+0.006=0.008만 쓰면 중심 이동 기여 0.03을 빠뜨린다. 동일한 단일 강체가 이 고정 축으로 회전하고 다른 z축 토크가 없다는 단순 조건에서 순토크 0.076 N·m이면 각가속도는 0.076/0.038=2 rad/s²다. 그러나 움직이는 다관절 팔 전체를 언제나 하나의 상수 I로 대체할 수는 없다. 링크의 상대 자세에 따라 분포와 관절 사이의 결합이 바뀐다.
입력 검사에는 기준점/축·단위, 대칭과 주관성의 양의 성질, 세 주관성의 삼각 조건, 실제 질량/COM/재질 출처가 들어간다. 대각값이 양수라고 모든 비대각 텐서가 올바른 것은 아니고, 수치 조건을 만족한다고 실제 부품과 일치하는 것도 아니다. Modern Robotics 저자 자료는 질량 분포와 관성의 관계를 설명한다. 기존 2.7 관성의 축/단위 검사도 함께 사용한다.
articulation은 여러 링크를 한 계산 구조로 다룬다
articulation은 관절로 연결된 강체들의 시뮬레이션 구조다. 링크들을 하나의 강체로 붙여 상대 운동을 없앤다는 뜻은 아니다. 축약 좌표 표현에서는 각 링크의 독립 세계 자세를 모두 자유 변수로 두는 대신 루트 자세와 허용된 관절 좌표로 링크 배치를 결정한다. 관절 제약을 구조에 반영하지만, 충돌·관성·drive·시간 설정의 모든 결함을 자동으로 고치는 기능은 아니다.
가상 열린 트리에서 두 revolute 관절은 각각 독립적인 한 축 회전을 허용한다고 하자. 베이스가 세계에 고정이면 로컬 운동 자유도는 2다. 같은 트리를 아무 외부 제약 없이 공간에서 자유롭게 움직이게 하면 베이스의 병진 3/회전 3을 더해 8이다. 회전 자세를 quaternion 네 성분으로 저장하더라도 정규화와 중복 표현이 있으므로 베이스 회전 자유도가 4가 되는 것은 아니다. 저장 숫자의 수와 독립 운동 차원을 구분한다.
두 관절 사이에 별도 종속 관계나 닫힌 고리가 있으면 위 단순 합을 그대로 적용하지 않는다. 지원되는 관절/루프 처리와 제약의 독립성을 확인해야 한다. 또 articulation의 루트 표시와 ‘베이스를 세계에 고정하는 물리 조건’은 별도다. OpenUSD ArticulationRootAPI는 대상 구조를 표시하며, 실제 백엔드가 어떻게 구성/제약을 해석하는지는 해당 구현을 확인한다.
가상 팔이 떨릴 때는 루트와 연결 구조, 고정/자유 베이스, 링크 질량비/관성 프레임, 초기 겹침과 충돌 필터, drive/스텝을 나누어 기록한다. 근거 없이 관성을 작게 만들어 움직임만 빠르게 하거나 solver 반복 수만 올려 구조 오류를 숨기지 않는다. PhysX articulation 설명의 축약 좌표와 트리/베이스 개념은 이 진단을 보충한다. 아래 수치는 실제 엔진 결과가 아닌 교육용 계산이다.