Gazebo 는 로봇 시뮬레이션을 위한 도구이다.
이때 시뮬레이션이 시행되는 환경인 World (.sdf, .world, .urdf 등) 을 수정하고 조작하기 위해 Plugin 을 사용할 수 있다.
다음 파일은 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>
#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)
}
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})