2017-05-26 66 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膨胀的地图。