对于偏航,将三个不同的数据点固定在直升机上与旋翼旋转平行的平面上就足够了:例如,不同颜色的 LED。您可以将它们放在固定在起落架上的三个细径向臂上。也许彩色反光材料也可以,但你必须补偿环境光的变化。
然后获得偏航角很简单。假设从顶部看时,红、绿、蓝三灯相隔 120 度,逆时针方向。
然后在图像中,您将看到这些灯以各种 x 坐标顺序排列。当直升机从图中所示位置逆时针旋转时:
G R B // green and blue in front; red in back
R G B // green in front; red and blue in back
R B G // red and gree in front; blue in back
B R G // etc...
B G R
G B R
(当然,在这些区域的边界,两盏灯会合并为一个点。这些可以作为特殊情况处理。)
因此,使用 3 盏灯,您可以将所有可能的偏航分成 6 x 60 度的段。
通过比较左右“间隙”宽度,您可以进一步降低 30 度分辨率。如果直接远离相机的方向是方位角 theta 零度并且红灯在鼻子上(如图所示),那么算法是:
Xr = -sin(theta)
Xg = -sin(theta + 60)
Xb = -sin(theta + 120)
if (Xg < Xr && Xr <= Xb) {
// Green and blue are in front of red
dxLeft = Xr - Xg
dxRight = Xb - Xr
yaw = (dxLeft < dxRight) ? 15+-15 : -15+-15;
}
else if (Xr < Xg && Xg < Xb) {
// Green is in front of red and blue
dxLeft = Xg - Xr
dxRight = Xb - Xg
yaw = (dxLeft < dxRight) ? 30+-15 : 60+-15;
}
else ... four more cases
以上X+-15
平均X
度数正负15:30度段。要获得确切的偏移量,您可以构建一个转换比率的预处理表
R = dxLeft < dxRight ? xLeft / xRight : xRight / xLeft
到 -15 和 15 之间的精确方位角偏移。这是一个非常简单的三角函数,它的工作原理与直升机的距离无关,只要它永远不会倒转!
另一个好处:外部两个灯之间的图像距离使您与相机的距离成反比。