Gazebo-Plugins

Tutorial:http://gazebosim.org/tutorials?cat=write_plugin
1.插件是指被编译成共享库并被插入到仿真中的一串代码
2.分为六种插件:
    World
    Model
    Sensor
    System
    Visual
    GUI
3.安装开发依赖文件
sudo apt-get install libgazebo6-dev
4.手写worldPlugin
  继承WorldPlugin
  Load()函数是必须的,用来接受SDF文件
  GZ_REGISTER_WORLD_PLUGIN(WorldPluginTutorial) :使用宏(macro)在仿真器上注册这个插件
   export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/gazebo_plugin_tutorial/build 将库文件写到环境变量中(只在当前bash中有效,若要在所有bash中有效,必须添加到~/.bashrc)
5.使用
  写一个.world文件,添加插件,只要插件在环境变量中,gazebo便能找到。代码如下:

<?xml version="1.0"?>

<sdf version="1.4">

<world name="default">

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

</world>

</sdf>

  执行命令: gzserver ~/gazebo_plugin_tutorial/hello.world --verbose 
  结果:

Gazebo multi-robot simulator, version 9.0.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: 172.26.155.158

Hello World!

6.手写modelPlugin
  插件可以访问到model中的所有元素(link,joint,collision等)
  this->model->SetLinearVel(ignition::math::Vector3d(.3, 0, 0));
  gzserver -u model_push.world(以静止状态启动gzserver)
7.手写控制世界中的物体脚本
  可以实现让设置物体的重力(悬浮也是可以实现的),脚本中创建了一个transport node,然后创建了一个publisher发布~/physic topic
  链接:http://gazebosim.org/tutorials?tut=plugins_world_properties&cat=write_plugin

运行时,实现物体的悬浮(设置重力为0)

Gazebo-Plugins

 

以上是 Gazebo-Plugins 的全部内容, 来源链接: utcz.com/a/72389.html

回到顶部