为 3 个代理/机器人生成在特定点具有相同切线的轨迹 - MATLAB

问题描述 投票:0回答:2

我想模拟 3 个机器人/代理在空间中的运动,我想生成 3 个不同的轨迹,它们有一个约束:在某一时间 T 内,所有轨迹必须具有相同的切线。

我想要如下图所示的东西:

我需要通过 MATLAB 和/或 SIMULINK 来完成此操作。

matlab simulink robotics
2个回答
0
投票

我不知道这是否足以满足我的需要,但我可能想出了一些办法。

我所做的就是将多项式拟合到某些点上,并限制多项式在某个点上的导数等于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导数点。

你觉得怎么样?是否有意义? 再次感谢。


0
投票

要让切线始终相同,曲线(或轨迹需要始终平行。为一个物体生成轨迹,并使其他物体保持固定距离并遵循主轨迹。

在图像中,如果我们在三个点旁边花时间,则随着物体向不同方向移动,轨迹将不会相同(或平行)。所以我想你必须保持始终平行

© www.soinside.com 2019 - 2024. All rights reserved.