06 Урок. Калибровка магнитометра
Получение сырых данных для калибровки магнитометра
По умолчанию магнитометр не откалиброван, т.е. выдает неточные значения. Уточненные значения можно получить из сырых данных путем калибровки, которая заключается в нахождении матрицы преобразования и вектора смещения.
Более подробно ознакомиться с работой магнитометра вы можете по ссылке: 02 Урок. Знакомство с датчиками.
Подвесьте ОрбиКрафт 3D в токовую рамку. При выполнении программы маховик будет вращать конструктор спутника самостоятельно. После калибровки данные будут отправлены в ПО Houston Application.
Анализ работы программы на С++
В программе используются следующие функции работы с магнитометром.
magnetometer_gyro_set_telemetry_period(mag_num, dt)
- установка периода телеметрии магнитометра и ДУСа с номером магнитометра mag_num и периодом dt
magnetometer_set_offset(mag_num, mag_x, mag_y, mag_z)
- функция задает смещение нуля для магнитометра с номером mag_num в плоскостях x,y,z.
motor_set_speed(0, speed);
- функция устанавливает скорость вращения маховика с номером 0 и скоростью speed
В одноосном ОрбиКрафт 3D номер маховика соответствует 0, в трехосном - от 0 до 2 в зависимости от оси (ось X - 0, ось Y - 1, ось Z -2)
magnetometer_request_raw(mag_num, &mag_x, &mag_y, &mag_z)
- функция, возвращающая сырые данные, измеренные магнитометром с номером mag_num, представляющие собой список из 4 числовых значений. Считанные данные мы помещаем в переменные mag_x, mag_y и mag_z.
В программе использован оператор цикла:
for (int i = 0; i < count; i++)
который будет выполнен n раз, соответственно будет собрано n значений с датчика.
Анализ работы программы на Python
magGyroSetTelemetryPeriod (100, 2)
- установка периода телеметрии магнитометра и ДУСа с номером магнитометра с периодом телеметрии 100 мс
magSetOffset (0, 0, 0)
- функция задает смещение нуля для магнитометра в плоскостях x,y,z.
motorSetSpeed('0xA', speed)
- функция устанавливает скорость вращения маховика 0хА и скоростью speed
mag_x, mag_y, mag_z = lib.magRequestRaw (2)
arrX.append(mag_x)
arrY.append(mag_y)
- функция запрашивает регулярную телеметрию carrier и возвращает список значений магнетометра (x, y, z). Так как в одноосной конфигурации конструктора спутника вращается вокруг оси Z, то в mag_x и mag_y записываются данные по осям x и y.