---
title: ROSCon 2025 In-advance Lightning Talks: mesh2gazebo: Building a simulator environment using mesh data of 3D Scan Application
tags: 
author: [dandelion](https://image.docswell.com/user/dandelion1124)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/G7WZ6NKQ72.jpg?width=480
description: I proposed tool to build simulator environment using mesh data of 3D Scan Application.  https://community.gazebosim.org/t/community-meeting-mesh2gazebo/3499  The in-store image was collected at EZOHUB TOKYO with the cooperation of SATUDORA HOLDINGS CO.,LTD.
published: October 30, 25
canonical: https://image.docswell.com/s/dandelion1124/5VMNQX-2025-10-30-131639
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/G7WZ6NKQ72.jpg)

ROSCon 2025 In-advance Lightning Talks
mesh2gazebo: Building a simulator environment using mesh data of
3D scan application
CyberAgent AI Lab
Yasuhiro Yoshimura


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4JZ1Y3Z3E3.jpg)

About me
Yasuhiro Yoshimura
CyberAgent AI Lab
Activity Understanding Team
Research Engineer
I research robotics and the sensing to understand human activity.
And, I published book for developer of OpenCV.
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YE6LDXZZ7V.jpg)

Motivation
●
Simulator environment is important for developing algorithms for
autonomous mobile robots.
●
And, robotics engineers hope to build a simulator environment by simply
steps.
Real world
Gazebo World
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GE513XW9J4.jpg)

mesh2gazebo
mesh2gazebo solves these problems!😆
●
Robotics engineers can build a simulator environment by simply steps.
●
The quality of generated world is very good.
●
mesh2gazebo supports Gazebo Ignition.
Real World
3D Mesh data
Gazebo World
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/9721ZXQ5ER.jpg)

Pipeline of mesh2gazebo
I proposed mesh2gazebo to build a simulator environment using mesh data of
3D scan application.
3D Scan
Application
mesh2gazebo
Mesh data
(obj data, texture)
Gazebo
Gazebo
World
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/DJYZR8W6EM.jpg)

Pipeline of mesh2gazebo
Please see the Appendix for details.
mesh2gazebo
Conversion
(OBJ ⇒ DAE)
Mesh data
(OBJ, texture)
Post
processing
Making
World
Gazebo
World
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/V7N3DQP178.jpg)

Real retail store
https://www.youtube.com/watch?v=4dIjLJ6BXzM
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/YJ99GD3YJ3.jpg)

Generated world with navigation
https://www.youtube.com/watch?v=x92R9y_1isM
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GJ89V3MKED.jpg)

Conclusion
mesh2gazebo helps to developing algorithms for autonomous mobile robots.😆
●
Robotics engineers can build a simulator environment by simply steps.
●
The quality of generated world is very good.
●
mesh2gazebo supports Gazebo Ignition.
Real World
3D Mesh data
Gazebo World
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/LJLW5V3P7R.jpg)

Acknowledgment
The in-store image was collected at EZOHUB TOKYO with the cooperation of
SATUDORA HOLDINGS CO.,LTD.
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/47M93GD2JW.jpg)

11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/P7RGQZ45J9.jpg)

Appendix：Pipeline of mesh2gazebo
Please see the Appendix for details.
mesh2gazebo
Conversion
(OBJ ⇒ DAE)
Mesh data
(OBJ, texture)
Post
processing
Making
World
Gazebo
World
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/PJXX592XJX.jpg)

Appendix：Technical brieﬁng
●
3D Scanning
○
○
I used Scaniverse for the 3D Scanning.
■ I scan the ﬂoor surface for post processing.
■ I export OBJ format via Scaniverse.
I convert from OBJ format to DAE format by MeshLab for Gazebo.
Exported mesh data
Texture data
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/3JKW6PM9JD.jpg)

Appendix：Technical brieﬁng
●
Post Processing(1/2)
○
○
If there is the difference in the coordinate axes between Gazebo and
mesh, I need to rotate.
I used MeshLab to rotate mesh data.
Y
Z
X
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LE316XY975.jpg)

Appendix：Technical brieﬁng
●
Post Processing(2/2)
○
○
If the ﬂoor surface is NOT ﬂat in generated mesh data, it is difficult to
run for mobile robot.
So, I used MeshLab to make ﬂoor surface ﬂat.
before
after
Z
Z
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/8EDXV258JG.jpg)

Appendix：Technical brieﬁng
●
Making of Gazebo World（1/2）
○
I speciﬁed the ﬁle path of mesh data in &lt;collision&gt; tag in SDF ﬁle.
&lt;model name=&quot;mesh2gazebo&quot;&gt;
&lt;static&gt;true&lt;/static&gt;
&lt;link name=&quot;link&quot;&gt;
&lt;collision name=&quot;collision&quot;&gt;
&lt;geometry&gt;
&lt;mesh&gt;
&lt;scale&gt;1 1 1&lt;/scale&gt;
&lt;uri&gt;file:///home/jazzy/Scaniverse_2024_11_18_162729.dae&lt;/uri&gt;
&lt;/mesh&gt;
&lt;/geometry&gt;
&lt;/collision&gt;
Filepath of
...
mesh data
&lt;/link&gt;
&lt;/model&gt;
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/V7PPV1GW78.jpg)

Appendix：Technical brieﬁng
●
Making of Gazebo World（2/2）
○
I speciﬁed the ﬁle path of mesh data in &lt;visual&gt; tag in SDF ﬁle.
&lt;model name=&quot;mesh2gazebo&quot;&gt;
&lt;static&gt;true&lt;/static&gt;
&lt;link name=&quot;link&quot;&gt;
...
&lt;visual name=&quot;visual&quot;&gt;
&lt;geometry&gt;
&lt;mesh&gt;
&lt;scale&gt;1 1 1&lt;/scale&gt;
&lt;uri&gt;file:///home/jazzy/Scaniverse_2024_11_18_162729.dae&lt;/uri&gt;
&lt;/mesh&gt;
&lt;/geometry&gt;
Filepath of
&lt;/visual&gt;
mesh data
&lt;/link&gt;
&lt;/model&gt;
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/2JV2ZY69JQ.jpg)

Appendix：generated Gazebo world
https://www.youtube.com/watch?v=z63dIfPx9iE
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/5EGR49N4JL.jpg)

Appendix：Visualization of mesh data in RViz2
scan
RGB camera
Mobile robot
costmap
I visualized scan, costmap and mesh data.
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4JQVGWQR7P.jpg)

Appendix：Tips for Gazebo
●
Decrease of CPU usage
○
○
I disabled cast shadows to decrease CPU usage.
So, I set cast_shadows to 0.
&lt;light type=&quot;directional&quot; name=&quot;sun&quot;&gt;
&lt;cast_shadows&gt;0&lt;/cast_shadows&gt;
&lt;pose&gt;0 0 10 0 0 0&lt;/pose&gt;
&lt;diffuse&gt;0.8 0.8 0.8 1&lt;/diffuse&gt;
&lt;specular&gt;0.2 0.2 0.2 1&lt;/specular&gt;
&lt;attenuation&gt;
&lt;range&gt;1000&lt;/range&gt;
&lt;constant&gt;0.9&lt;/constant&gt;
&lt;linear&gt;0.01&lt;/linear&gt;
&lt;quadratic&gt;0.001&lt;/quadratic&gt;
&lt;/attenuation&gt;
&lt;direction&gt;-0.5 0.1 -0.9&lt;/direction&gt;
&lt;/light&gt;
20


