Gazebo-插件-插件101

  1. 1. 插件类型
  2. 2. Hello WorldPlugin
    1. 2.1 源码
    2. 2.2 编译
  3. 3. 使用插件

https://classic.gazebosim.org/tutorials?tut=plugins_hello_world&cat=write_plugin

1. 插件类型

  1. World
  2. Model
  3. Sensor
  4. System
  5. Visual
  6. GUI

需要安装Gazebo development files。

sudo apt-get install libgazebo6-dev

2. Hello WorldPlugin

2.1 源码

$ mkdir ~/gazebo_plugin_tutorial
$ cd ~/gazebo_plugin_tutorial
$ gedit hello_world.cc

gazebo/gazebo.hh包含基本的函数,physics.hh, rendering.hh, sensors.hh不在其中。所有插件需要在gazebo namespace中。

#include <gazebo/gazebo.hh>

namespace gazebo
{
    class WorldPluginTutorial : public WorldPlugin // 需要继承自一个插件类型,这里是WorldPlugin
    {
    public:
        WorldPluginTutorial() : WorldPlugin()
        {
            printf("Hello World!\n")
        }

    public:
        void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf) // 这是一个强制的方法
        {
        }
    };

    GZ_REGISTER_WORLD_PLUGIN(WorldPluginTutorial) // 注册这个plugin
    // 还有其他宏对应其他类型的插件,例如GZ_REGISTER_MODEL_PLUGIN, GZ_REGISTER_SENSOR_PLUGIN等
}

2.2 编译

创建CMakeLists.txt

gedit ~/gazebo_plugin_tutorial/CMakeLists.txt

内容如下:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(hello_world_plugin)

find_package(gazebo REQUIRED)
include_directories(${GAZEBO_INCLUDE_DIRS})
link_directories(${GAZEBO_LIBRARY_DIRS})
list(APPEND CMAKE_CXX_FLAGS "${GAZEBO_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GAZEBO_CXX_FLAGS}")

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

创建build目录,并编译,最终得到libhello_world.so

$ mkdir ~/gazebo_plugin_tutorial/build
$ cd ~/gazebo_plugin_tutorial/build
$ cmake ../
$ make

将路径添加到GAZEBO_PLUGIN_PATH。要永久生效的话,添加到~/.bashrc

$ export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/gazebo_plugin_tutorial/build

3. 使用插件

将plugin附加在SDF文件中。

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">

    <plugin name="hello_world" filename="gazebo_plugin_tutorial/build/libhello_world.so"/>

  </world>
</sdf>

使用gzserver运行这个world,输出如下:

gzserver myworld.world --verbose
Gazebo multi-robot simulator, version 11.12.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

[Msg] Waiting for master.
[Msg] Connected to gazebo master @ http://127.0.0.1:11345
[Msg] Publicized address: 10.0.80.9
[Msg] Loading world file [/home/123/project/test/walk.world]
Hello World!

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 cdd@ahucd.cn

×

喜欢就点赞,疼爱就打赏

B站 cdd的庇护之地 github itch