Подключение MPU 9250

Тема в разделе "Arduino & Shields", создана пользователем Artclonic, 6 мар 2018.

  1. evpozdniakov

    evpozdniakov Нуб

    GPS (за деньги которые я готов потратить) не даст нужной точности. Мне нужна точность относительная. Именно поэтому я хочу попробовать использовать данные с MPU 9250 для подсчета пройденного расстояния. Я знаю как это сделать теоретически. Но это высшая математика, нужно ломать голову, а мне лень. Я надеялся найти какое-то готовое решение.
     
  2. Artclonic

    Artclonic Гик

    Выложите плиз..Но у меня то MPU 9250...
    Думаю тут разберусь сам... Только как они должны быть правильно ориетированны? И где в коде выполняется коррекция? Где к примеру, отрицательные значения на положительные меняются? (или эти действия выполняются при выполнении обработки значений) Я возвращусь к моим диаграммам - к повороту вокруг Z, там и значения гироскопа можно сказать нет... У гироскопа - тоже только X и Y?
    Т.е. прикрепленный в файле скетч - не совсем рабочий? Там нет самого фильтра?
    Да к стати очень похожая логика действий в принципе..
     
  3. Artclonic

    Artclonic Гик

    http://x-io.co.uk/gait-tracking-with-x-imu/
    Зная ускорение и время можно найти расстояние

    Если начальная скорость = 0, то S = (a * t^2)/2 (а * t в квадрате делить на 2)

    Если тело имеет начальную скорость, то

    находишь скорость из формулы: V = V0 + a * t

    а потом расстояние можно найти так

    S= V0 * t + (a* t^2)/2

    или

    S =(V^2 - V0^2)/2a

    или

    S = (V+V0)* t/2
     
  4. Sencis

    Sencis Нерд

    Вы полагаете что с помощью IMU датчиков можно получит лучшую точность? Если так то точно не на mpu 9250.
     
  5. Sencis

    Sencis Нерд

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

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

    Код (C++):
    // Функция компенсации наклона датчика
    float tiltCompensate(Vector mag, Vector normAccel) // 2а нормализованных вектора в радианах
    {
      // Pitch & Roll
      float roll; // крен
      float pitch; // тонгаж
      roll = asin(normAccel.YAxis);   //если функцию использовать в другом проекте сюда нужен угол в радианах а магнитометра в мили Гауссах
      pitch = asin(-normAccel.XAxis);

      if (roll > 0.78 || roll < -0.78 || pitch > 0.78 || pitch < -0.78)// при наклоне более 45град компенсация теряет эффективность функция возвращает ошибку.
      {
        return -1000;
      }
        // Some of these are used twice, so rather than computing them twice in the algorithem we precompute them before hand. // заранее определим для простоты
      float cosRoll = cos(roll);
      float sinRoll = sin(roll);
      float cosPitch = cos(pitch);
      float sinPitch = sin(pitch);
      // Tilt compensation сама функция компенсации
      float Xh = mag.XAxis * cosPitch + mag.ZAxis * sinPitch;
      float Yh = mag.XAxis * sinRoll * sinPitch + mag.YAxis * cosRoll - mag.ZAxis * sinRoll * cosPitch;
      float heading = atan2(Yh, Xh);//На выходе должен получится угол (азимут угол отложенный от северного магнитно полюса до курса вашего БПЛА ) в градусах.
     
      return heading;
    }
    Это касательно примера в верху вы же о нём спрашивали к кватернионному фильтру это не относится.
     

    Вложения:

  6. Artclonic

    Artclonic Гик

    Столько информации надо переварить...

    Тут пришла мысль! Ведь мне необходимо просто проанализировать угол (или параметр) "указателя" на север..В чем он будет измерятся? в градусах наверное. Тем самым если проходя по пути "указатель на север" будет постоянен - то ни каких "объектов помех" - нет. Если к примеру положить магнит по пути, то числовое значение показателя изменится скачкообразно - тем самым увижу - присутствие "объекта искажающего магнитное поле" Как алгоритм? Это как раз в магнином компасе и реализовано? Правильно понимаю? Там как раз углы наклона компенсируются... Тем самым от "дрожания руки" - скачков не будет а от магнитика или железяки рядом - должно быть...Как Вам данный алгоритм? Рабочий? Теперь вопрос квантовыий фильтр он входит в код электронного компаса? Мне по сути нужен скетч -электронного компаса с компенсациями на углы наклона...Вычленю переменную отвечающую за показание "строго на север" и в диаграмму ее...
    А можно полный код компаса...? Где взять?
     
  7. Sencis

    Sencis Нерд

    Касательно кватернионного фильтра я его сейчас сам использую для стабилизации небольшой турели а также планирую для стабилизации полёта при помощи PID т.ч. он вполне работоспособный. Как я и говорил там нужно кое что закоментировать кое что подкрутить.
     
  8. Artclonic

    Artclonic Гик

    Sencis, посмотрите сообщение выше мое...
     
  9. Sencis

    Sencis Нерд

    Смотрите если вам искать металл компасом))) отслеживая его изменения вам придётся интегрировать а это неизбежно приведёт к ошибкам я предлагаю по другому. Берём GPS датчик и достаём headind (азимут) GPS не реагирует на наклоны но что-бы азимут показывал правильно нужно постоянно двигаться т.к. он измеряет его от текущей и предыдущей точки (по скорости пешком будет достаточно). И искать азимут с помощью магнитометра с компенсаций наклона (компас) как только они не совпадают (азимут компаса и GPS) то тут вероятно аномалия (тут же записали силу излучения считав сырые данные и найдя экспоненциальную среднюю) так и точность будет приличная и геоданные о месте аномалии сразу можно получить.
     
  10. Artclonic

    Artclonic Гик

    Sencis, прошу оказать помощь/консультацию по даннои теме.
    GPS модуль - должен приехать думаю уже на неделе..
    Взамен могу Вам чего нибудь приобрести на алиэкспресс, ну или там договоримся...
    Что значит интегрировать?
     
  11. Sencis

    Sencis Нерд

    Кватернионный фильтр возвращает готовый азимут т.е. это и есть компас по факту угол от севера на текущий курс в градусах, но на счёт компенсации при углах близких к 90 град он покажет с погрешностью в +/- 30град, это многовато но учитывая что функция компенсации наклона в принципе работает только до 45 град приемлемо в прочем при небольших наклонах и погрешность меньше только нужно его хорошенечко откалибровать (естественно там где нет ист. маг. поля совсем но в готовом виде что-бы питание уже учитывалось и его наводки а лучше вообще пред каждым запуском. ).
     
  12. Sencis

    Sencis Нерд

    Искать изменения во времени т.е. отслеживать как изменялись показания пока вы шли но тут ещё придётся и очень точно идти по одному курсу иначе тоже погрешности в общем думаю с GPS самое то.
     
  13. Artclonic

    Artclonic Гик

    До 45 -градусов - приемлемо... Если больше, я то замечу по показаниям гироскопа и вычленю с анализа.
    Это не совсем понятно. Что значит точно идти по курсу? Данный курс - разнообразен, это же компас, как не поверни в горизонтальнои плоскости он будет показывать на север. Что значит строго по курсу?

    Но интересны оба варианта и с gps и по первоначальному варианту...
     
  14. Sencis

    Sencis Нерд

    Ну тогда вам подходит и функция и фильтр, а если больше 45 функция вернёт -1000 ничего вычислять не придётся.

    Смотрите 1й способ мы идёт по одному курсу и смотрим как изменяются показания во времени (азимут) но если вы измените курс показания тоже изменятся так соответственно придётся более менее строго держать курс.

    Способ 2а с GPS не имеет такого недостатка т.к. если вы измените курс изменится и курс GPS (и он не реагирует на излучения) (а тут мы ищем несовпадения компаса и GPS) но зато остановка собьёт курс GPS т.к. он вычисляется по 2м точкам (как и скорость) в прочем мы можем исключить остановки зная скорость и ускорение.

    В прочем можно использовать и 2а датчика магнитометра 2й будет на удалении от объекта интереса регистрируя таким образом показания хотя если сильно излучение может затронуть и его т.ч. лучше больше датчиков больше надёжность.
     
  15. Artclonic

    Artclonic Гик

    Простите мою тупость, но я не понимаю термин "по одному курсу"??? Да показания магнитометра изменятся если вертеть его в двух плоскостях, но показание на север останется же? При этом учтутся наклоны ....
    это отвергаем....пока...(хотя идея с элементом сравнения - идея хорошая, рабочая и в других направлениях изики/химии). Данные датчики должны быть строко откалиброванны относительно друг-друга...
    GPS изначально хотел использовать в проекте, а если еще и можно сравнить будет азимут, наверное само то...
    Но если это делать в помещении , то только по первому варианту - "Отслеживания стабильности на север". Вариант с поворотом более на 90 градусов, есть идея использовать к примеру два датчика - оринтированными по разному на 90 градусов, тем самым снимать показания сначала с одного, потом с другого, понимая при этом, как сам девиас находился в пространстве...
     
  16. Sencis

    Sencis Нерд

    Объясняю фильтр и функция возвращают не направление на север, а угол отложенный от севера на твоё текущее направление. Представь транспортир на 360град, теперь ноль на нём это север если ты идёшь на на ноль соответственно идёшь на север а если ты идёшь в обратную строну на юг он будет противоположен а значит 180 град так вот 180 град это угол отложенный от севера на твоё текущее направление т.е. курс или азимут.

    В помещении это вообще работать не будет в помещении (у меня дома) магнитометр в место севера показывает мне холодильник когда он работает))).

    Ну как бы фильтр и показывает ориентацию в пространстве или вы хотите ориентироваться только по магнитометру а зачем это очень шумный датчик (отсюда недостаток той функции которая работает до 45 град ещё нужен фильтр для того что-бы показания были стабильны в прочем я проверял у себя дома мож в поле они стабильнее).
     
  17. Artclonic

    Artclonic Гик

    Надо переварить... Но видео которое я видел, тупо на мониторе стрелка с копасом и как бы он не крутил модуль она показывала в одном направлении (а значит) его значение стабилно. Но думаю, что если поднести магнит - значение изменится стрелка на мониторе отклонится...Это ж так?
    А к этому все и ведется значит -есть анамалия))))))) Холодильник, батарея....
    Чет вообще ни чего не понял...По этому поводу ...Шумныи - это про како датчик? Мне надо подключить код и сним поиграться... тогда в мозгах моих все устаканится... Нужно мне все это пощупать... Я как графики нарисовал в Ексельке сразу стал предствалять что к чему...Тоже самое надо поработать с фильтрами...
    И еще вопрос гироскоп он в дух осях работает?
     
  18. Sencis

    Sencis Нерд

    Естественно ( первое попавшиеся про азимут ) .

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

    Гироскоп и акселерометр измеряет в 3х осях ( тонгаж, крен, рысканье).
     
  19. Artclonic

    Artclonic Гик

    Полностью согласен...это естественно понятно

    Почему на графике, когда я кручу вогруг Z - гироскоп почти не реагирует?
     

    Вложения:

  20. Artclonic

    Artclonic Гик

    Если использовать скетчи и библиотеку вот от сюда и соответственно для данного модуля, а не для MPU9250, это облегчит задачу или принципиального отличия от прикрепленного Вами файла нет? А то закажу завтра...