Точные возвращаемые значения отношения и скорости в API Dronekit

Я внимательно изучил справочник по API Dronekit-Python, и прежде чем я продолжу свой проект Masters Engineering, мне нужна дополнительная информация. Я использую Raspberry-Pi 2B в качестве компьютера-компаньона с контроллером полета Pixhawk для получения определенной информации о вертолете в определенный момент времени. Мне нужна дополнительная информация о возвращаемой структуре и возвращаемых значениях определенных вызовов в API Dronekit-Python.

Прежде всего, я могу работать только с углами Эйлера, и если «класс dronekit.Attitude» не возвращает углы Эйлера, я хотел бы знать, как проще всего получить текущее положение коптера в углах Эйлера (в порядке Yaw-Pitch-Roll) от контроллера полета Pixhawk.

Во-вторых, я хотел бы знать, в каких осях/системе отсчета возвращается вектор скорости. Относительно ли он относительно фиксированных осей корпуса коптера или относительно некоторого начального положения в системе координат Север-Восток-Вниз. Я также хотел бы знать, как получается вектор скорости, основан ли он исключительно на измерениях GPS и датчика давления или это слияние всех бортовых датчиков, включая IMU. Это сильно повлияет на точность вектора скорости, что внесет много неопределенности в мой UKF.


person Josua B    schedule 23.06.2016    source источник


Ответы (1)


Отношение возвращается в радианах. Здесь я покажу вам код, который я использовал для преобразования радианов в градусы. Просто измените константу преобразования в радианы в преобразование Эйлера.

Предположим, вы находитесь внутри класса транспортных средств.

# Attitude attribute listener. 
# This will call attitude_callback every time the attitude changes
self.add_attribute_listener('attitude', self.attitude_callback)

def attitude_callback(self, *args):
    attitude = args[2]
    if attitude is not None:
        # degrees = radians * 180 / pi
        # CHANGE TO CONVERT FROM RADIANS TO EULER HERE 
        const = 180 / pi
        pitch = attitude.pitch * const
        yaw = attitude.yaw * const
        roll = attitude.roll * const
        self.horizon = (int(pitch), int(roll), int(yaw))

Velocity дает вам [velocity_x, Velocity_y, Velocity_z].

  • Velocity_x, # X скорость в кадре NED в м/с
  • Velocity_y, # Скорость Y в кадре NED в м/с
  • Velocity_z, # Z скорость в кадре NED в м/с

Чтобы понять, как это работает, вам нужно сначала понять, как работает фрейм NED. Взгляните на send_ned_velocity() в:

http://python.dronekit.io/examples/guided-set-speed-yaw-demo.html#example-guided-mode-send-global-velocity

person epinal    schedule 27.09.2016