Do not blindly trust anything I say, try to make your own judgement.
目录
2.1 blender逐个导入.obj文件并导出.dae文件
1. 准备工作
在现实场景中采集图像、雷达、imu数据,然后用重建算法重建出meshes文件,加载到仿真器中做仿真训练,实现数字孪生。由于自建场景不便公开,本文不展示操作效果图。
本文以新建一个example.world场景为例,所需的环境如下:
- ubuntu
- ROS
- gazebo仿真器
- 重建后的.obj文件(重建算法这里不做介绍)
- blender软件:sudo apt-get install blender
首先确认启动blender和gazebo的时候是否自动使用了GPU(用nvidia-smi查看),如果不用GPU,则加载场景会非常慢,因此建议使用GPU。若未自动使用GPU,则说明nvidia driver版本不合适,需要重装driver。
2. 配置步骤
2.1 blender逐个导入.obj文件并导出为.dae文件
重建场景的mesh文件格式有很多,如.obj,.stl,.dae等,其中gazebo需要加载的场景文件格式是.dae,而我重建的mesh文件格式是.obj,因此需要先用blender将.obj格式转为.dae文件,其他格式的mesh也都可以用blender转成.dae格式。
首先有一些重建后的多个文件夹如下图所示,相当于对一个自建场景做了分块,每个文件夹里包含一个.obj文件及对应的纹理(贴图)。

每个文件夹里有如下文件,其中Tile_+000_+000.obj就是主要的obj文件,.mtl文件是纹理文件,对应的贴图是.jpg文件。

在blender中的点击File-Import-Wavefront(.obj)选择加载每个文件夹里的.obj文件,它会把同级路径下的bbox.obj,.mtl文件,jpg文件都自动加载进来。并且新加载的obj的位置会自动与已加载的obj对齐。导入后的mesh不会直接显示纹理色彩,需要点击菜单栏中的texture paint才会显示出纹理。
全部obj文件加载完后,点击File-Export-Collada(.dae)导出.dae文件,就会把obj文件全部合并成一个.dae文件,并且把所有.jpeg文件跟.dae文件一起保存下来。
(注意,gazebo加载.dae文件大小极限一般在1.5GB,超过1.5GB之后加载场景会非常卡,难以做仿真,一般小于1GB的自建场景文件比较合适。如果场景文件过大,则需要在blender中使用场景压缩技术,降低mesh片数,这里不做介绍。)
2.2 用.dae文件创建可以加载到gazebo的world
首先创建一个world文件夹命名为example,文件夹下包含三个元素:meshes文件夹、model.sdf、model.config。
- meshes文件夹里保存的就是blender里导出的.dae文件及自带的所有纹理文件.material,需要将上一步导出的.dae文件和.jpeg文件复制到meshes路径下,如下图所示:

- model.sdf是world文件的表述文件,定义了基本属性如碰撞、纹理等。其中sdf version="1.5"可以随意指定,只是给自己看的;static设成true可以把静态场景文件固定;model name和link name改成想要加载到gazebo中的场景名称;两个<mesh> </mesh>中间的<uri>要改成.dae文件的路径;pose表示的是文件的初始位姿(x,y,z,yaw,pitch,yaw);friction摩擦力系数也很重要。
<?xml vers
9393




被折叠的 条评论
为什么被折叠?



