2017-05-26 77 views
0

我正在使用.png文件中的map_server來測試一些規劃算法,但是現在我想查看根據機器人半徑膨脹的障礙物。爲此,我嘗試在靜態地圖上使用「costmap_2d」。 這是我設法拼湊迄今爲止 -costmap_2d中的障礙物膨脹

<launch> 
<node name="transform" pkg="tf" type="static_transform_publisher" args="0 0 0 0 0 0 map base_frame 10" /> 
<node name="mapServer" pkg="map_server" type="map_server" args="$(find mapwork)/img/map.yaml" /> 
<node pkg="costmap_2d" type="costmap_2d_markers" name="voxel_visualizer"> 
<remap from="voxel_grid" to="costmap/voxel_grid"/> 
</node> 
<node name="costmap_node" pkg="costmap_2d" type="costmap_2d_node" ns="costmap"/> 
<rosparam file="$(find mapwork)/img/gcp.yaml" command="load" /> 
<node name="visualizer" pkg="rviz" type="rviz"/> 
</launch> 

而且.yaml文件(gcp.yaml):

inflation_radius: 1.0 
cost_scaling_factor: 0.2 
robot_radius: 0.5 

有與地圖沒有改變/無costmap_2d包,我錯過了什麼?

回答

0

有幾件事情錯了你的配置:

  1. costmap_2d預計幀mapbase_link,不base_frame之間的TF。因此,要麼將tf中的名稱更改爲base_link,要麼使用robot_base_frame參數更改costmap所期望的名稱。
  2. 必須將參數加載到costmap節點的名稱空間中,否則將不會使用它們。
  3. 必須將參數static_map設置爲true,否則costmap將不會考慮要加載的地圖。

下面應該工作:

啓動文件

<launch> 
    <node name="transform" pkg="tf" type="static_transform_publisher" args="0 0 0 0 0 0 map base_link 10" /> 
    <node name="mapServer" pkg="map_server" type="map_server" args="$(find mapwork)/img/map.yaml" /> 
    <node pkg="costmap_2d" type="costmap_2d_markers" name="voxel_visualizer"> 
    <remap from="voxel_grid" to="costmap/voxel_grid"/> 
    </node> 
    <node name="costmap_node" pkg="costmap_2d" type="costmap_2d_node"> 
    <rosparam file="$(find mapwork)/img/gcp.yaml" command="load" ns="costmap" /> 
    </node> 
    <node name="visualizer" pkg="rviz" type="rviz"/> 
</launch> 

所做的更改:重命名base_frame到base_link,負載參數costmap <node>內,從<node>移動ns="costmap"<rosparam>

Costmap配置(gcp.yaml)

static_map: true 
inflation_radius: 1.0 
cost_scaling_factor: 0.2 
robot_radius: 0.5 

所做的更改:加入static_map

注意,那這不會改變話題/圖發佈的地圖但會公佈於話題/ costmap_node/costmap/costmap膨脹的地圖。