0
$\begingroup$

Rosanswers logo

Hi,

I am using turtlebot2 (kobuki+kinect) to make the map. gmapping works ok. but when I give the goal in rviz, move_base node omit the error below. It seems base_local_planner can not transform /odom to /map. but I check the tf with command tf_echo, tf_monitor,tf_viewframe. no clue found.

Thanks any help.

I find two similar questions, but no answer.

extrapolation-error-using-hector_mapping-move_base extrapolation-error-of-local-cost-map-in-navigation

my tf tree:

C:\fakepath\Screenshot from 2013-09-26 23:49:56.png

[ WARN] [1380208610.699597142]: Could not transform the global plan to the frame of the controller
[ERROR] [1380208610.899298578]: Extrapolation Error: Unable to lookup transform, cache is empty, when looking up transform from frame [/odom] to frame [/map]

[ERROR] [1380208808.222581361]: Global Frame: /odom Plan Frame size 13: /map

rosrun tf tf_monitor

RESULTS: for all Frames

Frames:
Frame: /base_footprint published by /mobile_base_nodelet_manager Average Delay: -0.0229974 Max Delay: 0.354185
Frame: /camera_depth_frame published by /camera_base_link_2_camera_depth_frame Average Delay: -0.12366 Max Delay: 0.224775
Frame: /camera_depth_optical_frame published by /camera_base_link_2_camera_depth_optical_frame Average Delay: -0.124423 Max Delay: 0.227307
Frame: /camera_link published by /base_footprint_2_camera_link Average Delay: -0.0773685 Max Delay: 0.177639
Frame: /camera_rgb_frame published by /camera_base_link_2_camera_rgb_frame Average Delay: -0.123725 Max Delay: 0.226237
Frame: /camera_rgb_optical_frame published by /camera_base_link_2_crof Average Delay: -0.124212 Max Delay: 0.192336
Frame: /gyro_link published by /base_footprint_to_gyro_link Average Delay: -0.0236702 Max Delay: 0.260833
Frame: /odom published by /slam_gmapping Average Delay: 0.000628292 Max Delay: 0.00346015

All Broadcasters:
Node: /base_footprint_2_camera_link 19.9931 Hz, Average Delay: -0.0773685 Max Delay: 0.177639
Node: /base_footprint_to_gyro_link 98.9593 Hz, Average Delay: -0.0236702 Max Delay: 0.260833
Node: /camera_base_link 10.0197 Hz, Average Delay: -0.125868 Max Delay: 0.112013
Node: /camera_base_link1 10.0197 Hz, Average Delay: -0.121158 Max Delay: 0.226237
Node: /camera_base_link2 10.0171 Hz, Average Delay: -0.126665 Max Delay: 0.0916436
Node: /camera_base_link3 10.0372 Hz, Average Delay: -0.126777 Max Delay: 0.0992249
Node: /camera_base_link_2_camera_depth_frame 10.0304 Hz, Average Delay: -0.120865 Max Delay: 0.224775
Node: /camera_base_link_2_camera_depth_optical_frame 10.0197 Hz, Average Delay: -0.122189 Max Delay: 0.227307
Node: /camera_base_link_2_camera_rgb_frame 10.0196 Hz, Average Delay: -0.126318 Max Delay: 0.092681
Node: /camera_base_link_2_crof 10.0176 Hz, Average Delay: -0.121966 Max Delay: 0.192336
Node: /mobile_base_nodelet_manager 50.2985 Hz, Average Delay: -0.0229974 Max Delay: 0.354185
Node: /slam_gmapping 100.098 Hz, Average Delay: 0.000628292 Max Delay: 0.00346015

rosrun tf tf_echo /map /odom

redheli@redheli-MacBookPro:~/bagfiles$ rosrun tf tf_echo /map /odom
At time 1380209595.389
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]
At time 1380209596.389
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]
At time 1380209597.389
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]
At time 1380209598.389
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]
At time 1380209599.399
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]
^CAt time 1380209600.119
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]
At time 1380209600.129
- Translation: [-0.045, 0.002, 0.000]
- Rotation: in Quaternion [0.000, 0.000, -0.011, 1.000]
in RPY [0.000, 0.000, -0.021]

update 1:

I use groovy and all nodes(move_base,kobuki_node,gmapping) from the original ,and I only write my own launch files.

when give the goal in rviz. I can see the global plan generated correctly, but robot moved a very small distance ,then stopped. I check the output of move_base node, found the error msgs.

