非常好的网上教程:
1. 通过上面教程后可能碰到的问题
需要注意的是,我在gazebo11版本中,模型插件继承自ModelPlugin
时会报错,因此我改成继承自WorldPlugin
。
如果在编译插件成功后,运行world文件报错:
Failed to load plugin libvelodyne_plugin.so: libvelodyne_plugin.so: cannot open shared object file: No such file or directory
可以尝试以下两种方法:
- 添加自己的build路径,如:
export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/velodyne_plugin/build
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/velodyne_plugin/build
将上述两行代码(记住改为你自己的路径)添加到.bashrc文件中。
- 或者修改world文件中的插件相对路经:
将
<plugin name="velodyne_control" filename="libvelodyne_plugin.so"/>
改为
<plugin name="velodyne_control" filename="./libvelodyne_plugin.so"/>
2. 测试插件是否成功
为了测试插件是否安装成功,我的测试步骤如下:
(1)在终端打开roscore;
(2)打开另外一个终端,运行gzserver命令:
gzserver 你自己创建的世界 --verbose
例如:
gzserver testforce.world --verbose
(3)再打开一个终端,运行:
gzclient
这样就可以打开gazebo仿真世界了。
(4)打开rostopic list
查看插件中的订阅话题是否成功订阅。
(5)在新的终端发布话题,测试插件是否成功。要注意,发布的话题名称要与你在插件中写的订阅话题的名称一致。例如,我插件中写的订阅话题名称为:/gazebo_client/testforce
,那么我发布的话题名称也是这个,例如:
rostopic pub /gazebo_client/testforce std_msgs/Float32 "data: 0.5"
按tab
键能够自动补齐。其中的data就是我们要发布的数据。如果能够正常发布,那么插件就没问题。