stage_ros的world文件配置方法


官方文檔參閱:http://rtv.github.io/Stage/modules.html

 

stage_ros是一個基於stage的2D模擬器,用於ROS的仿真測試。雖然現在越來越多的人在使用gazebo,但是在很多輕量測試領域,stage_ros仍然有一席之地。

最常用的基於stage_ros的package是navigation_stage。它集成了對stage_ros的一些調用。但它只使用了dwa和trajactory planner,並且只有有限的幾張地圖,對我們的測試並不是很方便。所以我們需要制定自己的“my navigation_stage”。

 

這里簡單介紹一下stage_ros需要使用的world文件的配置方法。

define block model
(
  size [0.500 0.500 0.750]
  gui_nose 0
)

define topurg ranger
(
  sensor(
    range_max 30.0
    fov 270.25
    samples 1081
  )
  # generic model properties
  color "black"
  size [ 0.050 0.050 0.100 ]
)

define pr2 position
(
  size [0.650 0.650 0.250]
  origin [-0.050 0 0 0]
  gui_nose 1
  drive "omni"
  topurg(pose [ 0.275 0 0 0 ])
)

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
  ranger_return 1
)

# set the resolution of the underlying raytrace model in meters
resolution 0.01

interval_sim 100  # simulation timestep in milliseconds


window
( 
  size [ 745.000 448.000 ] 

  rotate [ 0 -1.560 ]
  scale 30.287 
)

# load an environment bitmap
floorplan
( 
  name "willow"
  bitmap "../maps/willow-full-0.025.pgm"
  size [58.300 45.625 1.000]
  pose [ -22.812 29.150 0 90.000 ] 
)

# throw in a robot
pr2( pose [ -26.068 12.140 0 87.363 ] name "pr2" color "blue")
block( pose [ -25.251 10.586 0 180.000 ] color "red")

上面是navigation_stage里的一個示例。具體每個元素的語法請之后參閱官方文檔。這里只針對文件的結構和自定義元素關系簡單說明下:

 

1)define block model:

define block model
(
  size [0.500 0.500 0.750]
  gui_nose 0
)

 

這是在定義一個塊的模型,具體是做什么用的呢?現在還不知道,要讀到下面才知道。這就像是定義了一個類,設置了成員變量的默認值,但還沒有生成實例。

 

2)define topurg ranger

 

define topurg ranger
(
  sensor(
    range_max 30.0
    fov 270.25
    samples 1081
  )
  # generic model properties
  color "black"
  size [ 0.050 0.050 0.100 ]
)

 

這是在定義一個模擬的聲納或雷達的模型,指定了雷達的最大范圍等一些參數。同樣,這只是“類”的定義,還沒有實例。

 

3) define pr2 position

 

define pr2 position
(
  size [0.650 0.650 0.250]
  origin [-0.050 0 0 0]
  gui_nose 1
  drive "omni"
  topurg(pose [ 0.275 0 0 0 ])
)

 

這是在定義機器人底盤,也可以說算是在定義一個機器人。我們可以在里面看到,它把2)中的topurg當作一個屬性包含在了里面。就類似一個類中包含了類另一個類作為成員變量。從結構上我們能看出來,它是想定義一個帶ranger的機器人抽象模型。

 

4)define floorplan model

 

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
  ranger_return 1
)

 

這是在為地圖環境定義一個容器模型。map的地圖數據是抽象的,stage_ros是不能直接使用的。所以要有一個容器把這些數據裝起來,構造和模擬成一個“真實世界”,變成具體數據,然后才方便去和stage中定義的如前面的block,pr2去計算是否碰撞等。

 

。如果你啟動了move_base_amcl_2.5cm.launch文件的話,可以在stage的窗口中看到它,是一個紅色的塊

5)world:

 

# set the resolution of the underlying raytrace model in meters
resolution 0.01

interval_sim 100  # simulation timestep in milliseconds

這是world本身屬性的定義控制分辨率,模擬頻率等。這里要注意一點,這個分辨率是stage本身使用的,不是map的分辨率。這個尤其重要,它主要是影響一些類似碰撞檢測等stage本身的機制的。這是個坑,至於為什么,下面說到具體的模擬實例時會解釋。

 

6)window

 

window
( 
  size [ 745.000 448.000 ] 

  rotate [ 0 -1.560 ]
  scale 30.287 
)

 

這是對顯示出來的stage_ros的窗口的定義。屬性基本都是在調大小,角度之類的,問題不大。唯一需要注意的是,這個size是包含了窗口狀態欄的總大小,不只是地圖有效區域,這個特別逗。

 

7)floorplan

 

floorplan
( 
  name "willow"
  bitmap "../maps/willow-full-0.025.pgm"
  size [58.300 45.625 1.000]
  pose [ -22.812 29.150 0 90.000 ] 
)

 

從這里開始往下就是開始生成我們自己定義的模型的實例的部分了。從這個生成定義我們可以看到,它加載了"../maps/willow-full-0.025.pgm"作為地圖數據,也就是靜態地圖。size是怎么算的呢?用你的圖片分辨率乘resolution即可。但要注意,這個resolution可不是5)中定義的那個,而是map server里定義的!這就是前面說到的坑了。整個配置文件里所有的size,pose等實際用的resolution,都是map server里的,不是這個文件本身定義的這個。包含下面的8)中也是這樣。

 

8)pr2 and block:

 

pr2( pose [ -26.068 12.140 0 87.363 ] name "pr2" color "blue")
block( pose [ -25.251 10.586 0 180.000 ] color "red")

 

這兩個就是定義我們的機器人和無用的塊實例的地方了。機器人的名字被賦成了“pr2”,所以如果你在stage的窗口中用鼠標去選中它,就會顯示出來這個名字了。顏色數據也在這里被賦值了,用於區分哪個是機器人,哪個是無用的塊。

 

PS:特別需要注意一點,地圖的格式最好用jpeg。似乎是stage的代碼有bug,用gif可能會完全無法正常顯示,用png和pgm可能會出現地圖缺失導致剩余部分被拉伸。目前測試只有jpeg是正常的。

 

以上就是一個world文件的基本結構了。想要更多的配置和定義信息,可以參閱官方文件的解釋。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM