[Documentation] [TitleIndex] [WordIndex

Error: TF_SELF_TRANSFORM

Example

Solution:

Error: TF_OLD_DATA

Example:

Solution:

Error: TF_NO_FRAME_ID

Example:

Solution:

Error: TF_NO_PARENT_ID

Example:

Solution:

Error: TF_NAN_INPUT

Example:

Solution:

Error: ExtrapolationExceptions

Example:

Solution:

A constant offset extrapolation error is often caused by a lack of synchronization of the clocks between computers. One computer thinks it is ahead of the other and consequently the data received on a different machine will be off consistently. As new data comes in, the closest data will always be the same distance away resulting in the constant ExtrapolationException.

In a distributed system information is not available instantaneously in all parts of the system. Depending on the setup, it is possible for data to be available before all the transforms necessary are available. The recommended way to deal with this is to use a tf::MessageFilter.

Most likely this is a problem that part of the ROS system is running on sim time, while part is running without sim time. Make sure that all nodes are started while time is being published. And set the param "/use_sim_time" to true so that on startup there will not be a race condition for what mode ros::Time is running in.

Error: LookupException

Example:

Solution:

A LookupException is thrown in the case that a frame id requested does not exist in the tf tree.

This error is thrown when tf finds itself taking more than MAX_GRAPH_DEPTH steps to try to find the top of the tree. This is set high enough that the only common reason to hit this point is if the graph has a cycle in it. Look at the rest of the error message and see if any cycles exist. The program tf_monitor will show who is publishing which transform.

Error: ConnectivityException

Example:

Solution:

A ConnectivityException says that it is not possible to transform between the requested frame_ids.

The most common source of a ConnectivityException is that a tf authority is not publishing an intermediate transform required to get between the source and target frame. If you are running a large launch script look carefully for any nodes crashing or failing to start. The best utility to see what is being published is view_frames see view_frames for usage.

This will be thrown when using getLatestCommonTime (usually done by passing a time of 0 to the tf API) if the frames exist and are connected but there are no overlapping data in time. Often this is caused by one or more frames stopping being published.


2024-03-23 13:02