把obj,mtl格式导入Blender,修改,然后导出为COLLADA(.dae),写urdf,最后导入Gazebo

参考:
1. CSAIL的一个教程
2. http://playerstage.sourceforge.net/doc/Gazebo-manual-svn-html/tutorial_mesh.html
3. http://gazebosim.org/tutorials?tut=import_mesh

感觉Gazebo在这方面不如VREP方便,不支持各种格式的mesh文件的导入,修改,YCB数据集里面又没提供dae或者stl格式来放到urdf里,上回给VREP做好的模型导出为dae居然在urdf里又报错告诉不能读取,Google了一圈好像大都建议用Blender导进来处理一下再导出,试了一下果然可以。

一、下载安装Blender

不要用Ubuntu软件里安的那个,发现那个根本没有导出为dae的选项。直接从Blender官网下载,解压缩,右键运行blender就好了。

二、导入obj格式文件

存放obj格式文件的地方一般还会有同名的mtl格式文件,obj存放的是几何定义,mtl存放的是材质,直接导入obj,关联的mtl也会导入了,导入后按”Alt + z”来开启texture shading就可以看到有材质的模型了。
这里写图片描述

三、修改模型

如果不做任何修改直接导出dae,然后放到urdf里颜色会很暗,这里我把amount of light to emit调整到0.5。

“右键点击香蕉选中 -> 右上角点material -> 下面shading标签 -> 调整emit”
Shadeless好像没必要,后来我就没选这个了。

这里写图片描述

四、导出为dae并放到urdf里

“File -> Export -> Collada(.dae)”
可以看到导出了一个dae文件和一个png文件,下面是011_banana.urdf文件写法:

<robot name="011_banana">
  <link name="011_banana_link">
    <inertial>
      <origin xyz="0 0 0" />
      <mass value="0.411" />
      <inertia  ixx="1.0" ixy="0.0"  ixz="0.0"  iyy="1.0"  iyz="0.0"  izz="1.0" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="package://ycb_benchmarks/meshes/011_banana.dae" />
      </geometry>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="package://ycb_benchmarks/meshes/011_banana.dae" />
      </geometry>
    </collision>
  </link>
  <gazebo reference="011_banana">
    <material>Gazebo/Red</material>
  </gazebo>
</robot>

五、在Gazebo中进行仿真
写一个launch文件,gazebo.launch

<?xml version="1.0"?>
<launch>
    <!-- these are the arguments you can pass this launch file, for example paused:=true -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

  <!-- We resume the logic in empty_world.launch -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>

    <!-- send robot urdf to param server -->
    <param name="robot_description" textfile="$(find ycb_benchmarks)/urdf/011_banana.urdf" />

    <!-- push robot_description to factory and spawn robot in gazebo -->
    <node name="spawn_gazebo_model" pkg="gazebo_ros" type="spawn_model"
        args="-urdf -param robot_description -model robot -z 0.1"
        respawn="false" output="screen" />

</launch>

终端进入我的workspace, souce devel/setup.sh,然后运行

roslaunch ycb_benchmarks gazebo.launch

这里写图片描述

问题:

现在urdf里面的mass和inertia都是随便写的,Gazebo仿真的时候物体表现果然很诡异,这个显然不能挨个调,Google了下有些用meshlab来计算inertia的攻略,这个留到下篇博客写。

  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值