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.0Copyright (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 的全部内容, 来源链接: utcz.com/a/72389.html