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