본문 바로가기
ROS Project🦾

ROS gazebo에서 image 넣기, How to build a world with real image as ground plane

by 우직한 사람 2024. 1. 31.
반응형

 

1. 디렉터리 생성하기

mkdir ~/.gazebo/models/my_ground_plane

 

 

2. material 디렉터리 생성 및 하위 디렉터리 생성

mkdir -p ~/.gazebo/models/my_ground_plane/materials/textures
mkdir -p ~/.gazebo/models/my_ground_plane/materials/scripts

 

 

3. scripts 파일에 my_ground_plane.material 파일 생성

sudo nano my_ground_plane.material
material MyGroundPlane/Image
        {
          technique
          {
            pass
            {
              ambient 1 1 1 1.000000
              diffuse 1 1 1 1.000000
              specular 0.03 0.03 0.03 1.000000 

              texture_unit
              {
                texture MyImage.png
              }
            }
          }
        }

 

4. textures 폴더에 이미지 복사하기

~/.gazebo/models/my_ground_plane/materials/textures/MyImage.png

 

5. ~/.gazebo/models/my_ground_plane/model.sdf파일 생성하기

<?xml version="1.0" encoding="UTF-8"?>
<sdf version="1.4">
   <model name="my_ground_plane">
      <static>true</static>
      <link name="link">
         <collision name="collision">
            <geometry>
               <plane>
                  <normal>0 0 1</normal>
                  <size>100 100</size>
               </plane>
            </geometry>
            <surface>
               <friction>
                  <ode>
                     <mu>100</mu>
                     <mu2>50</mu2>
                  </ode>
               </friction>
            </surface>
         </collision>
         <visual name="visual">
            <cast_shadows>false</cast_shadows>
            <geometry>
               <plane>
                  <normal>0 0 1</normal>
                  <size>100 100</size>
               </plane>
            </geometry>
            <material>
               <script>
                  <uri>model://my_ground_plane/materials/scripts</uri>
                  <uri>model://my_ground_plane/materials/textures/</uri>
                  <name>MyGroundPlane/Image</name>
               </script>
            </material>
         </visual>
      </link>
   </model>
</sdf>

[참고]

해당 부분은 충돌 모델의 마찰력(friction)을 정의하는 부분입니다.

사용된 요소들은 Open Dynamics Engine (ODE) 엔진에 의한 마찰력 모델을 나타냅니다.

  • <mu> 엘리먼트: 마찰력 계수(friction coefficient)를 나타냅니다. 이 값은 물체 간의 마찰을 정의하며, 값이 클수록 더 강한 마찰이 발생합니다.
  • <mu2> 엘리먼트: 물체 간의 슬립(stick-slip) 현상을 조절하는 두 번째 마찰력 계수입니다. 이 값은 마찰력의 변화에 영향을 미치며, 일반적으로 <mu2> 값이 <mu> 값보다 작습니다.

여기서는 <mu>가 100이고 <mu2>가 50으로 설정되어 있습니다. 이는 충돌하는 물체 간의 강한 마찰력을 나타냅니다. 이 값들은 물리 엔진에서 실제 충돌 시의 물체 간 상호작용을 모사하는 데 사용됩니다.

 

 

6. ~/.gazebo/models/my_ground_plane/model.config 파일 생성하기

<?xml version="1.0" encoding="UTF-8"?>
<model>
   <name>My Ground Plane</name>
   <version>1.0</version>
   <sdf version="1.4">model.sdf</sdf>
   <description>My textured ground plane.</description>
</model>

 

7. 정리

~/.gazebo/models/my_ground_plane/materials/scripts/my_ground_plane.material
~/.gazebo/models/my_ground_plane/materials/textures/MyImage.png
~/.gazebo/models/my_ground_plane/model.config
~/.gazebo/models/my_ground_plane/model.sdf

 

 

8. Result

반응형