参考:https://blog.csdn.net/shuimiaofeng/article/details/78977224;
maze.world文件如下
include "turtlebot.inc"
define floorplan model
(
# sombre, sensible, artistic
color "gray30"
# most maps will need a bounding box
boundary 1
gui_nose 0
gui_grid 0
gui_outline 0
gripper_return 0
fiducial_return 0
laser_return 1
)
resolution 0.02
interval_sim 100 # simulation timestep in milliseconds
window
(
size [ 600.0 700.0 ]
center [ 0.0 0.0 ]
rotate [ 0.0 0.0 ]
scale 60
)
floorplan
(
name "maze"
bitmap "../maze.png"
size [ 10.0 10.0 2.0 ]
pose [ 5.0 5.0 0.0 0.0 ]
)
# throw in a robot
turtlebot
(
pose [ 2.0 2.0 0.0 0.0 ]
name "turtlebot"
color "black"
)
首先,对于
define floorplan model
(
# sombre, sensible, artistic
color "gray30" #定义地图中障碍物的颜色
# most maps will need a bounding box
boundary 1 #1表示有外框,0表示没有
gui_nose 0 #1表示有指示箭头,0表示没有
gui_grid 0 #1表示有网格线,0表示没有
gui_outline 0 #如果为1,则在模型周围绘制一个边界框,指示其大小
gripper_return 0 #如果为1,该模型可以被夹持器抓住,并且可以通过与具有非零障碍物回复的任何物体的碰撞来推动。
fiducial_return 0 #如果非零,则该模型由fiducialfinder传感器检测。 该值用作基准ID
laser_return 1
)
其次
resolution 0.02 #这是world本身属性的定义控制分辨率,模拟频率等。这里要注意一点,这个分辨率是stage本身使用的,不是map的分辨率。这个尤其重要,它主要是影响一些类似碰撞检测等stage本身的机制的。
interval_sim 100 # simulation timestep in milliseconds
第三步:这是对显示出来的stage_ros的窗口的定义。属性基本都是在调大小,角度之类的,这个size是包含了窗口状态栏的总大小。
window
(
size [ 600.0 700.0 ]
center [ 0.0 0.0 ]
rotate [ 0.0 0.0 ]
scale 60
)
第四:从这里开始往下就是开始生成我们自己定义的模型的实例的部分了。从这个生成定义我们可以看到,它加载了"../maze.png"作为地图数据,也就是静态地图。size是怎么算的呢?用你的图片分辨率乘resolution即可。但要注意,这个resolution可不是第二步中定义的那个,而是map server里定义的!整个配置文件里所有的size,pose等实际用的resolution,都是map server里的,不是这个文件本身定义的这个。包含下面的第五步中也是这样。
floorplan
(
name "maze"
bitmap "../maze.png"
size [ 10.0 10.0 2.0 ]
pose [ 5.0 5.0 0.0 0.0 ]
)
第五:
# throw in a robot
turtlebot
(
pose [ 2.0 2.0 0.0 0.0 ]
name "turtlebot"
color "black"
)