简体   繁体   中英

3D - spline for trajectory generation in Matlab/Octave

I am currently trying to create a 3D trajectory for a robot end-effector in Octave. The end-effector is supposed to visit a set of 3D points X = [x_1 ,..., x_n] , where x_i = [xcoord_i; ycoord_i; zcoord_i] x_i = [xcoord_i; ycoord_i; zcoord_i] x_i = [xcoord_i; ycoord_i; zcoord_i] . Simple linear interpolation would lead to non-smooth robot movements. Hence I want to generate a 3D-spline curve that generates N 3D points between my reference points. There exists an Matlab implementation for this kind of task ( documentation ). Can you give me a hint on how to approach this kind of problem in Octave ?

You can just do three one-dimensional spline interpolation on X(1,:) , X(2,:) and X(3,:) using interp1 , see https://www.gnu.org/software/octave/doc/interpreter/One_002ddimensional-Interpolation.html

This should work:

t = 1:n;
ti = 0:0.01:n;
xi = interp1(t, X(1,:), ti, "spline"); 
yi = interp1(t, X(2,:), ti, "spline"); 
zi = interp1(t, X(3,:), ti, "spline"); 
Xi = [xi; yi; zi];

Of course, you should adapt t and ti to your needs.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM