wunderwaffe: рабочее (Default)
[personal profile] wunderwaffe
По мотивам https://wunderwaffe.dreamwidth.org/44858.html - шаг интегрирования, как оказывается, очень груб если использовать millis() вместо micros()
УПД:ARW стал лучше раза в два. Конечно, тупо интегрировать углы Эйлера - так себе идея, но почему чем меньше амплитуда качаний А, тем больше ARW? Для А~140 град. за 5 мин. уход 3-5 град., для А~10 уход 10-15 градусов? Независимо от оси и гироскопа.


Красная линия - шаг времени (время исполнения цикла loop() в миллисекундах) - если его измерять в micros(), и черная линия - в millis(). Трудно ожидать хороших результатов, если шаг времени скачет случайным образом в полтора раза.


Та же лажа для Madgwick9DOF.ino -
    // Вычисляем затраченное время на обработку данных
    unsigned long deltaMillis = millis() - startMillis;
    // Вычисляем частоту обработки фильтра
    sampleRate = 1000 / deltaMillis;

И для Razor_AHRS.ino -
    timestamp = millis();
    if (timestamp > timestamp_old)
      G_Dt = (float) (timestamp - timestamp_old) / 1000.0f;
      // Real time of loop run. We use this on the DCM algorithm (gyro integration time)
    else G_Dt = 0;

Не знаю, почему - наверно, "Возвращаемое число переполнится (сбросится в 0) спустя приблизительно 70 минут"

Profile

wunderwaffe: рабочее (Default)
доктор Вандершпигель

April 2022

S M T W T F S
     12
34567 89
1011 12 1314 1516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 3rd, 2025 02:02 pm
Powered by Dreamwidth Studios