URDF에서 로봇의 시각적 요소를 정의할 때 메쉬 파일은 로봇의 외형을 보다 정확하고 복잡하게 표현할 수 있는 방법 중 하나이다. 일반적으로 STL, Collada와 같은 파일 형식을 사용하며, 이들 파일은 로봇의 외부 구조를 시각적으로 나타내는 데 유용하다. 이러한 메쉬 파일은 URDF에서 직접 참조하여 로봇의 시각적 모델을 설정할 수 있다.
STL 파일
STL (Stereolithography)은 3D 프린팅에서 널리 사용되는 파일 형식이며, 주로 삼각형으로 이루어진 격자를 이용하여 표면을 표현한다. STL 파일은 단순하면서도 경량으로, 시뮬레이션 속도를 저하시키지 않으면서 복잡한 형상을 표현할 수 있다.
STL 파일을 URDF에 적용하는 과정은 아래와 같다.
-
STL 파일 준비 먼저 로봇의 시각적 외형을 STL 파일로 준비해야 한다. 이를 위해 3D 모델링 소프트웨어(예: Blender, SolidWorks)를 사용할 수 있다.
-
URDF에서 STL 파일 참조 URDF에서 STL 파일을 참조하기 위해서는
<mesh>
태그를 사용한다. 예를 들어, URDF에서 로봇의 팔을 STL 파일로 시각화하려면 아래와 같은 구문을 사용할 수 있다.
xml
<visual>
<geometry>
<mesh filename="package://my_robot/meshes/arm.stl"/>
</geometry>
<material name="silver"/>
</visual>
- 시각적 요소의 위치 및 크기 조정
STL 파일을 불러올 때, 크기와 위치를 조정하는 것이 중요하다.
<origin>
태그를 사용하여 메쉬 파일의 위치와 회전값을 설정할 수 있다. 위치는 3차원 좌표 (x, y, z)로 나타내며, 회전은 Roll-Pitch-Yaw (RPY) 각도로 나타낸다. 수식으로 표현하면 회전 행렬은 다음과 같다.
여기서 \theta_x, \theta_y, \theta_z는 각각 Roll, Pitch, Yaw 각도를 나타낸다.
- STL 파일의 축척
STL 파일의 기본 단위는 미터이며, 필요한 경우 축척을 변경할 수 있다. 이를 위해
<scale>
태그를 사용하며, 축척값을 (sx, sy, sz)로 지정한다. 이 값은 각 축에서의 비율을 의미하며, 값이 1보다 크면 모델이 커지고, 1보다 작으면 작아진다.
xml
<geometry>
<mesh filename="package://my_robot/meshes/arm.stl" scale="1 1 1"/>
</geometry>
Collada 파일
Collada(.dae)는 더 복잡한 시각적 요소를 지원하는 파일 형식으로, STL과 달리 색상 및 재질 정보도 포함할 수 있다. 또한 애니메이션 및 여러 모델링 기능을 지원하여 로봇의 외형을 더욱 사실적으로 표현할 수 있다.
-
Collada 파일 준비 Collada 파일은 STL 파일과 마찬가지로 3D 모델링 소프트웨어(Blender, Maya 등)를 사용하여 준비할 수 있다. 모델을 제작한 후, Collada 파일 형식으로 내보내기(export)하여 URDF에서 사용할 수 있다.
-
URDF에서 Collada 파일 참조 Collada 파일은 STL 파일과 유사하게
<mesh>
태그를 통해 URDF에 참조된다. Collada 파일은 재질(material)과 색상 정보도 포함할 수 있으므로, 재질 관련 태그를 추가로 정의할 필요가 없다. 예를 들어, 로봇의 몸체를 Collada 파일로 시각화하려면 아래와 같은 구문을 사용할 수 있다.
xml
<visual>
<geometry>
<mesh filename="package://my_robot/meshes/body.dae"/>
</geometry>
</visual>
-
시각적 요소의 위치 및 회전 설정 STL 파일과 동일하게
<origin>
태그를 통해 위치와 회전을 설정할 수 있다. 여기서 위치는 (x, y, z)로 나타내고, 회전은 Roll-Pitch-Yaw 각도로 정의된다. 앞서 제시한 회전 행렬 \mathbf{R}(\text{RPY})을 동일하게 적용할 수 있다. -
Collada 파일의 축척 Collada 파일도 STL 파일처럼 기본 단위가 미터로 설정되며, 필요한 경우 축척을 변경할 수 있다.
<scale>
태그를 사용하여 각 축에 대한 크기를 조정할 수 있다. 예를 들어, 아래 구문은 Collada 파일을 사용한 로봇 모델의 크기를 변경하는 방법을 보여준다.
xml
<geometry>
<mesh filename="package://my_robot/meshes/body.dae" scale="1.2 1.2 1.2"/>
</geometry>
- Collada 파일의 재질 및 색상
Collada 파일에는 자체적으로 재질 및 색상 정보가 포함될 수 있다. 따라서 STL 파일처럼 URDF에서 추가적으로 재질을 설정할 필요가 없다. 그러나 필요에 따라 URDF에서 재질을 덮어쓸 수도 있으며, 이를 위해
<material>
태그를 사용한다. 재질 설정의 기본 예시는 아래와 같다.
xml
<material name="blue">
<color rgba="0 0 1 1"/>
</material>
- Collada 파일의 애니메이션 Collada 파일의 장점 중 하나는 애니메이션 기능을 지원한다는 점이다. 로봇의 특정 부분을 움직이거나 동작 시퀀스를 표현할 수 있다. 이때 URDF 파일 내에서 애니메이션 기능을 정의하는 것은 직접적으로 이루어지지 않지만, Gazebo와 같은 시뮬레이션 환경에서 이를 활용할 수 있다. Collada 파일 내에 정의된 애니메이션 시퀀스는 시뮬레이션에서 로봇의 동작을 구현하는 데 사용될 수 있다.
메쉬 파일의 적용 시 고려사항
-
메쉬 파일의 복잡성 STL 또는 Collada 파일의 복잡도가 높을수록 시뮬레이션의 성능이 저하될 수 있다. 특히 Collada 파일은 STL보다 더 많은 정보(재질, 색상, 애니메이션 등)를 포함하므로, 시뮬레이션에서 로봇이 많거나 복잡한 환경에서는 성능 저하가 발생할 수 있다. 이러한 경우, 메쉬 파일의 다각형 수(polygons)를 줄이는 것이 필요할 수 있다.
-
충돌 모델과의 차이 시각적 요소로 사용되는 메쉬 파일은 충돌 모델로도 사용할 수 있다. 그러나 시각적으로 복잡한 메쉬 파일은 충돌 처리에서 과도한 계산을 요구할 수 있으므로, 충돌 모델은 보통 간단한 형상으로 정의하는 것이 일반적이다. 충돌 모델에 대한 간단한 형상 정의는 이후 충돌 모델 섹션에서 다룰 예정이다.