ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

What is the mean of "transform_tolerance" param?

asked 2019-07-21 02:01:51 -0500

harderthan gravatar image

Hello, I'm following the guide from costmap_2d for studying.

On section 5 (TF), there is the sentences.

"In order to insert data from sensor sources into the costmap, the costmap_2d::Costmap2DROS object makes extensive use of tf. Specifically, it assumes that all transforms between the coordinate frames specified by the global_frame parameter, the robot_base_frame parameter, and sensor sources are connected and up-to-date. The transform_tolerance parameter sets the maximum amount of latency allowed between these transforms. If the tf tree is not updated at this expected rate, the navigation stack stops the robot."

and, on section 8.1.4 (Parameters).

"~<name>/transform_tolerance (double, default: 0.2)"
"Specifies the delay in transform (tf) data that is tolerable in seconds. This parameter serves as a safeguard to losing a link in the tf tree while still allowing an amount of latency the user is comfortable with to exist in the system. For example, a transform being 0.2 seconds out-of-date may be tolerable, but a transform being 8 seconds out of date is not. If the tf transform between the coordinate frames specified by the global_frame and robot_base_frame parameters is transform_tolerance seconds older than ros::Time::now(), then the navigation stack will stop the robot."

After reading, I didn't understand what that mean.

TFs are just values for transformation information. And, those are from each topics which have a their coordinate. So, their frequency are different with each other by their's sensors timing. On this, why we need a tolerable value? When we need the tolerable param for navigation stack?

Is there any good information to help understanding for newbie?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-02-06 21:25:48 -0500

Josper gravatar image

Because sensor's data has latency. If the latency is too large, the information you get from sensor will not immediate enough. For example, if sensor message's frequency is 1hz, and your robot's velocity is 0.5 m/s. It means that when costmap receives a data comes from the sensor, it's a second ago. And your robot moves 0.5 meter away from that point. The information provided by costmap will not be immediate enough, it may let your global/local planner make a wrong decision.

edit flag offensive delete link more

Question Tools



Asked: 2019-07-21 02:01:51 -0500

Seen: 2,402 times

Last updated: Feb 06 '20