Comments (1)
Yes allowing extrapolation is technically relatively trivial. The original design of tf explicitly included this as a use case. After testing it was determined that using the naive extrapolation was actually very detrimental to operation because it is very sensitive to the noise signals and could easily turn stable systems into unstable systems.
In theory allowing extrapolation can help avoid phase lag in close loop control. However if the extrapolated values amplify the noise and not the signal it is much worse than waiting for the measurement to come in.
To this end we have been walking back the availability of extrapolation in the different generations of the tf APIs to the point in tf2 where it is not offered. So please don't take the time to add it back.
The problem with building the extrapolation into the generic tf API is that it does not have a model of the system. With a model of the system a estimator can be designed to estimate the state of the system and can estimate the future behaviour of the system using the model for feed forward. As a very trivial example use case, modelling a bouncing ball if the last measurement is when the ball is half way up it's parabola, and you use extrapolation based on the most recent measurements, your naive estimate of the balls position in the future is always rising which is obviously not true. For very short times linear extrapolation can be a good approximation, however the definition of short is completely dependent on the characteristics of the system, a ping pong ball and a barge have very different time scales over which extrapolation will remain valid.
Besides writing specific model/estimators for application specific extrapolation estimation, I think that there is room for building an extension/addon to tf2 which allows you to define a model and let it build up an estimate of the state of the model based on the tf history. And then support querying for times in the future based on the model's estimates in the future. This could provide the same API as the buffer and the model could have extrapolation tolerances built in which would limit the valid extrapolation distance.
from geometry2.
Related Issues (20)
- Documentation on convert/transform registration in Python HOT 7
- A mistake in tf2/Tutorials HOT 2
- tf2 giving NAN values
- Release 0.6.7 never made it into Melodic distro? HOT 2
- PermissionError when using view_frames HOT 2
- Fail out of lookupTransform immediately if extrapolation into the past is required instead of waiting for timeout HOT 1
- Including tf2_geometry_msgs in a catkin package includes two versions of Eigen HOT 1
- Pose and Transform messages are redundant HOT 1
- ROS wiki tf2 tutorial page has errors
- sleep_duration of can_transform takes too much time HOT 1
- New release for Noetic HOT 13
- Wrong warning TF_REPEATED_DATA if 2 different transforms (with different frames) but same timestamp HOT 1
- tf_py.BufferCore not respecting cache_time argument HOT 2
- dotransform TransformStamped datatype not process child_frame_id HOT 2
- rostime_converter loses nanosecond precision
- Failing when Building for Humble with catkin errors
- Error while compiling using catkin for python3.8 HOT 1
- Using AngleShortestPath or getAngleShortestPath in python HOT 2
- Python tf2 buffer does not Detect Jumps in Time HOT 2
- Error in tf2 tutorial
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from geometry2.