1

我已经彻底阅读了 Dronekit-Python API 参考,在继续我的硕士工程项目之前,我需要更多信息。我使用 Raspberry-Pi 2B 作为 Pixhawk 飞行控制器的配套计算机,以在特定时间获取有关直升机的某些信息。我需要有关 Dronekit-Python API 中某些调用的返回结构和返回值的更多信息。

首先,我只能使用欧拉角,如果“classdronekit.Attitude”不返回欧拉角,我想知道以欧拉角获取直升机当前姿态的最简单方法是什么(按顺序排列)来自 Pixhawk 飞行控制器的 Yaw-Pitch-Roll)。

其次,我想知道速度矢量在哪个轴/参考系中返回。它是相对于直升机的固定体轴还是相对于东北下坐标系中的某个起始位置。我还想知道速度矢量是如何获得的,是仅基于 GPS 和压力传感器测量,还是融合了包括 IMU 在内的所有车载传感器。这将极大地影响速度矢量的准确性,这将在我的 UKF 中包含很多不确定性。

4

1 回答 1

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_x, velocity_y, velocity_z]。

  • velocity_x, # NED 帧中的 X 速度,单位为 m/s
  • velocity_y, # NED 帧中的 Y 速度,单位为 m/s
  • velocity_z, # NED 帧中的 Z 速度,单位为 m/s

要了解它是如何工作的,您首先需要了解 NED 框架是如何工作的。看看 send_ned_velocity() 在:

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

于 2016-09-27T18:37:46.920 回答