Approximation of 3D points with a 3D curve (path smoothing)
6 views (last 30 days)
Show older comments
Hi everyone
I have three vectors containing x, y and z coordinates of data points. These points are used to create a flyable 3D path for an aerial vehicle. The problem is that this path is not smooth and has many heavy turns. I want to approximate (not interpolate, I dont need this vehicle to fly through all points) those points with a single, quite smooth curve instead of a polyline drawn from point to point.
0 Comments
Answers (2)
Sebastian Castro
on 4 Jul 2017
This isn't really a MATLAB question, but this is typically done with minimum snap trajectories.
- Sebastian
2 Comments
Richard
on 15 Sep 2017
I believe one approach could be the following
For some segment of number of points in the path, use svd() or pca() of a matrix of these points to compute the direction axis. Then you want to smooth the points in the direction perpendicular to the directional vector obtained above, by say a moving average. Caveats are, there a min number of points for svd/PAC to be robust. Below this you will need to compute the differences in each dimension and pick the one with the least variation to estimate the principal axis. I know that's a bit vague, but I think it's a start.
Christine Tobler
on 15 Sep 2017
Edited: Christine Tobler
on 15 Sep 2017
You could try the smoothdata function, which would just smooth the x-, y- and z-coordinates separately. Not very adapted to the path-finding problem, but should be easy to try out.
0 Comments
See Also
Categories
Find more on Smoothing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!