Extrapolation error using hector_mapping + move_base
Hello all,
I have a problem with my robot setup which I cannot resolve, even after reading all relevant posts on here. I really would appreciate your help.
Problem Description
The system starts up not generating any errors (see https://dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/start_up_log.txt), producing an accurate map, and localization working well, too. As soon as I select a goal in rviz, move_base reproducibly throws the following errors:
[ ...] [ERROR] [1369321339.784772926]: Extrapolation Error: Unable to lookup transform, cache is empty, when looking up transform from frame [/odom] to frame [/map] [ERROR] [1369321339.785409391]: Global Frame: /odom Plan Frame size 107: /map [ WARN] [1369321339.785726634]: Could not transform the global plan to the frame of the controller [ERROR] [1369321340.434425166]: Extrapolation Error: Unable to lookup transform, cache is empty, when looking up transform from frame [/odom] to frame [/map] [ERROR] [1369321340.434493357]: Global Frame: /odom Plan Frame size 107: /map [ WARN] [1369321340.434528719]: Could not transform the global plan to the frame of the controller [ ...]
However, if I make the following change in the local_costmap_params.yaml file:
local_costmap: global_frame: /odom
to
local_costmap: global_frame: /map
I don't get any errors and move_base generates a plan to the goal, which is also displayed in rviz. Unfortunately, the generated cmd_vel commands are very shaky, oscillate and weird navigation behaviour is the result.
My Setup
- Robot: Custom robot with chain drive, i.e. non-holonomic. I have written a base_controller node for it which sends drive commands to the motors and uses the encoder information to calculate odometry and publish as tf+nav_msg (as described http:// www.ros.org/wiki/navigation/Tutorials/RobotSetup/Odom). I have also created a *.urdf file and use robot_state_publisher to publish the tf's for the model.
- Sensors: Hokuyo UTM-30LX laser scanner
- Nodes: max_driver (custom base_controller), hector_mapping, move_base, hokuyo_node
- hector_mapping config:
[hector_config.launch] https:// dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/hector_config.launch
- move_base config:
[move_base_config.launch] https:// dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/move_base_config.launch
[base_local_planner_params.yaml] https:// dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/base_local_planner_params.yaml
[costmap_common_params.yaml] https:// dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/costmap_common_params.yaml
[global_costmap_params.yaml] https:// dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/global_costmap_params.yaml
[local_costmap_params.yaml] https://dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/local_costmap_params.yaml
- Remote nodes: The hokuyo_node and the base_controller node run on an embedded PC, which is connected via ethernet to a powerful laptop running the remaining nodes. The time of both machines is synced via crony.
- SW-Version: Ubuntu 12.04 + ROS Groovy, everything up to date
Debug Info
- tf tree: [link] (https:// dl.dropboxusercontent.com/u/10986309/2013-05-23_ros.answers/frames.pdf)
- tf_monitor output:
ros@Base:~$ rosrun tf tf_monitor RESULTS: for all Frames Frames: Frame: /base_frame published by /max_driver Average Delay: -0.00377412 Max Delay: 0 Frame: /base_laser published by /robot_state_publisher Average Delay: -0.476582 Max Delay: 0 Frame: /base_laser_cap published by /robot_state_publisher Average Delay: -0.476592 Max Delay: 0 Frame: /base_laser_mount_box published by /robot_state_publisher Average Delay: -0.476591 Max Delay: 0 ...
it would be great if you could provide solution to your problem, because I believe most ppl like me is struggling to get the navigation stack to work. Thank you verymuch!
I have the same problem. I looked at the code, the lookup fails in transformGlobalPlan, https://github.com/ros-planning/navigation/blob/groovy/base_local_planner/src/goal_functions.cpp Either this is too strict about the timestamps or it has a bug which only surfaces in special cases.
I tried move_base with gmapping last week and got a similar issue... the robot moved for a few centimeters sometimes, but stopped with the same messages. Comparing the TFs, I get 40Hz from hector_slam and 50Hz from gmapping. So it seams the local planner is too strict with timestamps.
Hello Achim, I just saw your two recent posts. What are you suggesting to fix the problem? Increase the frequency of hector_slam? I still haven´t found a solution to make it work...