Подскажите плз, кто сталкивался с этим девайсом (9 осевой датчик, акс, гир и компас).
Не могу скомпенсировать углы наклона компаса.
Компенсирую по формулам:
angle_x_accel = atan(ax / (sqrt(ay * ay + az * az))); // * (float) rad2degree;
angle_y_accel = atan(ay / (sqrt(ax * ax + az * az))); // * (float) rad2degree;
angle_z_accel = atan(az / (sqrt(ax * ax + ay * ay))); // * (float) rad2degree;
float magAngle = atan2(my, mx);
float roll = angle_x_accel; // углы через арктангенсы проекций акса
float pitch = angle_y_accel; //
float cosRoll = cos(roll);
float sinRoll = sin(roll);
float cosPitch = cos(pitch);
float sinPitch = sin(pitch);
float Xh = mx * cosPitch + mz * sinPitch;
float Yh = mx * sinRoll * sinPitch + my * cosRoll - mz * sinRoll * cosPitch;
float magAngle2 = atan2(Yh, Xh);
Математика вроде правильная, оси акса перенес в оси компаса (изначально они развернуты друг относительно друга), углы наклона с акса правильно считаются, но компенсации не происходит.
То есть, при наклоне девайса значения скомпенсированые и нескомперсированные значения изменяются, синхроннно.
Магнетомерт и акс калибруются, в горизонтальном положении компас работает правильно.
Вот так вот. Прошу знающих помочь или подсказать.