1. I run a core
$ roscore
2. I run RosAria, teleop and sicklms nodes. The three of them work correctly and I verify that the laser scans are taking place by launching rviz.
3. I run tf_broadcaster from sscrovers_tf_conf package.
4. I run gmapping node as follows:
$ rosrun gmapping slam_gmapping scan:=base_laser_link
5. At this point I verify the tree of transforms and it is correct: map->odom->base_link->base_laser_link
6. Afterwards I run rosrecord like this:
$ rosrecord -f dos /base_laser_link /tf
7. Once the data is recorded to the bag file I play it back with rosplay while the gmapping_node is still executing.
8. When running the bag file I get the following error from gmapping: "TF_OLD_DATA ignoring data from the past for frame base_laser_link"
9. I run the map_saver and the map is never created.
What was suggested to me in relation with this error (tf_old_data) was to run roswtf and so I did. The errors displayed talked about some sort of transform "duplication". For instance:
"node [/slam_gmapping] publishing transform [/odom] with parent [/map] already published by node [/rosplay_1281403114388600000]
I the decided to kill all the proceses (except for slam_gmapping and roscore) when running rosplay. I still got the same error.
Renato, on the other hand, has been having similar tf trouble when trying to run gmapping:
"The base_scan observation buffer has not been updated for 7.06 seconds, and it should be updated every 0.80 seconds."
10. Afterwards, I tried running the gmapping node under the topic of base_scan. The terminal displays that a first scan has been registered but then stops the process and shows me the following error:
"TF_OLD_DATA ignoring data from the past for frame
The majority of dropped messages were due to messages growing older than the TF cache time."If I run roswtf at this point the following warning is displayed:
"WARNING The following node subscriptions are unconnected:
* /tf_monitor_
* /reset_time
* /tf_message"
I am trying to figure out if there is a direct relation with the fact that the TF mesages are older than the cache and the failing subscription of /reset_time.
Concerning TF_OLD_DATA error what the ros documentation argues is the following:
- TF_OLD_DATA errors mean that a transform is attempted to be added to the system, but the data is greater than cache_time_ before the most recent data received for this link.
- The most common cause of TF_OLD_DATA warnings are if rostime has gone backwards. This can be caused by restarting a bag playback or restarting a simulator. The fix for this is to send an Empty message the topic /reset_time. There is a button in rviz to do this.
- Another possible source of TF_OLD_DATA is if there is any outdated or delayed source of transforms. The error message will tell you which authority is sending the outdated data. If it is running in a ros node you can use view_frames to determine the more recent authority. See view_frames.
I am going to try troubleshooting with these recommendations.
