Перейти к основному содержимому

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')