Ros Navigation - Global costmap not seen on rviz and not used for global planning

asked 2018-08-15 15:45:25 -0500

kllysin gravatar image

updated 2018-08-15 17:07:10 -0500

I am using the ros navigation stack to navigate my robot using a known map. I have set up all my config files as shown in the tutorials. But when i launch move_base, I see only the local costmap on rviz. When i give a goal, only the local costmap is used for planning(both local and global). the global plnner plans through the obstacles that are on the global costmap but do not appear on the local costmap. Below are my yaml files:

Base_local_planner_params.yaml

TrajectoryPlannerROS:
  max_vel_x: 0.6
  min_vel_x: 0.12
  max_vel_theta: 0.15
  min_in_place_vel_theta: 0.1

  acc_lim_theta: 1.0
  acc_lim_x: 2.5
  acc_lim_y: 2.5

  holonomic_robot: false

Costmap_common_params

obstacle_range: 5.0
raytrace_range: 3.0
footprint: [ [0.0, 0.5], [0.0, -0.5], [-1.0, -0.5], [-1.0, 0.5] ]
inflation_radius: 0.3
transform_tolerance: 0.2

observation_sources:  point_cloud_sensor
point_cloud_sensor: {sensor_frame: velodyne, data_type: PointCloud2, topic: velodyne_points, marking: true, clearing: `true}`

Global_costmap_params

global_costmap:
  global_frame: /map
  robot_base_frame: base_link
  update_frequency: 5.0
  static_map: true

Local_costmap_params

global_costmap:
  global_frame: /map
  robot_base_frame: base_link
  update_frequency: 5.0
  static_map: true

move_base

<launch>

   <master auto="start"/>
 <!-- Run the map server --> 
    <arg name="map" default="$(find my_robot_name_2dnav)/aug1_map1.yaml" /> 
    <node name="map_server" pkg="map_server" type="map_server" args="$(arg map)"/>

   <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find my_robot_name_2dnav)/costmap_params.yaml" command="load" ns="global_costmap" /> 
    <rosparam file="$(find my_robot_name_2dnav)/costmap_params.yaml" command="load" ns="local_costmap" />


     [<rosparam file="$(find my_robot_name_2dnav)/local_costmap_params_basic.yaml" command="load" />
        <rosparam file="$(find my_robot_name_2dnav)/global_costmap_params_basic.yaml" command="load" /> 
        <rospara

m file="$(find my_robot_name_2dnav)/base_local_planner_params_basic.yaml" command="load" />
 </node>

</launch>]

Link to images: Rviz Costmap 1 Rviz Costmap 2

When i launch move base, I get the following:

    process[map_server-1]: started with pid [17078]
process[move_base-2]: started with pid [17079]
[ INFO] [1534368364.047088034]: Using plugin "obstacle_layer"
[ INFO] [1534368364.053267464]:     Subscribed to Topics: point_cloud_sensor
[ INFO] [1534368364.134737032]: Using plugin "inflation_layer"
[ INFO] [1534368364.286482803]: Using plugin "obstacle_layer"
[ INFO] [1534368364.290238877]:     Subscribed to Topics: point_cloud_sensor
[ INFO] [1534368364.360609173]: Using plugin "inflation_layer"
[ INFO] [1534368364.466953814]: Created local_planner base_local_planner/TrajectoryPlannerROS
[ INFO] [1534368364.488073750]: Sim period is set to 0.10
[ INFO] [1534368364.864098849]: Recovery behavior will clear layer obstacles
[ INFO] [1534368364.873908575]: Recovery behavior will clear layer obstacles
[ INFO] [1534368364.999236758]: odom received!

EDIT

After adding the following to costmap_common_parmas as in link to ros answer post :

recovery_behaviors:
    name: 'costmap_reset_conservative'
    type: 'clear_costmap_recovery/ClearCostmapRecovery'
costmap_reset_conservative:
  reset_distance: 1.5
  layer_names: ["obstacle_layer"]

I still did not see any changes.

Next, I set the clearing parameter in the following in costmap_common_params from true to false:

point_cloud_sensor: {sensor_frame: velodyne, data_type: PointCloud2, topic: velodyne_points, marking: true, clearing: false}

With that, I was now able to see the global costmap, but my global planner still planned through the obstacles in the global costmap. Please see image in Rviz Costmap 3

edit retag flag offensive close merge delete