在进行TurtleBot3仿真时,我们有时会希望使用自己创建的地图,并在仿真环境中添加对应的模型。本教程以Blender建模为例,介绍如何导出.dae文件,在Gazebo中转换格式并生成可用的.world文件。


目录

使用Blender建模

导出模型文件

在Gazebo中导入并转换为模型

修改模型文件以正确显示纹理

清除默认地面

保存为.world文件

最终实现效果如下:

1. 使用Blender建模

在Blender中创建模型后,我们需要为其添加地图纹理。具体步骤如下:

  • 材质属性中选择图像纹理,导入地图图像。

  • 点击渲染进行预览,确保纹理正确显示。

2. 导出模型文件

  • 在导出时选择Collada (.dae) 格式,并注意保存路径。

  • 导出时Blender会自动将纹理图片.dae文件关联保存。请勿随意删除这些文件,否则后续在Gazebo中可能无法正确显示纹理。

3. 在Gazebo中导入并转换为模型

  • 打开Gazebo,点击菜单栏的 Edit → Model Editor
  • 点击 Add,选择你之前导出的.dae文件。

  • 导入后,点击 Model → 勾选 Static,防止模型在仿真中下坠。

  • 选择合适的路径保存模型。

4. 修改模型文件以正确显示纹理

  • 打开保存的model.sdf文件,删除其中<material>...</material>部分,这样才能正常显示图片纹理。

  • 重新打开Gazebo,插入模型,即可看到带有地图纹理的模型。

5. 清除默认地面

  • 删除场景中的ground_plane,避免模型与地面发生重叠或穿模问题。

6. 保存为.world文件

  • 完成所有设置后,点击 File → Save World As,将当前场景保存为.world文件。

📁 整个文件结构如下:

├── my_sim
│   ├── launch
│   │   ├── multi_robot.launch.py             #多机启动总文件
│   │   ├── multi_spawn_turtlebot3.launch.py  #多机生成TurtleBot3机器人文件
│   │   ├── robot_state_publisher.launch.py   #多机发布机器人URDF描述文件
│   │   ├── rviz2.launch.py                   #rviz2启动文件
│   │   ├── single_robot.launch.py            #单机启动总文件
│   │   └── spawn_turtlebot3.launch.py        #单机生成TurtleBot3机器人文件
│   ├── models
│   │   ├── ground                            #地图模型
│   │   │   ├── ground.dae
│   │   │   ├── ground.jpg
│   │   │   ├── model.config
│   │   │   └── model.sdf
│   │   ├── P                                 #P路标模型
│   │   │   ├── model.config
│   │   │   ├── model.sdf
│   │   │   ├── P.dae
│   │   │   └── P.png
│   │   ├── Right                             #Right路标模型
│   │   │   ├── model.config
│   │   │   ├── model.sdf
│   │   │   ├── Right.dae
│   │   │   └── Right.png
│   │   ├── Sidewalk                          #Sidewalk路标模型
│   │   │   ├── model.config
│   │   │   ├── model.sdf
│   │   │   ├── Sidewalk.png
│   │   │   └── Sidewlk.dae
│   │   ├── Slow                              #Slow路标模型
│   │   │   ├── model.config
│   │   │   ├── model.sdf
│   │   │   ├── Slow.dae
│   │   │   └── Slow.png
│   │   ├── Stop                              #Stop路标模型
│   │   │   ├── model.config
│   │   │   ├── model.sdf
│   │   │   ├── Stop.dae
│   │   │   └── Stop.png
│   │   ├── Straight                          #Straight路标模型
│   │   │   ├── model.config
│   │   │   ├── model.sdf
│   │   │   ├── Straight.dae
│   │   │   └── Straight.png
│   │   └── turtlebot3_burger                 #turtlebot3_burger小车模型
│   │       ├── model-1_4.sdf
│   │       ├── model.config
│   │       └── model.sdf
│   ├── my_sim
│   │   └── __init__.py
│   ├── package.xml
│   ├── resource
│   │   └── my_sim
│   ├── rviz
│   │   └── multi_tb3.rviz
│   ├── setup.cfg
│   ├── setup.py
│   ├── test
│   │   ├── test_copyright.py
│   │   ├── test_flake8.py
│   │   └── test_pep257.py
│   ├── urdf                                  #turtlebot3_burger小车URDF文件
│   │   ├── turtlebot3_burger.gv
│   │   ├── turtlebot3_burger.pdf
│   │   └── turtlebot3_burger.urdf
│   └── worlds
│       ├── CarMap.world
│       ├── empty_world.world
│       └── myworld.world

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