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

6 次查看(过去 30 天)
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.

回答(2 个)

Sebastian Castro
Sebastian Castro 2017-7-4
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 个评论
Piotr Pawlowski
Piotr Pawlowski 2017-7-4
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 2017-9-15
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
Christine Tobler 2017-9-15
编辑:Christine Tobler 2017-9-15
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.

类别

Help CenterFile Exchange 中查找有关 Smoothing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by