move_base corrupt linked list

asked 2016-06-23 14:01:13 -0600

mjedmonds gravatar image

updated 2016-06-23 14:03:32 -0600

I have the navigation stack working, but the move_base node is consistently crashing. The behavior is very consistent; eventually it crashes with the same error every time. The amount of time it takes to crash does vary. I'm going to post this same question on the

Here's the exact error, each time corresponding to the following warning:

[ WARN] [1466704185.100935930]: InflationLayer::updateCosts(): seen_ array size is wrong

and the error:

*** Error in `/opt/ros/indigo/lib/move_base/move_base': corrupted double-linked list: 0x00000000029ad9b0 ***
[move_base-1] process has died [pid 8680, exit code -6, cmd /opt/ros/indigo/lib/move_base/move_base cmd_vel:=/mobility_base/cmd_vel odom:=/odometry/filtered map:=/rtabmap/proj_map __name:=move_base __log:=/home/mb/.ros/log/4d826ab2-396a-11e6-ad82-b8aeed747f2b/move_base-1.log].
log file: /home/mb/.ros/log/4d826ab2-396a-11e6-ad82-b8aeed747f2b/move_base-1*.log
all processes on machine have died, roslaunch will exit

Unfortunately, the log file isn't actually written, so I haven't been able to get any useful information from there. I've done some googling and the only thing I can turn up is line 192 of the source of costmap_2d's inflation_layer.cpp ( http://docs.ros.org/jade/api/costmap_... ). So it seems deleting the seen_ array of costmap_2d's inflation layer is causing a corruption of a linked list somewhere else. What's odd is the warning doesn't always cause the error. I'm thinking it might be cause by how rtabmap is updating proj_map, but I'm somewhat shooting in the dark. Any insight would be helpful.

Here's my basic robot setup. A kinectv1 mounted on the robot with rtabmap_ros for odometry and mapping. The move_base package uses the following:

base_local_planner_params.yaml

TrajectoryPlannerROS:
  acc_lim_x:  1.0
  acc_lim_y:  1.0
  acc_lim_theta: 2.0
  max_vel_x:  0.4
  min_vel_x:  0.05
  escape_vel: -0.05
  max_vel_theta: 0.5
  min_vel_theta: -0.5
  min_in_place_vel_theta: 0.01
  holonomic_robot: true
  y_vels: [-0.3, -0.05, 0.05, 0.3]

  xy_goal_tolerance:  0.03
  yaw_goal_tolerance: 0.05
  latch_xy_goal_tolerance: true

  # make sure that the minimum velocity multiplied by the sim_period is less than twice the tolerance on a goal. Otherwise, the robot will prefer to rotate in place just outside of range of its target position rather than moving towards the goal.
  sim_time: 1.5 # set between 1 and 2. The higher he value, the smoother the path (though more samples would be required).
  sim_granularity: 0.025
  angular_sim_granularity: 0.025
  vx_samples: 12
  vtheta_samples: 20

  meter_scoring: true

  pdist_scale: 0.7 # The higher will follow more the global path.
  gdist_scale: 0.8
  occdist_scale: 0.03
  publish_cost_grid_pc: false

# move_base controller_frequency
controller_frequency: 5.0 

# global planner 
NavfnROS:
  allow_unknown: true
  visualize_potential: false

costmap_common_params.yaml

footprint: [[0.42, -0.43], [0.42, 0.43], [-0.42, 0.43], [-0.42, -0.43]]
footprint_padding: 0.02

inflation_layer:
  inflation_radius: 0.02

transform_tolerance: 2

obstacle_layer:
  obstacle_range: 3.0
  raytrace_range: 3.5
  track_unknown_space: false

  observation_sources: point_cloud_sensor

  point_cloud_sensor: {
    sensor_frame: /camera_link,
    data_type: PointCloud2,
    topic: /rtabmap/cloud_map,
    expected_update_rate: 1.0,
    max_obstacle_height: 3.0,
    min_obstacle_height: 0.1,
    marking: true,
    clearing: true
  }

global_costmap_params.yaml

global_costmap:
  global_frame: /map
  robot_base_frame: base_footprint
  update_frequency: 0.5
  publish_frequency ...
(more)
edit retag flag offensive close merge delete