我已经仔细阅读了Dronekit-Python API参考资料,在继续我的硕士工程项目之前,我需要更多信息。我使用Raspberry-Pi 2B作为伴随Pixhawk飞行控制器的配套计算机,以获取特定时间实例的直升机的某些信息。我需要更多关于返回结构的信息以及Dronekit-Python API中某些调用的返回值。
首先,我只能使用欧拉角,如果"类dronekit.Attitude"没有返回欧拉角,我想知道从Pixhawk飞行控制器获得欧拉角(以Yaw-Pitch-Roll顺序)的直升机当前姿态的最简单方法是什么。
其次我想知道在什么轴/参考系中返回速度矢量。它是相对于直升机的固定体轴还是相对的,所以在东北向下坐标系中有一些起始位置。我还想知道如何获得速度矢量,它是完全基于GPS和压力传感器测量,还是包括IMU在内的所有车载传感器的融合。这将极大地影响速度矢量的准确性,这将为我的UKF带来很多不确定性。
答案 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框架的工作原理。 看看:
中的send_ned_velocity()