2.6 물리 재질과 접촉 역학

2.6.1 Coulomb friction의 단순 모델

접촉면의 법선력 크기를 NN이라 할 때 단순 Coulomb 모델은 다음과 같다.

∥Ft∥≤μsN(정지),∥Ft∥=μdN(미끄러짐) \|F_t\| \le \mu_s N \quad \text{(정지)}, \qquad \|F_t\| = \mu_d N \quad \text{(미끄러짐)}

μs\mu_s는 정마찰계수(static friction), μd\mu_d는 동마찰계수(dynamic friction)다. PhysX는 개별 점 하나가 아니라 contact patch와 friction anchor를 사용해 충격량 기반으로 제약을 푼다. 따라서 교과서 식은 방향과 규모를 이해하는 모델이며 solver의 정확한 내부 결과와 같다고 가정하면 안 된다.

마찰계수는 재질 pair의 속성이다. 고무-플라스틱, 고무-금속은 서로 다른 값을 갖는다. 두 material의 값을 결합하는 combine mode도 결과에 영향을 준다. 프로젝트에서 rubber_mu=0.9처럼 단일 숫자만 기록하지 말고 두 표면, 측정 방법, 습도/오염 상태를 기록한다.

2.6.2 기울기 실험으로 정마찰 추정

물체가 경사면에서 막 미끄러지기 시작하는 각도를 θc\theta_c라 하면 단순 모델에서

μs≈tan⁡θc \mu_s \approx \tan\theta_c

이다. code/contact_estimator.py가 이 계산을 수행한다. 최소 5회 반복해 평균과 분산을 기록하고, 표면을 닦은 조건과 그대로 둔 조건을 구분한다. 실제 그리퍼에는 압력 분포, 패드 변형, 곡면 접촉이 추가되므로 이 값은 초기값이지 정답이 아니다.

2.6.3 반발계수

충돌 법선 방향 상대속도를 기준으로 반발계수(coefficient of restitution) ee를 단순화하면

e=−vaftervbefore e = -\frac{v_{after}}{v_{before}}

이다. 공기 저항과 회전을 무시한 낙하 실험에서는 e≈hr/hde\approx\sqrt{h_r/h_d}로 추정할 수 있다. pick-and-place 대상체는 보통 큰 bounce가 필요하지 않으므로 낮은 값을 시작점으로 삼되, 임의의 범위를 정답처럼 고정하지 않는다. 바닥 재질과 대상체 재질을 실제 조합으로 측정한다.

2.6.4 physics material과 render material

  • Physics material: friction, restitution, density 등 접촉 계산에 사용된다.
  • Render material: base color, roughness, metallic, normal 등 픽셀 생성에 사용된다.

둘은 서로 독립적이다. 반짝이는 금속처럼 보이게 만들었다고 마찰이 자동으로 낮아지지 않는다. Isaac Sim의 material API 중 일부는 experimental로 표시되어 있어 변경될 수 있다. 안정성이 중요한 asset pipeline에서는 UsdPhysics.MaterialAPI와 명시적인 binding을 사용하고, high-level wrapper를 쓸 때는 설치 버전 문서를 확인한다.

이 장의 예제 코드·설정 파일 (4)

이 장의 자가 점검·가상실습