这个教程是关于如何在gazebo内加入3D网格。
事前准备
gazebo使用的是右手定则的坐标系,Z轴是垂直的,X轴是朝前的,Y轴在左边。
降低模型复杂度
很多网格会过度复杂,一个有几千个三角形的网格为了更有效需要被分割成几个子集。可以通过查看3D网格的信息来了解如何减少三角形的数量或者如何分割网格。
建立网格
第一步是把网格的中心设置在(0,0,0)点,并且朝着x轴的方向。
设置网格大小
gazebo使用米制系统,许多网格都使用的是英文单元,使用你最喜欢的ide去设置网格的大小吧。
输出网格
当网格做好了以后,把它进行输出,这个格式会包含信息以及材料。
测试网格
最简单测试网格的方法是使用一个简单的world文件来加载网格,把下面程序当中的my_mesh.dae
换成自己真实的文件名字就可以了。
<?xml version="1.0"?>
<sdf version="1.4">
<world name="default">
<include>
<uri>model://ground_plane</uri>
</include>
<include>
<uri>model://sun</uri>
</include>
<model name="my_mesh">
<pose>0 0 0 0 0 0</pose>
<static>true</static>
<link name="body">
<visual name="visual">
<geometry>
<mesh><uri>file://my_mesh.dae</uri></mesh>
</geometry>
</visual>
</link>
</model>
</world>
</sdf>
然后通过在文件目录下启动gazebo来进行gazebo my_mesh.world
测试mesh
你可以通过在sdf文件当中添加下面片段来展示这个mesh。
<visual name="visual">
<pose>0 0 0 1.5708 0 0</pose>
<geometry>
<mesh><uri>file://duck.dae</uri></mesh>
</geometry>
</visual>
当然有些人可能下不了duck.dae这个文件,我们可以从其他的模型当中选取他们的dae文件进行使用。下面我们可以使用pioneer2dx模型的mesh文件,通过下列程序:(必须根据前面的教程下好gazebo模型库里的那些模型)
<visual name='visual'>
<geometry>
<mesh>
<uri>model://pioneer2dx/meshes/chassis.dae</uri>
</mesh>
</geometry>
</visual>
这段程序替换原来chassis当中的visual元素,然后再插入模型,就能看到这样的模型了。
这个车架看起来明显太大了,我们需要对其进行一下调整。
在uri下面一行加入
<scale>0.9 0.5 0.5</scale>
就可以啦。然后再插入模型试试,应该能变成下面这样。但是这个好像又有点矮,我们可以在visual下面加入pose元素来更改它的位置。
<pose>0 0 0.05 0 0 0</pose>
有几点注意
这个只是改变了模型的视觉元素,碰撞元素并没有修改,意思就是你看山其实不是山,摸上去是你碰撞元素设定的形状。
你还可以在其他的模型文档里找一找试试看别的,还可以在模型上加入材料或者其他的东西。