로봇 시뮬레이션에서 물리 엔진은 로봇과 환경 간의 상호작용을 계산하고, 중력, 마찰, 충돌 등의 물리적 현상을 시뮬레이션하는 역할을 한다. Gazebo와 같은 시뮬레이터는 주로 ODE (Open Dynamics Engine), Bullet, DART, Simbody와 같은 여러 물리 엔진을 지원하며, 이 중 어떤 엔진을 선택할지에 따라 시뮬레이션의 성능과 정확도가 달라진다.
물리 엔진의 선택
SDF 파일에서 <physics> 태그를 사용하여 시뮬레이션에 사용할 물리 엔진을 정의한다. 일반적으로 물리 엔진은 시뮬레이션 환경의 성능 요구 사항에 따라 선택되며, ODE는 상대적으로 가볍고 빠른 반면, Bullet은 더 정교한 충돌 감지와 역학 계산을 제공한다.
여기에서 gravity는 중력의 크기를 나타내며, max_step_size는 시뮬레이션의 시간 단계의 크기, real_time_update_rate는 시뮬레이션 속도를 결정한다.
중력 적용
물리 엔진에서 중력은 시뮬레이션 환경의 중요한 요소 중 하나다. 중력은 벡터 형태로 정의되며, 일반적으로 지구의 표준 중력인 $\mathbf{g} = [0, 0, -9.81] , \text{m/s}^2$를 사용한다. 중력은 로봇의 모든 링크와 조인트에 동일하게 적용되며, 이는 로봇의 질량 중심에 대한 영향을 계산하는 데 사용된다.
마찰과 댐핑 설정
마찰과 댐핑은 로봇이 환경과 상호작용할 때 매우 중요한 물리적 속성이다. 마찰은 접촉 표면 간의 저항을 나타내며, 댐핑은 시스템에서 발생하는 에너지를 소모하는 역할을 한다. 물리 엔진에서 마찰과 댐핑은 각각 다음과 같은 방식으로 정의된다.