Approximation of 3D points with a 3D curve (path smoothing)

6 views (last 30 days)
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.

Answers (2)

Sebastian Castro
Sebastian Castro on 4 Jul 2017
This isn't really a MATLAB question, but this is typically done with minimum snap trajectories.
Also see, for example, this YouTube video .
- Sebastian
  2 Comments
Piotr Pawlowski
Piotr Pawlowski on 4 Jul 2017
This is too complicated approach for me right now. It includes detailed dynamic model of a quadrotor. I'm testing my ACO algorithm for path planning without modeling the UAVs (only path construction). I want to present a smooth path assuming that this UAV is a bigger plane rather than a small, agile multirotor.
Richard
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.

Sign in to comment.


Christine Tobler
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.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!