Paprika 发表于 2017-8-3 12:59:46

关于6050姿态解算部分的疑问


我的理解是两个函数里面是不是都解算出了Pitch角一个应用了陀螺仪和加速度计进行的解算一个是用四元数结算的,不知道我的理解是否正确
想请教一下如何用图二中的方法解算Roll和Yaw角就是
Gyro_Y=(I2C_ReadOneByte(devAddr,MPU6050_RA_GYRO_YOUT_H)<<8)+I2C_ReadOneByte(devAddr,MPU6050_RA_GYRO_YOUT_L);   
Accel_Z=(I2C_ReadOneByte(devAddr,MPU6050_RA_ACCEL_ZOUT_H)<<8)+I2C_ReadOneByte(devAddr,MPU6050_RA_ACCEL_ZOUT_L);   
Accel_X=(I2C_ReadOneByte(devAddr,MPU6050_RA_ACCEL_XOUT_H)<<8)+I2C_ReadOneByte(devAddr,MPU6050_RA_ACCEL_XOUT_L);
               if(Gyro_Y>32768)Gyro_Y-=65536;   
                if(Accel_Z>32768)Accel_Z-=65536;   
                  if(Accel_X>32768) Accel_X-=65536;   
                   Accel_Y=atan2(Accel_X,Accel_Z)*180/PI;               
                Gyro_Y=Gyro_Y/16.4;                                 
                  Kalman_Filter(Accel_Y,-Gyro_Y);
这段程序如何更改;可以得到Roll和Yaw
谢谢各位大神这个问题我查了好多资料都没有结果。希望可以得到解答。                        

WWcool 发表于 2017-9-13 11:58:42

我也是最近刚开始研究这个,根据这个程序上的公式可以发现,这个公式是可以计算俯仰角和横滚角的。也就是yaw,和roll可以这样算。

WWcool 发表于 2017-9-13 12:11:09

用卡尔曼滤波方法的话我对程序的理解是这样的,先算出这个Accel_Angle,        Accel_Angle=atan2(Accel_Y,Accel_Z)*180/PI;然后呢对陀螺仪数据进行量程转换Gyro_X=Gyro_X/16.4;然后就是通过卡尔曼滤波的函数算出角度Kalman_Filter(Accel_Angle,Gyro_X);

admin 发表于 2017-10-10 20:38:52

卡尔曼得到了一个轴了,使用另外一轴的陀螺仪和加速度计,做一次卡尔曼,得到另外一轴的即可。
页: [1]
查看完整版本: 关于6050姿态解算部分的疑问