背景:在一台已经搭建好gazebo的ubuntu系统。(此文是窗口操作,所有操作在终端中也可完成,终端操作方式不再叙述)
找到Home/.gazebo/models 目录,发现下面有好多内置的模型文件夹,里面内置了各种描述模型的文件,这些文件都是可以参考和学习的文件。
注意:.gazebo是隐藏文件夹,需要ctrl+H强制显示,才可以在ubuntu的文件管理器中看到。
在models文件夹下面,我们新建一个名为my_robot的文件夹。
进入到my_robot文件夹中,右键新建一个model.config的空白文档。
并编辑此文件,输入以下代码,保存退出。
此段代码用来描述我们新建的仿真模型,具体含义挺通俗易懂的,不再具体解释。
<?xml version="1.0"?>
<model>
<name>My Robot</name>
<version>1.0</version>
<sdf version='1.4'>model.sdf</sdf>
<author>
<name>My Name</name>
<email>me@my.email</email>
</author>
<description>
My awesome robot.
</description>
</model>
在my_robot文件夹中,右键新建一个model.sdf的空白文档。这个是重点的模型文件。
在其中输入以下代码并保存退出。解释在代码中注释过了,可以看一下。
<?xml version="1.0" encoding="utf-8"?>
<sdf version="1.4">
<model name="my_robot">
<!--官方文档地址:http://sdformat.org/tutorials?cat=specification&-->
<static>true</static>
<!--添加长方形底座。
创建的是一个0.4*0.2*0.1米的盒子,由于盒子高为0.2,以盒子的中心点为坐标系,
故需要<pose>0 0 .1 0 0 0</pose>,碰撞元素(collision)指定了所使用的碰
撞检测引擎的形状,视觉元素(visual)指定了视图引擎的形状,大部分的例子中,
collision和visual是相同的,最常见的使用不同collision和visual元素是为了
搭配一个使用了复杂网格的视觉元素而简化了碰撞元素,这有利于提高性能。-->
<link name="chassis">
<pose>0 0 .1 0 0 0</pose>
<collision name="collision">
<geometry>
<box>
<size>.4 .2 .1</size>
</box>
</geometry>
</collision>
<visual name="visual">
<geometry>
<box>
<size>.4 .2 .1</size>
</box>
</geometry>
</visual>
<!--添加一个万向轮,万向轮是一个没有摩擦的球体。-->
<collision name="caster_collision">
<pose>-0.15 0 -0.05 0 0 0</pose>
<geometry>
<sphere>
<radius>.05</radius>
</sphere>
</geometry>
<surface>
<friction>
<ode>
<mu>0</mu>
<mu2>0</mu2>
<slip1>1.0</slip1>
<slip2>1.0</slip2>
</ode>
</friction>
</surface>
</collision>
<visual name="caster_visual">
<pose>-0.15 0 -0.05 0 0 0</pose>
<geometry>
<sphere>
<radius>.05</radius>
</sphere>
</geometry>
</visual>
</link>
<!--增加左右轮。-->
<link name="left_wheel">
<pose>0.1 0.13 0.1 0 1.5707 1.5707</pose>
<collision name="collision">
<geometry>
<cylinder>
<radius>.1</radius>
<length>.05</length>
</cylinder>
</geometry>
</collision>
<visual name="visual">
<geometry>
<cylinder>
<radius>.1</radius>
<length>.05</length>
</cylinder>
</geometry>
</visual>
</link>
<link name="right_wheel">
<pose>0.1 -0.13 0.1 0 1.5707 1.5707</pose>
<collision name="collision">
<geometry>
<cylinder>
<radius>.1</radius>
<length>.05</length>
</cylinder>
</geometry>
</collision>
<visual name="visual">
<geometry>
<cylinder>
<radius>.1</radius>
<length>.05</length>
</cylinder>
</geometry>
</visual>
</link>
</model>
</sdf>
保存退出。
至此我们的模型文件夹目录下文件结构如下。
测试我们新建的机器人。
终端中输入gazebo并回车,打开gazebo软件。
我们在左侧选项卡Insert中,往下翻,会找到一个名为My Robot的模型,点击此模型名字,然后在右方地图中合适位置,单击鼠标左键,即可在地图中添加我们新建的机器人小车。