О пользе нормирования
Oct. 25th, 2021 08:35 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Библиотека от Амперки для магнитометра Troyka получает "сырые" значения, примерно порядка 1000-10000, и ими же оперирует в рассчетах для компенсации магнитных искажений.
Вот какие значения при этом получаются для матрицы трансформации и вектора сдвига -
Чем чреваты нечеловеческие разницы в порядках используемых чисел для потери точности для 4-байтового числа, думаю, обьяснять не надо. Если же перед этим сырые данные пронормировать на ближе к единице, например на 6842 (это как раз "// Sensor sensitivity depending on selectable full scales. Use the datasheet for details") то получится следующая картина -
что намного более лучше. Хотя по сравнению с шумом исходных данных все это ловля блох.
Вот какие значения при этом получаются для матрицы трансформации и вектора сдвига -
const float compassCalibrationBias[3] = {-1421.08798324809, -1147.01338044361, 3653.14367758592}; const float compassCalibrationMatrix[3][3] = {{0.000367003971011327, 0.000010450231840804, -1.49773794242399E-6}, {0.000010450231840804, 0.000397044257103677, -1.77568833316635E-6}, {-1.49773794242399E-6, -1.77568833316635E-6, 0.000393344641295425}};
Чем чреваты нечеловеческие разницы в порядках используемых чисел для потери точности для 4-байтового числа, думаю, обьяснять не надо. Если же перед этим сырые данные пронормировать на ближе к единице, например на 6842 (это как раз "// Sensor sensitivity depending on selectable full scales. Use the datasheet for details") то получится следующая картина -
const float compassCalibrationBias[3] = {-0.215908662832684, -0.168788567435697, 0.5526321801595}; const float compassCalibrationMatrix[3][3] = {{2.51499879971671, 0.09997161517443, 0.01612991810834}, {0.09997161517448, 2.66070736271576, -0.0615722415911}, {0.01612991810834, -0.0615722415911, 2.65815666341927}};
что намного более лучше. Хотя по сравнению с шумом исходных данных все это ловля блох.