[ros-users] Costmap2DROS timeouts and poor amcl performance

zdydek zac at mit.edu
Sun Dec 19 15:19:54 UTC 2010


Hi all,

Below is the configuration for move_base and amcl that I am using on my
robot:

Launch file:

<launch>
  <master auto="start"/>

  <!-- Run the map server -->
  <node name="map_server" pkg="map_server" type="map_server" args="$(find
myRobot2dnav)/resources/maps/obstacle_course_2.yaml"/> 

  <!-- Run the back hokuyo laser node -->
  <node pkg="hokuyo_node" type="hokuyo_node" name="hokuyo_back"
respawn="false" output="screen">

    <!-- Starts up faster, but timestamps will be inaccurate. -->
    

    <!-- Set the port to connect to here -->
    

    

    
  </node>

  <!-- Run the front hokuyo laser node -->
  <node pkg="hokuyo_node" type="hokuyo_node" name="hokuyo_front"
respawn="false" output="screen">

    <!-- Starts up faster, but timestamps will be inaccurate. -->
    

    <!-- Set the port to connect to here -->
    

    

    
  </node>

  <!-- Create a new laser scan for clearing obstacles -->
  <node pkg="laser_filters" type="scan_to_scan_filter_chain" output="screen"
name="scan_to_scan_max_range_filter">
    <rosparam command="load" file="$(find
assisted_teleop)/launch/max_range_filter.yaml" />
  </node>

  <!-- Run AMCL -->
  <include file="$(find myRobot2dnav)/resources/cfg/amcl_diff.launch" />

  <!-- Run logging utility rosbag -->
  <node pkg="rosbag" type="record" name="rosbagger" args="-j amcl_pose map
move_base/SBPLLatticePlanner/plan move_base/SBPLLatticePlanner/primitives
move_base/SBPLLatticePlanner/sbpl_lattice_planner_stats
move_base/current_goal move_base/local_costmap/robot_footprint odom
particlecloud scan tf" respawn="false" />

  <!-- Run RVIZ >
  <node name="rviz" pkg="rviz" type="rviz" respawn="false"
output="screen"/-->
  <include file="$(find
myRobot2dnav)/resources/launch/rviz_move_base.launch"/>

  <!-- Run MOVE BASE NAVIGATION -->
  <node pkg="move_base" type="move_base" respawn="true" name="move_base"
output="screen">
    
    <rosparam file="$(find
myRobot2dnav)/resources/cfg/costmap_common_params.yaml" command="load"
ns="global_costmap" />
    <rosparam file="$(find
myRobot2dnav)/resources/cfg/costmap_common_params.yaml" command="load"
ns="local_costmap" />
    <rosparam file="$(find
myRobot2dnav)/resources/cfg/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find
myRobot2dnav)/resources/cfg/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find
myRobot2dnav)/resources/cfg/base_local_planner_params.yaml" command="load"
/>
    
    
    
    
  </node>

</launch>

Common costmap params:

map_type: costmap
transform_tolerance: 0.3
obstacle_range: 2.5
max_obstacle_height: 2.0
raytrace_range: 3.0

footprint: [[0.235, 0.075], [0.165, 0.285], [-0.845, 0.285], [-0.915,
0.075], [-0.915, -0.075], [-0.845, -0.285], [0.165, -0.285], [0.235,
-0.075]]
footprint_padding: 0.05

#Cost function parameters
inflation_radius: 0.55

#The cost at which a cell is considered an obstacle when a map is read from
the map_server
lethal_cost_threshold: 10

#Configuration for the sensors that the costmap will use to update a map
observation_sources: scan scan_filtered
scan: {data_type: LaserScan, expected_update_rate: 0.4,
observation_persistence: 0.0, marking: true, clearing: false,
max_obstacle_height: 0.4, min_obstacle_height: 0.08}
scan_filtered: {data_type: LaserScan, expected_update_rate: 0.4,
observation_persistence: 0.0, marking: false, clearing: true,
max_obstacle_height: 0.4, min_obstacle_height: 0.08}

Global costmap params:

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

Local costmap params:

local_costmap:
  global_frame: odom
  robot_base_frame: base_link
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.05

base_local_planner params:

TrajectoryPlannerROS:
  #Set the acceleration limits of the robot
  acc_lim_th: 3.0
  acc_lim_x: 0.7
  acc_lim_y: 0.0

  #Set the velocity limits of the robot
  max_vel_x: 0.5
  min_vel_x: 0.2
  max_rotational_vel: 0.4
  min_in_place_rotational_vel: 0.3

  backup_vel: -0.1
  holonomic_robot: false

  #Set the tolerance on achieving a goal
  xy_goal_tolerance: 0.1
  yaw_goal_tolerance: 0.05

  #We'll configure how long and with what granularity we'll forward simulate
trajectories
  sim_time: 1.0
  sim_granularity: 0.025
  vx_samples: 5
  vtheta_samples: 8

  #Parameters for scoring trajectories
  goal_distance_bias: 1.0
  path_distance_bias: 7.0 
  occdist_scale: 0.0001

  heading_scoring: true  #false  #true
  heading_lookahead: 0.325

  dwa: true
  oscillation_reset_dist: 0.05
  prune_plan: true

amcl params:

<launch>
<node pkg="amcl" type="amcl" name="amcl" output="screen">
  <!-- Publish scans from best pose at a max of 10 Hz -->
  
  
  
  
  
  
  
  
  
  
  
  <!-- translation std dev, m -->
  
  
  
  
  
  
  
  
  
  
  <!--  -->
  
  
  
  
  
  
  
  
  
  
  
</node>
</launch>

Output from tf_monitor:

RESULTS: for all Frames

Frames:
Frame: /back_laser published by /myRobotDrive Average Delay: 0.000967104 Max
Delay: 0.0118755
Frame: /base_link published by /myRobotDrive Average Delay: 0.000975577 Max
Delay: 0.0104565
Frame: /front_laser published by /myRobotDrive Average Delay: 0.0012427 Max
Delay: 0.0128218
Frame: /odom published by /amcl Average Delay: -0.0140583 Max Delay:
0.282411

All Broadcasters:
Node: /amcl 20.1061 Hz, Average Delay: -0.0140583 Max Delay: 0.282411
Node: /myRobotDrive 44.8557 Hz, Average Delay: 0.00106694 Max Delay:
0.0128218


If anyone sees something out of place that may be causing my problems,
please let me know.

Thanks!

-Zac
-- 
View this message in context: http://ros-users.122217.n3.nabble.com/Costmap2DROS-timeouts-and-poor-amcl-performance-tp2112835p2115821.html
Sent from the ROS-Users mailing list archive at Nabble.com.



More information about the ros-users mailing list