Para guiar, basta ter três pontos de dados distintos fixados ao helicóptero em um plano paralelo à rotação do rotor: leds de cores diferentes, por exemplo. Você pode colocá-los em três braços radiais finos fixados no trem de pouso. Talvez os materiais refletores coloridos funcionassem também, mas você teria que compensar as mudanças de luz ambiental.
Então, obter o ângulo da guinada é simples. Suponha que as luzes estejam vermelhas, verdes e azuis separadas por 120 graus e ccw quando vistas de cima.
Então, na imagem, você verá essas luzes em várias ordens de coordenadas x. À medida que o helicóptero gira a partir da posição mostrada no diagrama:
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
(Obviamente, nas fronteiras dessas regiões, duas luzes se fundirão em um único ponto. Elas podem ser tratadas como casos especiais.)
Assim, com 3 luzes, você dividiu todas as garras possíveis em segmentos de 6 x 60 graus.
Você pode reduzir ainda mais a resolução de 30 graus apenas comparando as larguras esquerda e direita da "folga". Se apontar diretamente para fora da câmera estiver em azimute teta zero graus e a luz vermelha estiver no nariz (como na imagem), o algoritmo é:
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
Os graus X+-15
médios acima, X
mais ou menos 15: um segmento de 30 graus. Para obter o deslocamento exato, você pode construir uma tabela pré-processada que converte a taxa
R = dxLeft < dxRight ? xLeft / xRight : xRight / xLeft
em um deslocamento exato de azimute entre -15 e 15. Isso é bastante simples de trigonometria, e o bom é que ele funciona independentemente da distância do helicóptero, desde que nunca vire de cabeça para baixo!
Outro benefício colateral: a distância da imagem entre as duas luzes externas oferece uma distância inversa à da câmera.