我想模拟 3 个机器人/代理在空间中的运动,我想生成 3 个不同的轨迹,它们有一个约束:在某一时间 T 内,所有轨迹必须具有相同的切线。
我需要通过 MATLAB 和/或 SIMULINK 来完成此操作。
我不知道这是否足以满足我的需要,但我可能想出了一些办法。
我所做的就是将多项式拟合到某些点上,并限制多项式在某个点上的导数等于0。
我使用了以下函数: http://www.mathworks.com/matlabcentral/fileexchange/54207-polyfix-x-y-n-xfix-yfix-xder-dydx-
这很简单,但它节省了我一些工作。
并且,如果您尝试以下操作:
% point you want your functions to pass
p1 = [1 1];
p2 = [1 3];
% First function
x1 = linspace(0,4);
y1 = linspace(0,4);
p = polyfix(x1,y1,degreePoly,p1(1),p1(2),[1],[0]);
% p = [-0.0767 0.8290 -1.4277 1.6755];
figure
plot(x1,polyval(p,x1))
xlim([0 3])
ylim([0 3])
grid on
hold on
% Second function
x2 = linspace(0,4);
y2 = linspace(0,4);
p = polyfix(x2,y2,degreePoly,[1],[3],[1],[0])
% p = [0.4984 -2.7132 3.9312 1.2836];
plot(x2,polyval(p,x2))
xlim([0 3])
ylim([0 3])
grid on
如果您没有polyfix功能并且不想下载它,您可以尝试使用相同的代码注释polyfix行:
p = polyfix(x1,y1,degreePoly,p1(1),p1(2),[1],[0]);
p = polyfix(x2,y2,degreePoly,p2(1),p2(1),[1],[0]);
并取消注释这些行:
% p = [-0.0767 0.8290 -1.4277 1.6755];
% p = [0.4984 -2.7132 3.9312 1.2836];
你会得到这个:
现在我将使用这个多项式作为我的机器人随时间变化的位置(x,y),我想我应该完成了。多项式的x也是时间,这样我就确信机器人会同时到达0导数点。
你觉得怎么样?是否有意义? 再次感谢。
要让切线始终相同,曲线(或轨迹)需要始终平行。为一个物体生成轨迹,并使其他物体保持固定距离并遵循主轨迹。
在图像中,如果我们在三个点旁边花时间,则随着物体向不同方向移动,轨迹将不会相同(或平行)。所以我想你必须保持始终平行