我正在开展一个项目,我想使用madgwick的AHRS过滤器。我正在尝试使用已翻译的Python代码(JonasBoër,2015),但我无法让它正常工作。该脚本可在此处找到https://github.com/morgil/madgwick_py
我无法理解课程的使用。下面是一个脚本,我首先导入了madgwickahrs.py中声明的类。其次,我为陀螺仪,加速度计和磁力计定义了1帧随机数据。 在此之后,我初始化类并调用类中的不同函数。 (注意:对于正常的数据数组,我应该将它放在循环中以计算每帧的新四元数列表)
import numpy as np
from madgwickahrs import MadgwickAHRS
gyr = np.array( [1.6, 0.6, 1.5])
acc = np.array( [1.2, 1.9, 1.3])
mag = np.array( [2.1, 1.3, 2.1])
gyr_rad = gyr * (np.pi/180)
new_data = MadgwickAHRS()
# No parameters filled in means it will use the parameters stated
in the script (sampleperiod = 1/256, quaternion = [1 0 0 0], beta = 1)
new_data.update(gyr_rad,acc,mag)
new_data.update_imu(gyr_rad,acc)
问题在于我不知道如何检索计算出的新四元数,最好将其设置为新变量,以便我可以将其用于脚本的其余部分。
希望我清楚自己,有人可以帮助我!
谢谢!
答案 0 :(得分:1)
对我来说,以下方法有效:
heading = MadgwickAHRS()
while True:
ninedofxyz = self._ninedof.read()
heading.update(ninedofxyz[0], ninedofxyz[2], ninedofxyz[1])
ahrs = heading.quaternion.to_euler_angles()
roll = ahrs[0]
pitch = ahrs[1]
yaw = ahrs[2]
答案 1 :(得分:0)
MadgwickAHRS还有Quaternion类实现,其中包含用于检索新四元数值的get_q()
。
new_data.quaternion.get_q()