[ros-users] Costmap2DROS timeouts and poor amcl performance

Eric Perko wisesage5001 at gmail.com
Sun Dec 19 22:35:58 UTC 2010


On Sun, Dec 19, 2010 at 10:19 AM, zdydek <zac at mit.edu> wrote:

>
> 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
>

Try setting your publish frequency to 0.0 and see if you see fewer errors.


>
> 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>
>

Is your AMCL launch actually completely empty or did some stuff just get
lost when getting pasted into the email?


>
> 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.
>

So, I see two things that could be useful for narrowing down the problem.
One, as mentioned above, try setting your publishing rates to 0.0 for both
costmaps (default is 0.0). I've definitely seen high publishing rates take
up CPU resources and cause my costmaps to miss timings. If that helps, you
can always reduce the publishing frequency until you don't have as many
costmap timeouts (or none at all).

Another thing to check on would be running your system with only one of the
hokuyo scanners. I'm interested to see if there is just a whole lot of data
or something else going on, since I think the majority of the people using
the nav_stack are not using two laser scanners.

- Eric


> 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.
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20101219/28b6a054/attachment-0003.html>


More information about the ros-users mailing list