Gazebo World Plugin

지토·2023년 4월 29일
0

ROS 로봇 프로그래밍

목록 보기
16/16

Gazebo 는 로봇 시뮬레이션을 위한 도구이다.
이때 시뮬레이션이 시행되는 환경인 World (.sdf, .world, .urdf 등) 을 수정하고 조작하기 위해 Plugin 을 사용할 수 있다.

World 파일 예시

다음 파일은 example_world 라는 이름을 가진 Gazebo 세계를 정의한다. 이 파일은 World 에서 사용될 모든 모델, 라이트 및 플러그인을 정의하는 데 사용된다.
또한 이 파일은 default_physics 라는 이름을 가진 ODE (Open Dynamics Engine)물리 엔진을 사용하여 시뮬레이션을 실행하는 것을 지정한다.

<?xml version="1.0" ?>
<sdf version="1.6">
  <world name="example_world">
    <physics name="default_physics" default="true" type="ode">
      <max_step_size>0.001</max_step_size>
      <real_time_factor>1</real_time_factor>
      <real_time_update_rate>1000</real_time_update_rate>
      <gravity>0 0 -9.8</gravity>
      <ode>
        <solver>
          <type>quick</type>
          <iters>50</iters>
          <sor>1.3</sor>
        </solver>
      </ode>
    </physics>
  </world>
</sdf>

CC 플러그인 파일 예시

#include <gazebo/gazebo.hh>
namespace gazebo
{
  class ExamplePlugin : public WorldPlugin
  {
    public: void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf)
    {
        std::cout << "Example plugin loaded!" << std::endl;
    }
  };
  GZ_REGISTER_WORLD_PLUGIN(ExamplePlugin)
}

CMakeLists.txt 예시

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

find_package(gazebo REQUIRED)

include_directories(${GAZEBO_INCLUDE_DIRS})
link_directories(${GAZEBO_LIBRARY_DIRS})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GAZEBO_CXX_FLAGS}")

add_library(example_plugin SHARED example_plugin.cc)
target_link_libraries(example_plugin ${GAZEBO_LIBRARIES})

시행 방법

  1. Gazebo 를 실행한다.
  2. 상단 메뉴에서 file -> open 을 선택한다.
  3. 파일 브라우저를 사용해 저장한 example.world 파일을 선택한다.
  4. open 버튼을 선택하면 Gazebo 에서 example.world 파일이 로드된다.

0개의 댓글