之前学习了urdf的方式, urdf是ros原生支持的机器人描述格式, 从诸多仿真例子里的机器人描述文件就能看出, 这些仿真中使用urdf, 有些仅仅是为了在ros/rviz中显示机器人robotModel, 有些则同时也能在gazebo中显示模型.
但如果想更高级的使用gazebo,做更加复杂的仿真, 那还是用gazebo的原生格式sdf比较好.
如何使用sdf来进行world, 甚至robot级别的描述, 具体不细说, 但肯定是和urdf差不多一个道理.
现在需要弄清楚的是,如果用gazebo原生的sdf, 那ros如何控制这些robot/actuator,sensor呢.
官方教程走起:
其实就是要写插件, 如何写插件: http://gazebosim.org/tutorials?cat=write_plugin
推荐知呼教程: https://zhuanlan.zhihu.com/p/67636104
这里有5个页面tutorial, 依次尝试后,回忆总结:
t1, world plugin, 简单熟悉过程
t2, model plugin, 插入了一个方块,给了一个初速度;
t3, world plugin, 3种插入model的方法
t4, world plugin, 改变世界gravity的方向和大小, model向天上飘去
t5, system plugin, 从用户视角来对world进行截图保存
有了上述关于plugin的基础后,尝试中级教程Intermediate
教程有6节, 钱4节都是建立一个sdf格式的velodyne模型;
t5: 模型控制插件, 模型有一个旋转自由度, 可以有多种方式控制旋转速度; 1) 在sdf中用自定义标签设定属性,然后在plugin的load函数中读取属性值,运行. 2)两种api方法: There are two API types that we can use: message passing, and functions.
t6: 关键介绍, 如何让ros可以控制模型.
重点学习t5-t6