【分享帖】机器人运动预测
直接上干货。
首先我们的目的很明确,就是要打运动的机器人。
已知条件(识别那块就不说了):

  • 己方机器人的云台角度,yawpitch,记为j-yawj-pitch

  • 敌方装甲板在相机中解算出的角度yawpitch,记为d-yawd-pitch

  • 可以通过相机算出相机到装甲板的大致距离dis

  • 射速v(取均值),发射时俯仰角α

  • 3 4可推导出弹丸飞行时间t
    水平方向:
    j-yaw为机器人云台上的绝对角度,d-yaw为相机中目标相对于图像中心(瞄准基线)的相对角度。假设目标始终在视野范围内,转动云台则j-yaw的变化值delta-j-yawd-yaw的变化值delta-d-yaw相等(不等就将d-yaw这个数据处理使delta-j-yawdelta-d-yaw强制相等)。
    在此处定义一个概念目标角度a-yaw=j-yaw+d-yaw。且delta-j-yaw=delta-d-yaw
    基于此不难发现目标角度a-yaw只与敌我双方的相对位置相关,与运动状态无关,与我正视还是斜视无关。
    每处理一帧图像则会更新目标角度a-yaw。一旦敌我双方相对位置改变时,a-yaw则会发生变化(谁动都无所谓,两个都动也可),变化角度为delta-a-yaw,耗时为delta-t,即两帧图像时间差(假如处理能到50帧,就是20ms)。
    角速度为Omega=delta-a-yaw/delta-t。再微分一次就得到角加速度a。那么Omega*t+0.5a*t^2就是预瞄的角度啦,做个闭环让d-yaw=Omega*t+0.5a*t^2就打上了。
    竖直方向就按照抛物线算即可,这个方向变化不是太大。
    方法亲测有效,我是搞电控的,我感觉这个方法比起卡尔曼滤波更平易近人,通俗易懂大家可以试试,后期在搞毕业的事,也没有什么视频。
    第一次写这种东西,感觉写的乱七八糟的,大家凑合看吧,希望能有用,有问题可以直接交流。
    军临战队敖布和

    QQ848533123

附上matlab的演示代码。
clc; clear;

% 初始化一个电影矩阵
M = moviein(1000);
% 创建电影
a=0;
m=0;
n=0;
l=50;
for i=1:l:10000
lasta=a;
x=3*i-3*(0.01*i)^2;
% y=5000-(0.01*i)^2;
y=5000-0.1*i;
m=1*i;
n=0;
plot(x,y,'o');
hold on;
a=atan((x-m)/(y-n));
b=(a-lasta)/l;
c=sqrt((x-m)^2+(y-n)^2)/15*b;
d=a+c;

plot(m,n,'x');
hold on;
q=0:1:10000;
u=1/tan(d)*q+n-1/tan(d)*m;
plot(q,u);
% axis equal;
axis([0 10000 0 5000])
% 调用getframe函数生成每个帧
M(i) = getframe;

end
movie(M, 1);



请问这篇文章对你有用吗?
【分享帖】机器人运动预测
所有评论
暂无更多
暂无更多
关于作者
阿布
阿布
0 关注Ta
0 文章
0 经验值
0 获赞