| Note: For ROS Fuerte. |
| |
Gazebo Plugin Intro
Description: A basic tutorial that shows users how to create a gazebo plugin.Tutorial Level: BEGINNER
Contents
Users are highly discouraged from using the documentation and tutorials for Gazebo on this page. Gazebo is now a stand alone project at gazebosim.org. See documentation there, thanks!
Disclaimer; as of now (12/28/2012), this tutorial doesn't work with catkin since the dependency (gazebo pkg) is not yet catkinized.
Install ROS
Install the simulator_gazebo stack.
Create a Gazebo Plugin
Create a ROS package in a scratch workspace and add its path to `ROS_PACKAGE_PATH
$ roscreate-pkg gazebo_tutorials gazebo
$ catkin_create-pkg gazebo_tutorials gazebo
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:`pwd`Create a very simple plugin as described here and save the file as gazebo_tutorials/src/simple_world_plugin.cpp:
#include "gazebo.hh"
#include "common/common.h"
#include <stdio.h>
namespace gazebo
{
class HelloWorld : public WorldPlugin
{
public: HelloWorld() : WorldPlugin()
{
printf("Hello World!\n");
}
public: void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf)
{
};
};
GZ_REGISTER_WORLD_PLUGIN(HelloWorld)
}Update gazebo_tutorials/CMakeLists.txt by adding the following lines:
rosbuild_add_library(gazebo_tutorials src/simple_world_plugin.cpp)
add_executable(gazebo_tutorials src/simple_world_plugin.cpp)
target_link_libraries(gazebo_tutorials ${catkin_LIBRARIES})Update gazebo_tutorials/manifest.txt by adding the following block:
<export>
<gazebo plugin_path="${prefix}/lib" gazebo_media_path="${prefix}" />
</export>
Compiling the Plugin
rosmake gazebo_tutorials
Creating a World file
Save the following file as gazebo_tutorials/worlds/hello.world:
<?xml version="1.0"?>
<gazebo version="1.0">
<world name="default">
<!-- A ground plane -->
<include filename="ground_plane.model"/>
<!-- A global light source -->
<include filename="sun.light"/>
<!-- reference to your plugin -->
<plugin name="gazebo_tutorials" filename="libgazebo_tutorials.so"/>
</world>
</gazebo>
Running the plugin
Create the following launch file gazebo_tutorials/launch/hello.launch:
<launch> <!-- set use_sim_time flag --> <param name="/use_sim_time" value="true" /> <node name="gazebo" pkg="gazebo" type="gazebo" args="$(find gazebo_tutorials)/worlds/hello.world" respawn="false" output="screen"/> <node name="gazebo_gui" pkg="gazebo" type="gui" respawn="false" output="screen"/> </launch>
and finally,
roslaunch gazebo_tutorials hello.launch







