确切的回报值"态度"和"速度"在Dronekit API中

时间:2016-06-23 13:04:28

标签: dronekit-python

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

首先,我只能使用欧拉角,如果"类dronekit.Attitude"没有返回欧拉角,我想知道从Pixhawk飞行控制器获得欧拉角(以Yaw-Pitch-Roll顺序)的直升机当前姿态的最简单方法是什么。

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

1 个答案:

答案 0 :(得分:1)

态度以弧度返回。在这里,我将向您展示我用于将弧度转换为度数的代码。只需将转换常数更改为弧度即可转换为euler。

我们假设您在车辆类中。

# 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]。

  • 在NED帧中的velocity_x,#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