tf exception map to base_link
Hi all
We have a robot with 2 machines (1 quad core, 1 dual, both SSD) that makes heavy use of tf.
With everything running, we have about 80 nodes/nodelets. The machines are certainly being taxed, but we have found that recently tf lookups are simply not working. Here's a typical exception, though it's not the only type we've seen:
Caught Transform Exception: Unable to lookup transform, cache is empty, when looking up transform from frame [/base_link] to frame [/map]
I am particularly confused about how the cache could be empty, unless the machine is hung so badly that absolutely no /tf data is being received.
Also, if we are logged in remotely to a machine and call rosrun tf tf_echo /map /base_link, the echo works as expected.
In this particular example, I am calling the tf lookup as follows:
try{
ros::spinOnce();
tf::StampedTransform fixed_to_base;
listener_.waitForTransform(fixed_frame_,base_frame_,msg->header.stamp,ros::Duration(30.0));
listener_.lookupTransform(fixed_frame_,base_frame_,msg->header.stamp,fixed_to_base);
This is happening with calls in multiple processes, both C++ and python, so is there anything we should be doing differently?