【问题标题】:An animated shape run over known path动画形状在已知路径上运行
【发布时间】:2016-06-15 11:55:21
【问题描述】:

我想模拟一个跟踪已知路径的车辆,我正在处理的只是一个在路径上移动的动画形状,我在 matlab 下编写了我的代码,我得到了正方形(代表车辆)在路径上移动,但是,我想删除最后一个方块(记忆),每次只想要一个方向正确的方块。 任何人都请告诉我我能做些什么来实现这一目标。 我的代码说明了我之前解释的内容:

r=0.25;
t=0:0.1:10;
A=100;
yo=A*sin(t);%%desired output position on Y axe
Voy=diff( yo);
Vox=ones(1,101);
Voy(length(Voy)+1)=Voy(length(Voy))
Vmx=sqrt(Voy.*Voy+Vox.*Vox);
theta=atan(Voy./Vox);
%%Speed's equations
Voy=Vmx.*sin(theta);
Vox=Vmx.*cos(theta);
x=0;
y=0;
t=0;
for i=1:1:length(Voy);
x=Vox(i)*(t);
y=Voy(i)*0.1;
pause(0.05)
t=t+0.1;
plot(x,y,'--gs',...
'LineWidth',2,...
'MarkerSize',30,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5])
hold on
end

【问题讨论】:

  • 请让问题更具体。是关于matlab中的可视化吗?

标签: matlab tracking robotics numerical-integration


【解决方案1】:

我认为以下代码可以满足您的需求:

r=0.25;
t=0:0.1:10;
A=100;
yo=A*sin(t);%%desired output position on Y axe
Voy=diff( yo);
Vox=ones(1,101);
Voy(length(Voy)+1)=Voy(length(Voy))
Vmx=sqrt(Voy.*Voy+Vox.*Vox);
theta=atan(Voy./Vox);
%%Speed's equations
Voy=Vmx.*sin(theta);
Vox=Vmx.*cos(theta);
x=0;
y=0;
t=0;
figure;

ph = plot(x,y,'--gs',...
    'LineWidth',2,...
    'MarkerSize',30,...
    'MarkerEdgeColor','b',...
    'MarkerFaceColor',[0.5,0.5,0.5]);

set(gca,'XLim',[0 10]);
set(gca,'YLim',[-2 2]);

for i=1:1:length(Voy);

    x=Vox(i)*(t);
    y=Voy(i)*0.1;
    set(ph,'XData',x);
    set(ph,'YData',y);
    pause(0.05)
    t=t+0.1;
end

诀窍是,使用绘图的句柄在 for 循环中更新其数据。这可以通过更改绘图对象的XDataYData 属性来完成:

set(ph,'XData',x);
set(ph,'YData',y);

此外,我将手动设置轴的 X 和 y 限制

set(gca,'XLim',[0 10]);
set(gca,'YLim',[-2 2]);

否则根据当前数据动态设置,分几步设置。

【讨论】:

  • 谢谢你解决了我的大部分问题,仍然想控制正方形(机器人)在直线上的方向更接近机器人的真实运动,所以我可以用最后一个标记。
  • 这意味着,您想“倾斜”正方形,还是控制正方形的角度?目前,您正在使用标记进行可视化。因为无法通过功能调整标记方向,所以最好使用patch 之类的东西来可视化您的机器人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2012-10-28
  • 2019-03-22
相关资源
最近更新 更多