Here is the parameters of move_base node.

move_base launch file

<launch>

<!--include file="$(find turtle_movebase_setup)/launch/_velocity_smoother_gmapping.launch"/-->

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<rosparam file="$(find turtle_movebase_setup)/param/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find turtle_movebase_setup)/param/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find turtle_movebase_setup)/param/local_costmap_params_no_ekf.yaml" command="load" />
<rosparam file="$(find turtle_movebase_setup)/param/global_costmap_params_no_ekf.yaml" command="load" />
<rosparam file="$(find turtle_movebase_setup)/param/base_local_planner_params_no_ekf.yaml" command="load" />
<remap from="cmd_vel" to="cmd_vel_mux/input/navi_raw"/>
<param name="recovery_behavior_enabled" value="false" type="bool"/>
</node>

</launch>

costmap_common_params.yaml

 max_obstacle_height: 0.60  # assume something like an arm is mounted on top of the robot
obstacle_range: 2.5
raytrace_range: 3.0
robot_radius: 0.18
inflation_radius: 0.50
observation_sources: scan

scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true}

# Current bump cloud configuration
bump: {data_type: PointCloud2, topic: mobile_base/sensors/bumper_pointcloud, marking: true, clearing: false}

# These were for the create, but I think weren't getting used. 
# Can we merge to a common configuration - DJS?
# scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true}
# left_bump: {data_type: PointCloud2, topic: /bump_sensor_left, marking: true, clearing: true}
# right_bump: {data_type: PointCloud2, topic: /bump_sensor_right, marking: true, clearing: true}

local_costmap_params_no_ekf.yaml

local_costmap:
   global_frame: /odom
   robot_base_frame: /base_footprint
   update_frequency: 5.0
   publish_frequency: 5.0
   static_map: false
   rolling_window: true
   width: 4.0
   height: 4.0
   resolution: 0.05
   transform_tolerance: 1.0

global_costmap_params_no_ekf.yaml

global_costmap:
   global_frame: /map
   robot_base_frame: /base_footprint
   update_frequency: 3.0
   publish_frequency: 0.0
   static_map: true
   transform_tolerance: 1.0

base_local_planner_params_no_ekf.yaml

controller_frequency: 5.0
TrajectoryPlannerROS:
  max_vel_x: 0.50
  min_vel_x: 0.10
  max_rotational_vel: 1.5
  min_in_place_rotational_vel: 1.0
  acc_lim_th: 0.75
  acc_lim_x: 0.50
  acc_lim_y: 0.50

  holonomic_robot: false
  yaw_goal_tolerance: 0.3
  xy_goal_tolerance: 0.15
  goal_distance_bias: 0.8
  path_distance_bias: 0.6
  sim_time: 1.5
  heading_lookahead: 0.325
  oscillation_reset_dist: 0.05

  vx_samples: 6
  vtheta_samples: 20
  dwa: false

update 2

just checked the source code of tf.cpp and cache.cpp (groovy level), find only when tf buffer is empty, it throw "EmptyException".

so it means move_base node never receive /odom to /map tf? but I am sure gmapping publish the tf transform. my gmapping and move_base nodes run on same laptop...


Originally posted by redheli on ROS Answers with karma: 68 on 2013-09-26

Post score: 0

$\endgroup$

2 Answers 2

0
$\begingroup$

Rosanswers logo

The usual problem that generates this error is that you are creating the tf::TransformListener without giving it time to fill the buffer. If you create a Listener and then immediately query it before it has recieved messages you will get this sort of error. Are you writing your own node or are you using released nodes? Please provide enough information to reproduce your problem otherwise people can only guess at the problem.


Originally posted by tfoote with karma: 58457 on 2013-09-26

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by redheli on 2013-09-26:
Hi tfoote, I understand if not use waitForTransform() , tf::TransformListener may count error. I learn from the tf tutorial :) . But all the nodes I use are from groovy original. I only create my package and launch files to load the nodes. I updates the question. Thank you.

$\endgroup$
0
$\begingroup$

Rosanswers logo

problem solved. it is due to slow wireless connection. change to wire connect and gmapping become much better.


Originally posted by redheli with karma: 68 on 2013-09-29

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by AbuIbra on 2013-11-02:
This solves it only for you! I still have no idea what was the problem exactly.. I have the same problem and I am already on wired connection !??

Comment by redheli on 2013-11-03:
Hi Abulbra, can parse your code here? if your wired connection can access the internet, try disable it.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.