world语法以及maze.world解读

参考: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"
)

你可能感兴趣的:(world语法以及maze.world解读)