|
本帖最后由 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[ROLL] = -X; accADC[PITCH] = -Y; accADC[YAW] = Z;}
GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}
可以留意一下,对于 GY-86 模块的 5883 地磁传感器,定义的数据正、负值,与加速度计是相反的。这样与我们正常的理解方式是一致的。
#if defined(GY_86)
#define MPU6050
#define HMC5883
#define MS561101BA
#define ACC_ORIENTATION(X, Y, Z) {imu.accADC[ROLL] = -X; imu.accADC[PITCH] = -Y; imu.accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[ROLL] = Y; imu.gyroADC[PITCH] = -X; imu.gyroADC[YAW] = -Z;}
#define MAG_ORIENTATION(X, Y, Z) {imu.magADC[ROLL] = X; imu.magADC[PITCH] = Y; imu.magADC[YAW] = -Z;}
#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050
#undef INTERNAL_I2C_PULLUPS
#endif
|
|