예상시간: 장애물 세팅: 2시간 30분

장애물 탐지 드론: 6시간

먼저 Gazebo sim의 물체에 대해서 알아봐야 한다.

Link: 하나의 Body에 물리적인 정보를 담고 있다. Link에는 visual 요소와 collision 요소가 포함되어 있다. Link는 Joint를 통해 합칠 수 있다. 다만, 각 Body의 visual 요소와 collision 요소는 따로따로 설정해야 한다.

Collision: Collision 요소는 물체의 충돌 범위를 설정한다.

Visual: 말 그대로 시각적인 정보를 설정한다.

Gazebo sim에 장애물 설치하기

원래 Gazebo sim에 장애물 설치할 수 있는 좋은 UI가 있다. 허나, 해당 UI를 선택하면 size를 어떻게 바꾸는지 잘 몰라서 코드로 짜보기로 했다.

화면 캡처 2026-02-21 203351.png

코드로 장애물을 설치하는 방법은 다음과 같다.

  1. 월드 파일 찾기

    보통 아래 경로에 있다.

    # 파일 경로 (본인의 PX4 설치 경로에 따라 다를 수 있음)
    code ~/PX4-Autopilot/Tools/simulation/gz/worlds/default.sdf
    
  2. Xml 파일 교체하기

    열면 Xml 파일이 있을텐데 마지막 <\world> 직전에 해당 블록을 삽입하면 된다.

    <model name='huge_wall'>
          <static>true</static>
          <pose>7 0 5 0 0 0</pose> <link name='link'>
            <collision name='collision'>
              <geometry>
                <box>
                  <size>1 10 10</size> </box>
              </geometry>
            </collision>
            <visual name='visual'>
              <geometry>
                <box>
                  <size>1 10 10</size>
                </box>
              </geometry>
              <material>
                <ambient>0.5 0.5 0.5 1</ambient>
                <diffuse>0.5 0.5 0.5 1</diffuse>
                <specular>0.8 0.8 0.8 1</specular>
              </material>
            </visual>
          </link>
        </model>
    

    아래는 두께가 1 가로가 10 세로가 10 사이즈인 벽을 설치하는 과정이다. 여기 보면 collision이랑 geometry section이 있는데 각각 보이는 범위와 충돌 범위이다.

    저장 후 종료하면 다음과 같이 벽이 생기는 것을 알 수 있다.

    화면 캡처 2026-02-21 220811.png