Я пытаюсь проанализировать значения, данные от устройства с микросхемой LSM6DSL (гироскопический и соотв.), И мне трудно правильно проанализировать данные для определения местоположения и угла.
Изпродавец Я получил информацию о том, что устройство работает с разрешением 2000 для гироскопа, 8g для соотв.
Я получаю данные в байтах, которые преобразуются следующим образом в шорты;
public int[] BufferToMotionData(byte[] buffer, int segments = 2)
{
int[] motionDataArray = new int[segments * 3];
int offset = Constants.BufferSizeImage + Constants.CommandLength;
for (int i = 0; i < 6; i++)
{
motionDataArray[i] = BitConverter.ToInt16(buffer, offset + (i * 2));
if (motionDataArray[i] >= Int16.MaxValue)
motionDataArray[i] -= 65535;
}
return motionDataArray;
}
(Правка; очищенная версия)
Возвращает значения в диапазоне (пример) 961, -16223, -1635, 664, -269, -597.
Согласно спецификации, я должен умножить каждый вектор на соответствующее ему значение. * 70f для гироскопа, .448f для соотв.
Из документации я понимаю, что для сил G они выражены в миллигахи гироскоп в миллиградусах в секунду?
// Gyro X,Y,Z
gx = Mathf.Deg2Rad * (motionData[0] * 70f / 1000f);
gy = Mathf.Deg2Rad * (motionData[1] * 70f / 1000f);
gz = Mathf.Deg2Rad * (motionData[2] * 70f / 1000f);
// Acc X,Y,Z
ax = motionData[3] * 0.488f / 1000f;
ay = motionData[4] * 0.488f / 1000f;
az = motionData[5] * 0.488f / 1000f;
Update(gx, gy, gz, ax, ay, az);
Обновление (..) - формула кватерниона Мэгвика, хотя для скорости я использую векторы ускорения.
Значения силы G, которые я получаю приэтот момент после расчетаion;
X 0.047824 Y -0.320128 Z 0.006344
X 0.07076 Y -0.2562 Z 0.020008
X 0.099552 Y -0.063928 Z -0.13664
Они выглядят ужасно низкими, и если их применять как скорость, они просто убегают в заданном направлении, я знаю, что мне не хватает правильной гравитации, хотя я не совсем уверен, как это применить.
Я предполагаю, что мне не нужно применять перетаскивание к моему вектору скорости, так как значения должны быть сведены на нет полученными значениями ускорения?
Кто-нибудь имеет опыт работы с чипом этого типа и фактически применяетзначения рыскания / тангажа / крена (или кватерниона) и применения сил G как линейного ускорения.