3D - Matlab/Octave 轨迹生成样条
3D - spline for trajectory generation in Matlab/Octave
我目前正在尝试在 Octave 中为机器人末端执行器创建 3D 轨迹。
末端执行器应该访问一组 3D 点 X = [x_1 ,..., x_n]
,其中 x_i = [xcoord_i; ycoord_i; zcoord_i]
。简单的线性插值会导致机器人运动不平稳。因此,我想生成一个 3D 样条曲线 曲线,在我的参考点之间生成 N 个 3D 点。存在用于此类任务的 Matlab 实现 (documentation)。你能给我一个关于如何在 Octave?
中解决此类问题的提示吗?
您可以使用 interp1
在 X(1,:)
、X(2,:)
和 X(3,:)
上进行三个一维样条插值,请参阅
https://www.gnu.org/software/octave/doc/interpreter/One_002ddimensional-Interpolation.html
这应该有效:
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];
当然,您应该根据自己的需要调整t
和ti
。
我目前正在尝试在 Octave 中为机器人末端执行器创建 3D 轨迹。
末端执行器应该访问一组 3D 点 X = [x_1 ,..., x_n]
,其中 x_i = [xcoord_i; ycoord_i; zcoord_i]
。简单的线性插值会导致机器人运动不平稳。因此,我想生成一个 3D 样条曲线 曲线,在我的参考点之间生成 N 个 3D 点。存在用于此类任务的 Matlab 实现 (documentation)。你能给我一个关于如何在 Octave?
您可以使用 interp1
在 X(1,:)
、X(2,:)
和 X(3,:)
上进行三个一维样条插值,请参阅
https://www.gnu.org/software/octave/doc/interpreter/One_002ddimensional-Interpolation.html
这应该有效:
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];
当然,您应该根据自己的需要调整t
和ti
。