Как рассчитать пространственный угол возвышения (углубление или взгляд вверх), чтобы посмотреть коэффициент усиления антенны тета и фи?

#python #geometry #angle

Вопрос:

Итак, это относительно сложная проблема: представьте себе следующую ситуацию:

  • Координаты БПЛА: (50, 50, 80) (x,y,z в метрах)
  • Базовые координаты: (50, 100, 80) (x,y,z в метрах)

Как беспилотный летательный аппарат, так и базовая станция оснащены антенной, которая имеет направленность. Антенна БПЛА направлена прямо на север (на БП), а антенна БП направлена на юг (в данном случае на БПЛА).

Когда я теперь перемещаю беспилотный летательный аппарат на базу, угол наклона становится все выше и выше, пока беспилотник не обгонит базу.

Мои данные о коэффициентах усиления антенны (для обеих антенн) приведены в следующем формате CSV:

HOR_ANGLE; HOR_GAIN; VERT_ANGLE; VERT_GAIN

Углы находятся в диапазоне от нуля до 359 градусов, и каждый угол имеет соответствующее значение усиления.

Моя проблема в том, что мне нужно получить коэффициент усиления обеих антенн для соответствующих углов направленности (азимута) и высоты/депрессии. Схема антенны выглядит следующим образом: 1 Вы можете видеть, что она не симметрична. Чтобы получить горизонтальный угол не составляло проблемы, я рассчитал его следующим образом:

 dx = object2[0] - object1[0]
dy = object2[1] - object1[1]
angle_radians = math.atan2(dy, dx)
angle_degree = math.degrees(angle_radians)
angle = angle_degree - 90
if angle < 0:
    angle = abs(angle)
else: 
    angle = 360 - angle
angle = angle - start
if angle < 0:
    angle = 360   angle
 

Где объект 1 или объект 2-это беспилотный летательный аппарат или базовая станция, а индекс 0-долгота в метрах, а индекс 1-широта в метрах. Начало — это горизонтальный угол главного луча антенны.

Теперь проблема возникает при расчете вертикального угла. Поскольку теорема Пифагора (вычисление угла с помощью косинуса дуги или синуса дуги соответственно) не является разумной, она всегда отображает вертикальный угол в интервале от -90 до 90 градусов. Но мне нужен угол в интервале от 0 до 359, чтобы получить коэффициент усиления из CSV. Как вы можете видеть на рисунке 1 справа, там происходит сопоставление. Левая красная точка теоретически находится за базовой станцией, поэтому угол должен быть (круговым) 110 градусов. При использовании теоремы Пифагора угол составляет 70 градусов, что неверно. Вот что я имею в виду, говоря о картографии.

Когда я теперь применяю ограничение для вычисления вертикального угла следующим образом:

 if 90 < hor_angle < 270:
    vert_angle = vert_angle   180
 

Теперь у меня есть проблема очень «жесткой» границы горизонтальных углов, как видно на этом рисунке: 2 На этом рисунке показан беспилотник сверху (вверх-север). Вы можете видеть направленность антенны на север. Теперь, из-за моего реализованного ограничения, каждый пиксель (или базовая станция), находящийся за дроном, имеет очень слабое усиление антенны. В реальном мире «срез» этих ценностей более динамичен и не так суров. На следующем рисунке показана 3D-схема диаграммы направленности антенны: 3

Я уже пытался сопоставить вертикальный угол с диапазоном 90 и -90 градусов, соответствующим горизонтальному углу, но это не решило проблему.

To put it in a nutshell my question is: How can I calculate the vertical depression or elevation angle (where 0 degree is right and the angles range from 0 to 359 degrees clockwise) with respect to the horizontal angle of the objects dynamically (both for the UAV’s and base station’s antenna)?

I hope the problem is expressed in an understandable way. I am looking forward to hearing your ideas and follow-up questions or remarks.