问题来源:涉及相机方面的仿真,需要创建的一个在特定位置贴有指定图片,如二维码这类的Gazebo模型,具有随意insert的特性。
一.参考案例
创建这个模型可以参考Gazebo里面beer模型的基本架构。
二.模型文件的几大部分创建和解析
创建文件夹forkboardbbb,包含整个模型的所有文件,其中:
a.model.config:
<?xml version="1.0"?>
<model>
<name>forkboardbbb</name>//定义gazebo模型插入时候目录显示的名称
<version>1.0</version>
<sdf version="1.5">model.sdf</sdf>
<author>
<name>ylh</name>
</author>
<description>
forkboardbbb
</description>
</model>
b.model.sdf:
<?xml version="1.0" ?>
<sdf version="1.5">
<model name="forkboardbbb">//定义的的是模型在gazebo插入后在model目录下显示的模型名称
<static>false</static>//false表示该模型在gazebo里面是可以移动的
<link name='baselink'>
<pose>0 0 0 0 0 0</pose>
<inertial>
<mass>104</mass>
<pose>0.5 0.6 0.4 0 0 0</pose>//定义该link的重心
<inertia>
<ixx>85.8</ixx>
<ixy>34.2</ixy>
<ixz>29.4</ixz>
<iyy>75.4</iyy>
<iyz>29.5</iyz>
<izz>89.7</izz>
</inertia>//定义该link的转动惯量
</inertial>
<collision name='collision'>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://forkboardbbb/meshes/forkboard112.STL</uri>//启用模型的stl文件,注意stl的大小样式写一定一定要和实际名称一致,否则拿不到的;还有这个文件是要放到 .gazebo/models 目录下面的,方便自己使用(个人习惯)
</mesh>
</geometry>
<surface>
<friction>
<ode>
<mu>200</mu>
<mu2>200</mu2>
</ode>
</friction>
<contact>//该标签作用是解决因为添加了一个link来贴图片带来模型抖动问题,不添加的话,模型会一直在慢慢移动甚至更严重
<ode>
<min_depth>0.001</min_depth>
</ode>
</contact>
</surface>
</collision>
<visual name='visual'>
<geometry>
<mesh>
<scale>1 1 1</scale>
<uri>model://forkboardbbb/meshes/forkboard112.STL</uri>
</mesh>
</geometry>
//这里定义的是该link的颜色样式
<material>
<script>
<name>Gazebo/White</name>
<uri>file://media/materials/scripts/gazebo.material</uri>
</script>
</material>
</visual>
</link>
<!--picture_link-->//这里是添加图片的link
<joint type="fixed" name="link1joint">//一定要定义该joint,否则图片的位置无法准确定义,这是sdf编写的规则决定的
<pose>0 0 0 0 0 0</pose>
<child>link1</child>
<parent>baselink</parent>
</joint>
<link name="link1">
<pose>0.5 0.044 -0.062 0 0 0</pose>//定义该link的位置,就是决定贴图位置
<visual name="visual">
<pose>0 0 0 0 0 0</pose>
<geometry>
<box>
<size>0.09 0.09 0.09</size>//link的大小决定这图片显示大小
</box>
</geometry>
<material>
<script>
<uri>model://forkboardbbb/materials/scripts1</uri>//图片的配置信息
<uri>model://forkboardbbb/materials/textures1</uri>//图片位置路径
<name>box_beer/Diffuse</name>//这个一定要跟scripts1里面的box_beer.material里面的第一行名称一致.
</script>
</material>
</visual>
</link>
</model>
</sdf>
c.创建一个meshes文件夹,里面存放上面model所使用的.STL文件
d.创建materials文件夹,内含有用于图片配置信息的脚本文件夹scripts1,以及存放图片材料的文件夹textures1,文件夹scrpts1:
box-beer.material:
material box_beer/Diffuse//这个名称会在模型的sdf文件用到
{
technique
{
pass
{
texture_unit
{
texture box_beer.png//和textures存放的图片名称要一致
filtering anistropic
max_anisotropy 16
}
}
}
}
文件夹textures1:
box_beer.png//这里表示的是一张png格式的图片
三.注意事项
1.以上几个文件的名称以及路径在相应的地方匹配上,基本带贴图的模型创建完毕。
2.这个方法可以延长很多例子,比如贴图样式,可调整贴图样式的gazebo模型都适用。
3.有详细内容不理解之处可以评论留言。
4.以上内容来源于“鸿”,本人是搬运加自行见解。
评论(7)
您还未登录,请登录后发表或查看评论