06 Урок. Калибровка датчика угловой скорости (ДУСа)
По умолчанию ДУС не откалиброван и выдает неточные значения. Как мы уже знаем из предыдущих уроков, космический аппарат получает необходимую информацию об ориентации по датчику угловой скорости и магнитометру.
к сведению
Более подробно ознакомиться с работой датчика угловой скорости (ДУС) вы можете по ссылке: 02 Урок. Знакомство с датчиками.
Для его калибровки и дальнейшей точной работы можно воспользоваться программой ниже.
Код на C++:
#include <stdio.h>
#include <stdint.h>
#include "libschsat.h"
void control(void){
float gyro_x = 0, gyro_y = 0, gyro_z = 0;
uint16_t tmp=0;
Sleep(1);
gyro_set_offset(tmp, gyro_x, gyro_y, gyro_z);
Sleep(1);
gyro_request_raw(tmp, &gyro_x, &gyro_y, &gyro_z);
printf("Before fix:\n %f %f %f", gyro_x, gyro_y, gyro_z);
Sleep(1);
gyro_set_offset(tmp, gyro_x, gyro_y, gyro_z);
Sleep(1);
gyro_request_raw(tmp, &gyro_x, &gyro_y, &gyro_z);
printf("\nAfter fix:\n %f %f %f \n", gyro_x, gyro_y, gyro_z);
uint8_t data[0];
send_unican_message(25, 2656, data, 0);
}
Код на Python:
from libschsat import Libschsat
import time
lib=Libschsat()
time.Sleep(1)
lib.gyroSetOffset(0, 0, 0)
time.Sleep(1)
gyro_x, gyro_y, gyro_z=lib.gyroRequestRaw(2)
print('Before fix' + str(gyro_x) + ';' + str(gyro_y) + ';' + str(gyro_z))
lib.gyroSetOffset(gyro_x, gyro_y, gyro_z)
time.Sleep(1)
lib.gyroRequestRaw(gyro_x, gyro_y, gyro_z)
print('After fix' + str(gyro_x) + ';' + str(gyro_y) + ';' + str(gyro_z))
lib.sendMsgAndWaitAnswer('0xA60','0xF','0x19',0,[],'0x118')