Summit Project: Local Costmap Parameterization

Hi all,

I am working on the summit XL navigation project. I have the whole system configured up until the local costmap. Looking at the /move_base/local_costmap/costmap topic, the local costmap is published but has all 0’s and is never updated after initialization. When passing a goal to the move_base node, the service outputs an error “DWA local planner could not produce path”. It would appear its “obstacle_layer” is not subscribing to the laser topic but I think it is defined properly. Is there a parameter I am missing / have miss defined?

See the output and configuration parameters below:

Move Base Params
controller_frequency: 5.0
recovery_behaviour_enabled: true # See more info below

NavfnROS:
allow_unknown: true # Specifies whether or not to allow navfn to create plans that traverse unknown space.
default_tolerance: 0.1 # A tolerance on the goal point for the planner.
#visualize_potential: false
#planner_window_x: 0.0
#planner_window_y: 0.0

TrajectoryPlannerROS:

Robot Configuration Parameters

acc_lim_x: 2.5
acc_lim_theta: 3.2
max_vel_x: 1.0
min_vel_x: 0.0
max_vel_theta: 1.0
min_vel_theta: -1.0
min_in_place_vel_theta: 0.2
holonomic_robot: false
escape_vel: -0.1

Goal Tolerance Parameters

yaw_goal_tolerance: 0.1
xy_goal_tolerance: 0.2
latch_xy_goal_tolerance: false

Forward Simulation Parameters

sim_time: 2.0
sim_granularity: 0.02
angular_sim_granularity: 0.02
vx_samples: 6
vtheta_samples: 20
controller_frequency: 20.0

Trajectory scoring parameters

meter_scoring: true # Whether the gdist_scale and pdist_scale parameters should assume that goal_distance and path_distance are expressed in units of meters or cells. Cells are assumed by default (false).
occdist_scale: 0.1 #The weighting for how much the controller should attempt to avoid obstacles. default 0.01
pdist_scale: 0.75 # The weighting for how much the controller should stay close to the path it was given . default 0.6
gdist_scale: 1.0 # The weighting for how much the controller should attempt to reach its local goal, also controls speed default 0.8
heading_lookahead: 0.325 #How far to look ahead in meters when scoring different in-place-rotation trajectories
heading_scoring: false #Whether to score based on the robot’s heading to the path or its distance from the path. default false
heading_scoring_timestep: 0.8 #How far to look ahead in time in seconds along the simulated trajectory when using heading scoring (double, default: 0.8)
dwa: true #Whether to use the Dynamic Window Approach (DWA)_ or whether to use Trajectory Rollout
simple_attractor: false
publish_cost_grid_pc: true

Oscillation Prevention Parameters

oscillation_reset_dist: 0.25 #How far the robot must travel in meters before oscillation flags are reset (double, default: 0.05)
escape_reset_dist: 0.1
escape_reset_theta: 0.1

Local Costmap Params
global_frame: summit_xl_a_odom #CHANGED from odom, Tried: summit_xl_a_base_footprint, summit_xl_a_base_link. These are lower down tf Tree and changed nothing

rolling_window: true #must be set to true

plugins:

  • {name: obstacles_laser, type: “costmap_2d::ObstacleLayer”}
  • {name: inflation, type: “costmap_2d::InflationLayer”}

Global Planner Params
NavfnROS:
visualize_potential: false
allow_unknown: false
planner_window_x: 0.0
planner_window_y: 0.0
default_tolerance: 0.0

Global Costmap Params
global_frame: map
rolling_window: false #just adjust windows in Rviz. If static true, this must be false
track_unknown_space: true

plugins:

  • {name: static, type: “costmap_2d::StaticLayer”} #Add costmap Configuration Layer, use predetermined plugin
  • {name: obstacles_laser, type: “costmap_2d::VoxelLayer”} #^^Used to initialize cost map based on static map

- {name: obstacles, type: “costmap_2d::VoxelLayer”} #POTENTIAL SUBSTITUTE FOR ABOVE LINE

  • {name: inflation, type: “costmap_2d::InflationLayer”} #inflate obstacles

DWA Local Planner Params
DWAPlannerROS:

Robot configuration parameters

acc_lim_x: 2.5
acc_lim_y: 0
acc_lim_th: 3.2
max_vel_x: 0.5
min_vel_x: 0.0
max_vel_y: 0
min_vel_y: 0
max_trans_vel: 0.5
min_trans_vel: 0.1
max_rot_vel: 1.0
min_rot_vel: 0.2

Goal Tolerance Parameters

yaw_goal_tolerance: 0.1
xy_goal_tolerance: 0.2
latch_xy_goal_tolerance: false

Debugging

publish_traj_pc : true
publish_cost_grid_pc: true
global_frame_id: summit_xl_a_odom

Costmap Common Params
footprint: [[-0.5, -0.33], [-0.5, 0.33], [0.5, 0.33], [0.5, -0.33]]
footprint_padding: 0.01
robot_base_frame: summit_xl_a_base_link #CHANGED, was base_link but matches tf_view
update_frequency: 4.0
publish_frequency: 3.0
transform_tolerance: 0.5
resolution: 0.05
obstacle_range: 5.5
raytrace_range: 6.0

#layer definitions
static:
map_topic: /map
subscribe_to_updates: true

obstacles_laser: #Changed Topic -->
observation_sources: laser #CHANGED: Was "scan"1, "/hokuyo_base/scan"2
laser: {data_type: LaserScan, clearing: true, marking: true, topic: hokuyo_base/scan, inf_is_valid: true}

inflation:
inflation_radius: 1.0

EDIT: The local costmap is functioning properly and a path is being generated. However the robot does not move (execute the path).

RESOLVED: It was just an error Remapping the /cmd_vel topic.

HOWEVER: If anyone has any advice on how to make the robot move faster in pathing (ideal parameter configuration) that would be awesome!

Hello @jordan.a.smith,

I’m glad you were able to solve the issue by yourself. As for the velocities, you can tune the maximum velocities and accelerations in the local planner configuration file (robot configuration parameters section).

Best,

Hi, I have the exact same problem here and I too thought it was in the obstacle layer, which I changed, the same as Jordan.

But then I seen this and seen it was a remapping problem? I removed the remapping line as I didn’t think it was required but it is still performing the same? I can’t seem to find the difference between this and the path planning module where it worked fine?

Any help would be much appreciated.

Thanks in advance

Hello @laura.firth,

I think that, in your case, the error is just a typo. In the common costmap parameters file you define the obstacle layer as obstacle_layer. But then, in the global and local costmap parameter files you load it as obstacles_layer (note the extra “s”). So, in the end, this layer is not being loaded.

Best,

Hello there, I get some similar problems as Jordan und Laura mentioned here.

I fixed the obstacles_layer problem. The extra ‘s’ was resulting in some errors. The next thing was the following warning:

[ INFO] [1601327155.471970017, 719.347000000]: Using plugin “inflation_layer”
[ WARN] [1601327156.055759736, 719.613000000]: Costmap2DROS transform timeout. Current time: 719.6130, global_pose stamp: 718.2260, tolerance: 0.3000

Strange thing: when commenting the remap line in the move_base launch file this warning was gone but no cmd_vel commands were sent to the base. After reloading the whole simulation and leaving the remap line it was working properly (what is this line doing btw?).

The next and final weird behavior is that my summit can move into rooms but he is not able to move out of it when sending new goals. I was trying some other parameters for example occdist_scale, inflation_radius and overall oscillation prevention parameters

Can you access my workspace or do i need to copy all my params into this thread?

Thank you so much!
Yannick