Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

control loop missed its desired rate, but with low CPU load

Hi, I've encoutered the following warning message continuously while my robot navigate itself toward the goal pose (by DWA local planner):

Control loop missed its desired rate of 10.0000Hz... the loop actually took 0.6461 seconds

Solutions suggested in earlier posts includes

  1. reduce the resolution of costmaps (0.1m)
  2. reduce the width and height of the local costmap (3x3m)
  3. reduce vx_samples and vtheta_samples (4 and 10 respectively)
  4. reduce controller_frequency (5Hz)

However, none of these adjustment helped to increase the rate of the control loop to even 5Hz. The rate is 2Hz on average. However,the CPU load for the move_base is low (10-15%), while rviz takes about 30-40% of the CPU. Because the CPU load for the whole computer is <50% during navigation, I wonder why the control loop takes so long. Your help is highly appreciated.

Below are my parameters

costmap_common_params.yaml

obstacle_range: 5.5
raytrace_range: 5.5
footprint: [[-0.15,-0.3], [0.6,-0.3], [0.7,0], [0.6,0.3], [-0.15,0.3]]
footprint_padding: 0.1
#robot_radius: ir_of_robot
inflation_radius: 0.60
resolution: 0.1

observation_sources: laser_scan_sensor 

laser_scan_sensor: {sensor_frame: rplidar, data_type: LaserScan, topic: scan, marking: true, clearing: true}

local_costmap_params.yaml

local_costmap:
  global_frame: odom 
  robot_base_frame: base_link
  rolling_window: true

  update_frequency: 2.0
  publish_frequency: 2.0
  static_map: false
  width: 3.0
  height: 3.0

global_costmap_params.yaml

global_costmap:
  global_frame: map
  robot_base_frame: base_link
  update_frequency: 1.0
  static_map: true

dwa_local_planner_params.yaml

controller_frequency: 5
recovery_behaviour_enabled: true

DWAPlannerROS:
  # robot configuration parameters
  acc_lim_x: 1.5
  acc_lim_th: 1.5
  max_trans_vel: 0.5
  min_trans_vel: 0.25
  max_vel_x: 0.5
  min_vel_x: 0.25
  max_rot_vel: 1
  min_rot_vel: 0.7

  # (care nothing about y) 
  max_vel_y: 0
  min_vel_y: 0
  acc_lim_y: 0

  # goal tolerance
  yaw_goal_tolerance: 0.2
  xy_goal_tolerance: 0.2

  # forward simulation
  sim_time: 2.0
  vx_samples: 4
  vy_samples: 0
  vtheta_samples: 10
  sim_granularity: 0.1
  angular_sim_granularity: 0.1
  penalize_negative_x: false

  # weights
  occdist_scale: 10