目录
1. 准备工作
2. 配置步骤
2.1 blender逐个导入.obj文件并导出.dae文件
2.2 用.dae文件创建gazebo加载的world文件
2.3 gazebo导出仿真需要的.world文件
2.4 launch文件中启动.world文件
3. 其他问题
4. Reference
在现实场景中采集图像、雷达、imu数据,然后用重建算法重建出meshes文件,加载到仿真器中做仿真训练,实现数字孪生。由于自建场景不便公开,本文不展示操作效果图。
本文以新建一个example.world场景为例,所需的环境如下:
首先确认启动blender和gazebo的时候是否自动使用了GPU(用nvidia-smi查看),如果不用GPU,则加载场景会非常慢,因此建议使用GPU。若未自动使用GPU,则说明nvidia driver版本不合适,需要重装driver。
重建场景的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片数,这里不做介绍。)
首先创建一个world文件夹命名为example,文件夹下包含三个元素:meshes文件夹、model.sdf、model.config。
true
0 0 0 0 0 0
model://example/meshes/example.dae
100
50
model://example/meshes/example.dae
example
1.0
model.sdf
Optional: YOUR NAME
Optional: YOUR EMAIL
example.
cd .gazebo/models/
ln -s path_to_example(e.g., ~/example/)
打开gazebo,在左侧的Insert一栏中可以找到新建的场景example,点击该场景会将其加载进来。
加载到gazebo之后,在菜单栏点击File-Save World As,然后命名导出的文件后缀为.world,gazebo就会自动生成example.world文件,该文件是用来指定启动仿真时要加载的场景。
.world文件内容示例如下:
1
0 0 10 0 -0 0
0.8 0.8 0.8 1
0.2 0.2 0.2 1
1000
0.9
0.01
0.001
-0.5 0.1 -0.9
0 0 -9.8
6e-06 2.3e-05 -4.2e-05
0.001
1
1000
0.4 0.4 0.4 1
0.7 0.7 0.7 1
1
EARTH_WGS84
0
0
0
0
1
0 0 0 0 -0 0
model://example/meshes/example.dae
100
50
10
model://example/meshes/example.dae
0
0
0
0.513522 2.28029 0 0 -0 0
0
0
0
0
0.513522 2.28029 0 0 -0 0
1 1 1
0.513522 2.28029 0 0 -0 0
0 0 0 0 -0 0
0 0 0 0 -0 0
0 0 0 0 -0 0
0 0 10 0 -0 0
4.6003 -4.3514 1.82182 0 0.275643 2.35619
orbit
perspective
用launch文件的方式启动仿真加载场景,这里只展示launch文件中启动仿真场景的代码。以turtlebot3仿真为例(roslaunch turtlebot3_gazebo turtlebot3_world.launch),其中example.world是我们自己生成的仿真场景文件。
sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-msgs ros-melodic-gazebo-plugins ros-melodic-gazebo-ros-control
【ROS-Gazebo】SDF机器人描述格式解析