Arduino - filtering values (Arduino Kalman filter)

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

ความคิดเห็น •

  • @WakeUp4L1fe
    @WakeUp4L1fe 8 ปีที่แล้ว +57

    На счет того, что Excel не любит точки в качестве разделителя. Изменить это можно в Панели управления -> Язык -> Изменение форматов даты, времени и чисел -> Дополнительные параметры -> Разделитель целой и дробной части.

    • @ArduNotes
      @ArduNotes  8 ปีที่แล้ว +23

      ооох, спасибо!

    • @alexeyishkov2236
      @alexeyishkov2236 7 ปีที่แล้ว +4

      А еще заменить точки на запятые можно все также через ctrl+H в экселе, предварительно изменив формат ячеек на текстовый.

    • @unun5923
      @unun5923 6 ปีที่แล้ว +4

      Это повлияет на все настройки системы и программ в ОС.
      Проще в настройках экселя принудительно указать разделитель точку (или другой символ). Как правило это и нужно только в экселе.
      Работает во всех экслеях. В последнем 2016 экселе, параметры - дополнительно - убираем галочку с использовать системные разделители и вводим в окошко необходимый знак разделителя.

    • @rusundevelopment7674
      @rusundevelopment7674 5 ปีที่แล้ว

      Угу. Или поменять локаль на какую-нить нерусскую англо-саксонскую. Откуда этот разделитель точка и пришёл.

  • @Dimonewave
    @Dimonewave 8 ปีที่แล้ว +5

    Спасибо, очень ценная информация для меня, а то квадрик собрал на меге, а его колбасит, никакой стабилизации, хорошо, что есть такие светочи, ещё раз Спасибо!!!

  • @алексейпетров-ф2р
    @алексейпетров-ф2р 7 ปีที่แล้ว +35

    Чувак, у тебя этот фильтр работает как простой экспоненциальный фильтр, так как коэффициент фильтра только в начале меняется, а потом стабилизируется и не зависит от сигнала )

    • @ClydeSimonSound
      @ClydeSimonSound 6 ปีที่แล้ว +8

      @@InterdimensionalHypnofuc-ee1gf А что он не так написал?

  • @Tatarnikow
    @Tatarnikow 8 ปีที่แล้ว +3

    Вышей класс! Давно искал подобный филтр. Большое спасибо!

  • @mrgensys
    @mrgensys 5 ปีที่แล้ว +1

    Супер! Вещь полезная, хотел по умничать, но в комментариях уже все описали ))))

  • @yatest1883
    @yatest1883 5 ปีที่แล้ว +1

    Если в настройках Виндовс, а именно в разделе "Языковые настройки" указать в качестве разделителя точку, а не запятую, то Excel будет работать с точками.

  • @rudolfsikorsky7900
    @rudolfsikorsky7900 7 ปีที่แล้ว +27

    КМК, если канал обучающий, то стоило бы хотя бы кратко объяснить физический смысл данного фильтра, как именно он работает. И как работают эти два коэффициента.
    А то получается магия: сюды суёшь, вот тут пристукни и чё-то-там получишь. Вроде, работает, а как - непонятно.
    ЗЫ: мне было бы лень гуглить фильтр и я бы сделал свой собственный велосипед :)))

  • @azlkalive7816
    @azlkalive7816 5 ปีที่แล้ว +1

    Вопрос по фильтру...
    Можно ли профильтровать прерывания?
    Дребезг контактов при считывании оборотов двигателя с контактного зажигания

  • @yasmaxi
    @yasmaxi 7 ปีที่แล้ว +2

    Точки или запятые в Экселе настраиваются в региональных настройках.

  • @tellator
    @tellator 2 ปีที่แล้ว

    Интересно, такой фильтр подойдёт для детекта, скажем, открытия/закрытия двери? Поставить пару датчиков и, если на обоих резкое изменение, подаём сигнал

  • @ИскендерТилекматов
    @ИскендерТилекматов 7 ปีที่แล้ว

    Жду еще от тебя подобные видео

  • @Eugene_Yav
    @Eugene_Yav 10 หลายเดือนก่อน

    Спасибо за видео. А если не заниматься *ексом с Кальманом, а банально, считать среднюю за какой-то период?

  • @Koldim2001
    @Koldim2001 3 ปีที่แล้ว

    Подскажи плс а как ты останавливаешь на время поток данных в serial? Ты вроде на какую-то кнопку нажимаешь чтоб остановить графики и поменять значения перед продолжением работы

  • @elenapoplos9537
    @elenapoplos9537 4 ปีที่แล้ว

    Спасибо за видео и советы

  • @alex_1809-s
    @alex_1809-s 5 ปีที่แล้ว

    Я просто в шоке!!!! Класс!!!! Мое почтение автору!!!

  • @ainurerlankyzy9540
    @ainurerlankyzy9540 2 ปีที่แล้ว

    Здравствуйте, автор. Фильтром Калман-Бьюси можно оценивать энергетические параметры канала LTE стандарта?

  • @DrHelp-nf8rd
    @DrHelp-nf8rd 6 ปีที่แล้ว

    Огромное спасибо! Очень пригодилось

  • @helixdean3622
    @helixdean3622 8 ปีที่แล้ว

    Шик, то что нужно для дипломной)

  • @gennadiyastykevich1187
    @gennadiyastykevich1187 5 ปีที่แล้ว +1

    Можно проще:
    при объявлении alt выставляем 0.
    float k=0..1; (скорость реакции , подобрать)
    alt=k*(bmp.readAltitude()-baseline)+(1-k)*alt;
    фильтр получаем практически такой же, а констант на 7 меньше, что экономит 28 байт.
    фильтры проверял в Exel drive.google.com/file/d/1LxZQXgJ3dzRc-Bv73d3N13rm5gVoCvOJ/view?usp=sharing

  • @Lubinetsm
    @Lubinetsm 8 ปีที่แล้ว +10

    Чтобы избавиться от пиков, можно использовать медианный фильтр

    • @ArduNotes
      @ArduNotes  8 ปีที่แล้ว +6

      +Михаил Лубинец спасибо, почитаю что за зверь такой

    • @ArduNotes
      @ArduNotes  8 ปีที่แล้ว +4

      +Михаил Лубинец спасибо, почитаю что за зверь такой

  • @АлександрК-ь7ш
    @АлександрК-ь7ш 5 ปีที่แล้ว

    А можно таким образом вывести синхронизацию датчика распредвала по датчику коленвала?

  • @EEEppt
    @EEEppt 6 ปีที่แล้ว +1

    а если сделать фильтр фильтра с разными скоростями реакции? возможно получится более точно подстроить.

    • @fAtAlSVEN
      @fAtAlSVEN ปีที่แล้ว

      если увеличить коэффициент, получим тот же результат. коэффициенты просто перемножатся.

  • @PudLixa
    @PudLixa 8 ปีที่แล้ว +22

    Минут двадцать фтыкал в эту странную функцию... Или я чего-то не понимаю, или: переменные Хр и Zp не рекурсивные, следовательно Zp=Xp=Xe ВСЕГДА. Выкидываем с чистой совестью лишнее, подставляем Xe в формулу, раскрываем скобки: Xe=G*val+(1-G)*Xe. Так проще, экономичнее по памяти и смысл лучше читается. Далее к расчету коэффициента G: при его расчете учитывается только предыдущее значение коэффициента, сами фильтруемые значения в расчете не участвуют. Таким образом, при любой последовательности значений, коэффициенты будут считаться всегда одинаково для одинаковых varVolt и varProcess. Попробуйте вывести на график также значение G - подозреваю, оно после переходного процесса сойдется к некоторой константе. Если это так и учитывая, что varProcess мы все равно подбираем на глазок, можно отказаться от расчета среднего отклонения в экселе, да и весь расчет G отправить на свалку. Тогда вся функция сведется к одной строчке: Xe=varProcess*val+(1-varProcess)*Xe и работать, думаю, будет не хуже)

    • @zakharyaroslav6011
      @zakharyaroslav6011 8 ปีที่แล้ว +3

      абсолютно те же мысли были при просмотре) я даже давече работав с фильтром Калмана не сразу въехал, где тут что и чему в теории соответствует) вообще запись "Xe=G*val+(1-G)*Xe" - самая правильная и читаемая, так как выражает базовую идею данного фильтра.
      и почему "G" - тоже не очень понятно) эту штуку зовут коэффициентом Калмана и обозначают - барабанная дробь - буквой "К")

    • @ArduNotes
      @ArduNotes  8 ปีที่แล้ว +1

      а случайно это не будет low pass filter?

    • @zakharyaroslav6011
      @zakharyaroslav6011 8 ปีที่แล้ว +5

      Ну в каком-то смысле будет, да, это даже на вашем графике видно, но это собственно то, во что вырождается фильтр калмана при таком сильном упрощении. А конкретно то, как комментатор выше записал сокращенное выражение - и есть канонический вид фильтра К, разве что без управляющего воздействия (оно в данном варианте списано в неизвестные)

    • @alexdark7421
      @alexdark7421 8 ปีที่แล้ว +8

      Да, получится апериодический фильтр 1-ого порядка (его дискретный эквивалент).Такой фильтр описывается передаточной функцией вида: 1/(T*p+1), единственный настраиваемый параметр -- постоянная времени Т. Фильтр Калмана в столь вырожденном виде нет смысла применять.

    • @barmaley1980
      @barmaley1980 4 ปีที่แล้ว

      @@ArduNotes Вот поэтому я и не люблю такие простые библиотеки. Библиотеку обозвали фильтром Калмана, а на самом деле засунули обыкновенное скользящее среднее.

  • @yaroslavantonchyk5442
    @yaroslavantonchyk5442 5 ปีที่แล้ว

    Спасибо, очень помог)

  • @feyfolkenkm7271
    @feyfolkenkm7271 5 ปีที่แล้ว

    А если требуется хорошая сглаженность и при этом высокое время отклика, можно ли, как вариант, сглаживать в два этапа? Сперва сглаживаем исходные данные, а потом сглаживаем уже их, и всё это с требуемым высоким временем отклика.

    • @odissey2
      @odissey2 3 ปีที่แล้ว

      Можно сделать последовательную цепочку фильтров, например экспоненциального сглаживания. Количество фильтров в цепочке (порядок фильтра) 5-8, а частота отсечки (LPF) - примерно частоте синусоиды сигнала, так что через одиночный фильтр синус проваливается почти без потерь (правда, и шум тоже фильтруется абы как). Децимации быть не должно, то есть на каждый входной сэмпл получаем один выходной. Особенность такого составного фильтра - сильное подавление сигналов с частотой выше Fs/4, и он относительно короткий.

  • @biriuk3344
    @biriuk3344 8 ปีที่แล้ว

    А почему в приведенном примере используется смещённое отклонение (СТАНДОТКЛОН.Г)? Мне кажется, что логичнее использовать несмещённое (СТАНДОТКЛОН.В), в чём моя ошибка?

  • @TargetLambda
    @TargetLambda 5 ปีที่แล้ว

    А если применять фильтр, уже к фильтрованному сигналу , что бы и всплески были и было гладко ?

    • @Андрейберез-э4и
      @Андрейберез-э4и 3 ปีที่แล้ว

      тогда на резкие изменения график будет еще меньше реагировать. Вы же можете поставить тот коефициент насколько малым, что график будет очень плавным, но не будет нормально реагировать на скачки.

  • @diraimer
    @diraimer 7 ปีที่แล้ว

    Отлично!

  • @MrCrystan
    @MrCrystan 8 ปีที่แล้ว

    Шедеврально!

  • @Deniseich
    @Deniseich 5 ปีที่แล้ว

    для такого я бы написал 1-2строчный свой фильтр :) а не гуглил бы сверхматематический.
    например у нас есть x который берется в каждом проходе лупа float x = analogRead чето там
    до функций делаем переменную float xSmoothed = 0;
    в лупе делаем -
    float smoothSpeed = 0.001;
    float xSmoothed = xSmoothed + ((x - xSmoothed) * smoothSpeed);
    я так сглаживал пару дней назад слишком резкие движения сервы и отлично :)

  • @alexthebear
    @alexthebear 8 ปีที่แล้ว

    При импорте файла можно просто выбрать какой там разделитесь. Даже ничего менять не нужно!

  • @quangnguyen-dx8jo
    @quangnguyen-dx8jo 7 ปีที่แล้ว

    great. Thank you very much!

  • @Stardisk
    @Stardisk 8 ปีที่แล้ว

    а как именно ты создавал резкие скачки атмосферного давления?

    • @hotabbych
      @hotabbych 8 ปีที่แล้ว

      просто дунул на датчик

    • @ArduNotes
      @ArduNotes  8 ปีที่แล้ว +7

      наоборот втянул)

  • @KimVitaliy37
    @KimVitaliy37 7 ปีที่แล้ว

    День добрый уважаемый Alex !
    Вы не подскажите : работаю с датчиком mpu6050 и скетчем (нашёл в сети):
    // подключение библиотек
    #include "I2Cdev.h"
    #include "MPU6050.h"
    #include "Wire.h"
    #define TEMP_ADDR 72
    MPU6050 accelgyro;
    int16_t ax, ay, az;
    int16_t gx, gy, gz;
    void setup()
    { Serial.begin(9600);
    Wire.begin();
    // инициализация
    Serial.println("Initializing I2C devices...");
    accelgyro.initialize();
    delay(100);
    }
    void loop()
    {
    // чтение значений гироскопа и акселерометра
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
    // вывод значений в монитор
    // Serial.print("a/g:\t");
    //Serial.print("Giro:\t");
    // Serial.print(ax); Serial.print("\t");
    // Serial.print(ay); Serial.print("\t");
    // Serial.print(az); Serial.print("\t");
    Serial.print(gx); Serial.print("\t");
    Serial.print(gy); Serial.print("\t");
    Serial.println(gz);
    }
    Данные этот скетч выдает не фильтрованные . Скачут значения . График строится вроде нормально . Я хочу прикрутить фильтр Калмана как у Вас . Написал вот так :
    #include "I2Cdev.h"
    #include "MPU6050.h"
    #include "Wire.h"
    MPU6050 accelgyro;
    int16_t ax, ay, az;
    int16_t gx, gy, gz;
    float filtered_gx = 0.0;
    // переменные для калмана
    float varVolt = -28.26; // среднее отклонение (ищем в excel)
    float varProcess = 0.1; // скорость реакции на изменение (подбирается вручную)
    float Pc = 0.0;
    float G = 0.0;
    float P = 1.0;
    float Xp = 0.0;
    float Zp = 0.0;
    float Xe = 0.0;
    // переменные для калмана
    void setup()
    {
    Serial.begin(1200);
    Wire.begin();
    // инициализация
    Serial.println("Initializing I2C devices...");
    accelgyro.initialize();
    delay(100);
    }
    void loop()
    {
    // чтение значений гироскопа и акселерометра
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
    //функция фильтрации
    float filtered_gx = filter(gx);
    // вывод значений в монитор
    //Serial.print("Giro:\t");
    //Serial.print(ax); Serial.print("\t");
    //Serial.print(ay); Serial.print("\t");
    //Serial.print(az); Serial.print("\t");
    Serial.print(gx); Serial.print("n");
    Serial.print(filtered_gx); Serial.print("n");
    //Serial.print(gy); Serial.print("\t");
    //Serial.println(gz);
    }
    float filter(float val){ //функция фильтрации
    Pc = P + varProcess;
    G = Pc/(Pc + varVolt);
    P = (1-G)*Pc;
    Xp = Xe;
    Zp = Xp;
    Xe = G*(val-Zp)+Xp; // "фильтрованное" значение
    return(Xe);
    }
    Но значения в Мониторе Порта идут(бегут) в ряд , а не в столбцы .
    Не знаете как исправить ?

    • @ArduNotes
      @ArduNotes  7 ปีที่แล้ว +1

      +† там в самом мониторе надо либо галочку поставить какуюто, либо режим выбрать. Либо переписать код так, чтобы были println и пробелы вместо знаков табуляции, как у вас

    • @KimVitaliy37
      @KimVitaliy37 7 ปีที่แล้ว +1

      Да ! Вы правы ! Спасибо ! Оказывается надо было вот так : вместо Serial.print("\t"); писать Serial.print(0x0A)

  • @sk000rp
    @sk000rp 7 ปีที่แล้ว

    В тему простых фильтров рекомендую попробовать AB фильтр. Фишка его в том что он инерциальный и сохраняет свою скорость. С помощью калмана такое значительно сложнее сделать.

    • @NyyphoHerr-3D-panorama
      @NyyphoHerr-3D-panorama 6 ปีที่แล้ว

      Если разбираетесь, подскажете, как сделать (как создать или найти готовый фильтр), чтобы рост (резкий рост получался очень плавным) показаний сглаживался с одним коэффициентом, Падение - другим коэффициентом (Резкое падение оставалось резким), но при этом был третий коэффициент, отвечающий за сглаживание мелких дрожаний?
      Помогите пожалуйста. ООочень нужно, сам не справляюсь. (можно в личку на vk.com/write226228)

    • @sk000rp
      @sk000rp 6 ปีที่แล้ว +1

      Такой фильтр можно самому запрограммировать на основе AB фильтра. Например, вам пришло более маленькое значение. Изменяете параметры фильтра(увеличиваете чувствительность), и скармливаете ему новое значение. Два первых пункта тогда будут выполнятся. Если для начала сделаете так, то потом возможное придет идея как сделать "третий параметр".

    • @NyyphoHerr-3D-panorama
      @NyyphoHerr-3D-panorama 6 ปีที่แล้ว

      Александр Гращенков, спасибо.
      Правда ничего не удалось по делу нагуглить по тому, "что такое AB фильтр" и о реализации этого на Си.

    • @sk000rp
      @sk000rp 6 ปีที่แล้ว +1

      en.wikipedia.org/wiki/Alpha_beta_filter

  • @DickEagleDeagle
    @DickEagleDeagle 2 ปีที่แล้ว +1

    Санечка вами недоволен

  • @DenisRo61
    @DenisRo61 8 ปีที่แล้ว

    Не попадались ли вам способ, как отфильтровать 50 Гц на АЦП ардуины?

    • @wit-iliar
      @wit-iliar 8 ปีที่แล้ว

      Самый правильный способ считать среднеквадратичное значение. То есть возводим результат измерения в квадрат, вычисляем среднее значение квадратов за множество измерений, потом вычисляем квадратный корень из результата. То есть если у нас есть сигнал с частотой 50 герц и амплитудой 311 вольт, то вычислив его среднеквадратичное значение мы как раз получим те 220 вольт которые у нас в розетке. Но этот способ довольно ресурсоемкий и в мультиметрах часто ставят микросхему RMS to DC преобразователя, которая на выходе дает постоянное напряжение соответствующее среднеквадратичному значению.

    • @ArduNotes
      @ArduNotes  8 ปีที่แล้ว

      +Denis Primo не понял. Нужно изменять частоту?

    • @DenisRo61
      @DenisRo61 8 ปีที่แล้ว

      Ситуация: на вход АЦП поступает сигнал, на него наводится паразитные 50Гц от сети 220В. Задача - программно убрать эту наводку.

    • @wit-iliar
      @wit-iliar 8 ปีที่แล้ว

      Denis Primo А можешь показать схему. А то сдается мне, что гораздо проще эту проблему решить аппаратно.

    • @MrCrystan
      @MrCrystan 8 ปีที่แล้ว

      конденсатор ставь. I = C dV/dt. там около 60uF Переменка же)

  • @ОлегФролов-е8й
    @ОлегФролов-е8й 8 ปีที่แล้ว +2

    Где ж ты был 6 месяцев назад =(

  • @crazysova
    @crazysova 6 ปีที่แล้ว +3

    Я просто вывожу средние за 10 последних изменений. Делаю массив из 10 элементов и заполняю их по кругу.

    • @mark05071977
      @mark05071977 6 ปีที่แล้ว +2

      Немного эффективнее брать не 10 значений, а например, 8 или 16, вобщем количество измерений должно быть кратно степени 2, тогда делить можно просто сдвигая вправо. Конечно, это имеет значение, если вы сначала считаете сумму всех элементов, а потом делите. ;)

    • @johnnesch9189
      @johnnesch9189 6 ปีที่แล้ว +1

      @@mark05071977 эффективно брать то значение, в какой среде и для чего берутся данные. Например, такую скользящую среднюю применяют в биржевой торговле. Берут значения 7, 14, 21 кратное неделям или 90 кратное кварталу

    • @MsVasia123
      @MsVasia123 4 ปีที่แล้ว

      @@mark05071977 вместо деления лучше умножеть всегда, например не А=Б/10 лучше А=Б*0.1

  • @TheShedevri
    @TheShedevri 6 ปีที่แล้ว

    красавчик

  • @swasy5179
    @swasy5179 7 ปีที่แล้ว

    Ексель любит смотреть в настройки языка и стандартов а не то что он любит точку или запятую. Что там есть то так и будет отображаться)

  • @elektrik_shemotehnik
    @elektrik_shemotehnik 2 ปีที่แล้ว +1

    Архив пропал!!!

  • @cornel065
    @cornel065 2 ปีที่แล้ว

    Где я могу скачать exel файл😒

  • @glitch6673
    @glitch6673 8 ปีที่แล้ว

    Я новичок в этой сфере! Можете подсказать для чего могут понадобится графики?

    • @jekis01
      @jekis01 8 ปีที่แล้ว +1

      Либо для визуального понимание результата работы датчиков, либо, если графики требуются в интерфейсе управления чем-либо.

    • @glitch6673
      @glitch6673 8 ปีที่แล้ว

      Спасибо)

  • @motrosoff9199
    @motrosoff9199 7 ปีที่แล้ว

    Много искал так и не нашёл! Как запускать ардуино с отдельной кнопки!! Как это сделать???

    • @ArduNotes
      @ArduNotes  7 ปีที่แล้ว +1

      +ЧтоДаКак выключатель по питанию

  • @__ivandrago__
    @__ivandrago__ 4 ปีที่แล้ว

    Есть кто может написать частотный фильтр на STM32 нужно отрезать лишние частоты и шумы с пьезоэлектрического микрофона и воспроизводить отфильтрованный сигнал на гарнитуру(наушники)?

  • @biriuk3344
    @biriuk3344 8 ปีที่แล้ว

    Zp=Xp! Может, удалить одно из них, если они тождественны?

    • @dmitriibannikovasx
      @dmitriibannikovasx 5 ปีที่แล้ว

      это не равно, а присвоить)

  • @skiffu
    @skiffu 6 ปีที่แล้ว

    Хотел использовать для фильтрации сигнала с RC приемника, но ничего не сработало сигнал с фильтром абсолютно такой же "шумный" как и без фильтра

  • @ainthecar5047
    @ainthecar5047 4 ปีที่แล้ว +1

    оставлю ка 112 коммент =)

  • @obsurdiloqium
    @obsurdiloqium 3 ปีที่แล้ว

    вообще-то существует такое понятие как ГИСТЕРЕЗИС,
    которое намного проще и понятнее фильтра Калмана,
    спрашивается - зачем огород городить, или заниматься тем, что не понимаешь?
    а с ГИСТЕРЕЗИСОМ разобраться довольно просто
    и поэтому при его применении можно ОСОЗНАНО писать код, понимая что делаешь.
    просто задаёте величину изменения в ПЛЮС и МИНУС при коротком отрезке времени,
    на которое система НЕ БУДЕТ РЕАГИРОВАТЬ - всё гениальное просто )))

    • @ArduNotes
      @ArduNotes  3 ปีที่แล้ว

      а теперь попробуй прикрутить гистерезис к процессу например для ПИД регулятора, вот потеха то будет =) Все та кие умные, а элементарных вещей не понимают

    • @obsurdiloqium
      @obsurdiloqium 3 ปีที่แล้ว

      @@ArduNotes просто делаете ДИСКРЕТНУЮ РЕАЛИЗАЦИЮ, то-есть для каждого значения P, I, D высчитываете своё значение, при этом ГИСТЕРЕЗИС (интервал шума, ошибки) у каждого значения свой, затем все значения складываете и сравниваете с прошлым результатом, если он ОТЛИЧАЕТСЯ, значит БЫЛО СОБЫТИЕ и вы вносите изменения в систему.

  • @LeoMaineCoonCat
    @LeoMaineCoonCat 7 ปีที่แล้ว +19

    Древне эльфийский)))))

  • @МихаилБондарь-ф9н
    @МихаилБондарь-ф9н 7 ปีที่แล้ว

    Для Excel 2007 функция называется СТАНДОТКЛОНА

  • @sallevan
    @sallevan 5 ปีที่แล้ว

    Ну да, здесь фильтрация по Калману -- это из пушки по воробьям. :)
    Фильтр Калмана хорош, когда значения, которые нужны отфильтрованными, зависят от измеряемых параметров не самым простым способом -- например, нам необходимо застабилизировать координату, мы знаем Ньютоновы параметры (начальную скорость, начальную координату и основную часть ускорения), и у нас есть источник поправки к ускорению (акселерометр), который "работает не очень хорошо", то есть, его данные содержат значительную случайную компоненту.

  • @NyyphoHerr-3D-panorama
    @NyyphoHerr-3D-panorama 6 ปีที่แล้ว

    А как сделать (какое выражение замутить в фильтре), чтобы рост (резкий рост получался очень плавным) показаний сглаживался с одним коэффициентом, Падение - другим коэффициентом (Резкое падение оставалось резким), но при этом был третий коэффициент, отвечающий за сглаживание мелких дрожаний?
    Помогите пожалуйста. ООочень нужно, сам не справляюсь. (можно в личку на vk.com/write226228)

    • @ClydeSimonSound
      @ClydeSimonSound 6 ปีที่แล้ว

      Нет такой страницы в вк

  • @DeltaDesignRus
    @DeltaDesignRus 7 ปีที่แล้ว +1

    Что я только не пробовал,но плоттер не рисует графики.

    • @ARIMF
      @ARIMF 6 ปีที่แล้ว +1

      У меня сразу запустился. Главное соблюдать синтаксис при выводе переменных (предыдущее видео) и помнить что он не умеет во Флоаты, только инты

  • @mkfk52
    @mkfk52 8 ปีที่แล้ว

    если фильтровать шумы аппаратно, то скорость реакции будет один к одному.

    • @АлёнаСимакова-ф6д
      @АлёнаСимакова-ф6д 7 ปีที่แล้ว +1

      Не будет. Аппаратные фильтры точно так же изменяют ФЧХ, кроме того, аппаратно невозможно получить фильтры с КИХ. Ну и, конечно, же внутренняя периферия микроконтроллера сама вносит шумы в измерения АЦП (таймеры, например). Так что все же лучше изучать цифровые фильтры.

  • @aidagamemnon
    @aidagamemnon 5 ปีที่แล้ว

    Скользящую среднюю применили бы и всего делов.

    • @MsVasia123
      @MsVasia123 4 ปีที่แล้ว

      ага, тоже дрючился с фильтрами и всяким умничанием типа выбрасывания крайних значений - скользящее среднее просто и четко работает.

    • @barmaley1980
      @barmaley1980 4 ปีที่แล้ว

      Так в этом "простом Калмане" и применена скользящая средняя, если внимательно присмотреться к коду функции. Калманом там и не пахнет, либо он сильно вырожден.

  • @АлександрФ-ъ5ь
    @АлександрФ-ъ5ь 7 ปีที่แล้ว

    Можно, наверное, использовать этот датчик вместо микрофона

  • @PHPLanceRU
    @PHPLanceRU 7 ปีที่แล้ว

    Нафига его фильтровать сглаживанием? Его фильтровать можно обычным порогом.

  • @павелжестянщик-б2ъ
    @павелжестянщик-б2ъ 8 ปีที่แล้ว

    класс но для меня пока сложно....

  • @serdarbahadr4211
    @serdarbahadr4211 6 ปีที่แล้ว

    dostum çok iyisin bu işi bir de PID için yapsan harika olur

  • @Paramore1999
    @Paramore1999 4 ปีที่แล้ว

    скользяшка)

  • @wadyn95
    @wadyn95 4 ปีที่แล้ว

    Точки можно заменить написав пару строк...
    И среднее посчитать пиздец не рокет сайенс даже на ардуино

  • @masterkybik
    @masterkybik 7 ปีที่แล้ว +2

    это не фильтр Калмана.

    • @Muerte_S
      @Muerte_S 6 ปีที่แล้ว

      лол а что же это))))))))))

    • @barmaley1980
      @barmaley1980 4 ปีที่แล้ว

      @@Muerte_S очень похоже на скользящее среднее. Либо этот Калман уж слишком вырожден.

  • @mark05071977
    @mark05071977 6 ปีที่แล้ว

    Имеет право на жизнь. Однако, оперируя флоатами, вы раздуваете код и ухудшаете быстродействие программы. ИМХО, везде где только можно нужно стараться обходиться целыми числами.

    • @smprohd
      @smprohd 6 ปีที่แล้ว

      для ардуины есть библиотеки для вычислений с фиксированной точкой

    • @dmitriibannikovasx
      @dmitriibannikovasx 5 ปีที่แล้ว

      @@smprohd библиотеки сами в свою очередь раздувают код)

  • @schabanow
    @schabanow 4 ปีที่แล้ว

    Как-то с Экселем вы... Через жопу гланды... Выделяем столб с цифирью. Данные / Текст по столбцам. И выбираем разделители, какие нравятся... Какие-то танцы с блокнотами...

  • @mikhailgritsan4627
    @mikhailgritsan4627 5 ปีที่แล้ว

    С фоторезистором ничего внятного не вышло. Он управляет светодиодом. В полумраке из_за скачков мерцает светодиод. С этим фильтром получил вообще стробоскоп.

  • @alexanderm6862
    @alexanderm6862 5 ปีที่แล้ว

    Такой вариант гораздо удобнее использовать github.com/someWhoAnon/SimpleFilter

  • @bir52k1kv178
    @bir52k1kv178 5 ปีที่แล้ว +1

    Лучший фильтр это медиана) я так думаю, особенно для лядских уз датчиков которые любят врать)

    • @penatoliy
      @penatoliy 3 ปีที่แล้ว

      Лучшие фильтры, это те что используют матмодель процесса. Это или нелинейный фильтр калмана или фильтр частиц.

  • @LitAlexV
    @LitAlexV 4 ปีที่แล้ว +1

    Фийня это полная, а не фильтр Калмана. Это обычный Low Pass Filter X = X*k + V * (1-k).

  • @RogovAB
    @RogovAB 5 ปีที่แล้ว +3

    float в ардуино?? Серьезно? В фильтре? Просто дичь.

  • @Tarik91011
    @Tarik91011 2 ปีที่แล้ว

    Архив пропал!!!

  • @Tarik91011
    @Tarik91011 2 ปีที่แล้ว

    Архив пропал!!!

  • @Tarik91011
    @Tarik91011 2 ปีที่แล้ว

    Архив пропал!!!

  • @Tarik91011
    @Tarik91011 2 ปีที่แล้ว

    Архив пропал!!!