脱靶量与实际角度差计算

这篇文章算是工程经验吧,自己总结并记录一下,也希望我的经验可以对各位有所帮助。

脱靶量是指目标与中心点的距离差值。一般根据反馈回的脱靶量来计算目标位置与中心点的实际角度差值,根据角度差值来驱动电机移动设备,使设备中心点与目标位置重合,这样可以达到设备始终跟随目标位置移动的效果。一般用在砖塔或吊舱的物体跟踪模式上。

我的应用中脱靶量是由跟踪器(也就是图像处理模块)反馈回来的像素值,这个像素值就是图像中心点与目标位置的像素差值。分为水平像素差和垂直像素差。如下图所示(手画的略显粗糙,将就着看吧),其中虚线框表示屏幕,中心的小十字表示图像中心点,右上角的小框表示目标位置。PIX表示像素,PIX_y是中心点与目标间垂直像素差,PIX_x是中心点与目标间水平像素差。

我们需要得到水平垂直这段距离差的值,公式: 像素*像元大小=距离值。像素多少我们已经知道了,像元大小是机芯自带的特性,可以在机芯手册上找到,或者询问厂家。假如我们的像元大小为12μm(1000μm=1mm),水平像素差PIX_x=10,则距离值=12*10=120μm.由此我们可以得出水平与垂直的误差距离值。(补充:屏幕上的视频图像是由很多个像素点组成的,比如1080x1920的分辨率其实就是整个图像水平由1080个像素点组成,垂直由1920个像素点组成。而像元大小就是指这每一个像素点的大小。)

得到屏幕这端的误差距离值之后,就可以开始算实际物体的误差角度了。再来看一张图,还记的初中学的目镜物镜以及凸透镜成像原理吗?大概就是这个了。图中ac是刚刚我们计算出的屏幕端误差距离值,假如我们垂直的透过屏幕去看,经过成像转换后ef就是实际物体的大小,也就是ac实际的大小。而我们需要的是角度α,因为ac是脱靶量差值,所以α是脱靶的角度值,也就是说中心点移动这些角度即可到达目标位置。α=2β,tanβ=ab/ad,ab=ac/2,其中bd是当前焦距,如果是定焦机芯直接带入焦距值即可,如果是可变倍的机芯,那么需要在计算前从机芯读取当前焦距值再参与计算。综上,α=2β=arctan((ac/2)/bd).到这里就计算出误差角度值了,根据角度值移动就可达到目标点,实际应用中因为设备在运动所以脱靶量是实时变化的,所以误差角度也是实时变化的,一套合适的PID参数可以更好的达到跟踪效果。

就写到这里了,本人目前的认知就是这样,如果有没说明白或者说错的地方欢迎在评论区提问或指教探讨,我将十分感谢。

猜你喜欢

转载自blog.csdn.net/shijizai/article/details/128360582