MWC飞控中MPU6050传感器的方向定义是如何确定的?-Arduino中文社区 - Powered by Discuz! Archiver

wujingyu 发表于 2016-6-19 19:05

MWC飞控中MPU6050传感器的方向定义是如何确定的?

在MWC飞控中,对于MPU6050传感器的方向定义如下:

#if defined(GY_521)
#define MPU6050
#define ACC_ORIENTATION(X, Y, Z){accADC= -X; accADC= -Y; accADC=Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC =Y; gyroADC = -X; gyroADC = -Z;}
#undef INTERNAL_I2C_PULLUPS
#endif

而MPU6050传感器手册上给出的方向定义如下:

请问这两者之间的关系如何理解?请高手给予明示,谢谢!

wujingyu 发表于 2016-6-19 20:52


skypup 发表于 2016-6-20 11:02

本帖最后由 skypup 于 2016-6-20 11:07 编辑

个人观点,纯属猜想,仅供参考:

1 ACC Z 轴,这个最容易理解,由于一直会有重力加速度,芯片平放时是 +Z,翻过来焊在PCB背面时是 -Z(自身重力方向与 Z 轴方向相反)。
2 ACC X 轴,与 Roll 在一条线上。与摇杆方向(飞控定义的正向)一致,数据与 X 轴相反,所以是 -X。
3 ACC Y 轴,与 Pitch 在一条线上。与摇杆方向(飞控定义的正向)一致,数据与 Y 轴相反,所以是 -Y。
4 GYRO Y 轴,这个是 Roll 轴,与摇杆方向(飞控定义的正向)一致,所以是 +Y。
5 GYRO X 轴,这个是 Pitch 轴,与摇杆方向(飞控定义的正向)相反,所以是 -X。
6 GYRO Z 轴,这个是 Yaw 轴,与摇杆方向(飞控定义的正向)相反,所以是 -Z。

综上:
ACC_ORIENTATION(X, Y, Z){accADC= -X; accADC= -Y; accADC=Z;}
GYRO_ORIENTATION(X, Y, Z) {gyroADC =Y; gyroADC = -X; gyroADC = -Z;}


可以留意一下,对于 GY-86 模块的 5883 地磁传感器,定义的数据正、负值,与加速度计是相反的。这样与我们正常的理解方式是一致的。

#if defined(GY_86)
#define MPU6050
#define HMC5883
#define MS561101BA
#define ACC_ORIENTATION(X, Y, Z){imu.accADC= -X; imu.accADC= -Y; imu.accADC=Z;}
#define GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC =Y; imu.gyroADC = -X; imu.gyroADC = -Z;}
#define MAG_ORIENTATION(X, Y, Z){imu.magADC=X; imu.magADC=Y; imu.magADC= -Z;}
#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050
#undef INTERNAL_I2C_PULLUPS
#endif




skypup 发表于 2016-6-20 12:05


做个测试,从上向下看,把传感器按顺时针方向旋转90度。
首先,Z 轴是不受影响的。
Roll 的加速度,是Y的正轴,-Y; 角速度与 X 相反, -X.
Pitch 的加速度,是X的负轴,+X; 角速度与 Y 相反, -Y.
综上:

#define FORCE_ACC_ORIENTATION(X, Y, Z){imu.accADC= -Y; imu.accADC=X; imu.accADC= Z;}
#define FORCE_GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC = -X; imu.gyroADC = -Y; imu.gyroADC = -Z;}
#define FORCE_MAG_ORIENTATION(X, Y, Z){imu.magADC=Y; imu.magADC= -X; imu.magADC= -Z;}

thecrazyboy 发表于 2021-1-5 16:36

skypup 发表于 2016-6-20 11:02
个人观点,纯属猜想,仅供参考:

1 ACC Z 轴,这个最容易理解,由于一直会有重力加速度,芯片平放时是 +Z ...

请教下,飞控的正向你是如何知道的?
页: [1]
查看完整版本: MWC飞控中MPU6050传感器的方向定义是如何确定的?