学习笔记25 --贴有图片或者二维码的gazebo模型创建

环境:ububtu16.04 ros-kinetic gazebo7.16

问题来源:
做仿真时候,涉及相机方面的仿真,需要创建的一个在特定位置贴有指定图片,如二维码/AR码,的gazebo模型.具有一般gazebo模型的随意insert的特性.

下面是以带有图片标签的叉车托盘例子型创建的过程:

1)参考案例
创建这个模型可以参考gazebo里面的beer模型基本架构,个人也是参考那个模型获得灵感创建自己的模型的.

2)模型文件的几大部分创建及解析
创建文件夹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)

文件夹scripts1:
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格式的图片

本案例使用的图片跟和beer里面使用的图片是一样的,可以使用ctrl+h打开 .gazebo/models/beer 来查看.这里的stl文件因为格式原因上传不了,有需要的自己创建或者私聊.

最后的弄成的效果图:
在这里插入图片描述
3)注意地方

(1)model.sdf model.config box_beer.material box_beer.png几个文件的名称以及的路径在相应的地方匹配上,基本上带贴图的模型创建完毕了.

(2)这个方法可以延长很多的例子的,如多贴图样式,可调整贴图样式的gazebo模型都是适用的.

(3)这里补充说明,为什么选择一个正方形的link作为贴图link.原因是,这种方式贴上的图片属于均布到link各个面上的,个人还没有找到调整方法;此外,创建这个贴图模型,我只需要的是图片显示,所以贴图的link只是写<visual name="visual">外观部分足够了.

(4)如果在gazebo插进来的模型 打开 gazebo窗口 左上角的 view-contacts 看见图中的绿色线条在闪动(不闪动表示模型处于静止状态)的话,表示该模型在缓慢移动,需要检查是否设置base_linkcontact相关参数设置正确,这里在上面的model.sdf有说明了,不重复了.

##########################
好记性不如烂笔头
–20200719

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值