8

У меня есть акселерометр и магнитометр, каждый из которых производит необработанные отсчеты X, Y и Z. Отсюда необходимо определить магнитный заголовок объекта.Расчет магнитного заголовка с использованием необработанных акселерометров и данных магнитометра

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

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

Итак, я думаю, что суть моего вопроса (если у кого-то на самом деле нет формулы вокруг этого), как вы вычисляете углы в радианах с помощью акселерометра для тона и рулона.

Тогда, во-вторых, любая информация о формуле заголовка будет отличной.

+0

Какой заголовок вы пытаетесь вычислить и относительно какого объекта? Могу ли я предположить, что вы говорите о телефоне? – Seth

ответ

2

В зависимости от точности вашего приложения требуется, возможно, потребуется решить несколько проблем:

  1. откалиброваны оси акселерометра? Я видел акселерометры MEM, у которых были оси, которые не были взаимно перпендикулярны, и имели существенно разные характеристики отклика для каждой оси (как правило, X и Y соответствовали бы, и Z будет отличаться). Вам нужно будет синтезировать идеальные оси XYZ из любого физического чтения, которое предоставляет ваше устройство. («Калибровка акселерометра Google».)

  2. Оправлены ли оси магнитометра? Аналогичная проблема, как и выше, за исключением гораздо труднее проверить: очень сложно создавать однородные калиброванные магнитные поля. Если вы используете окружающее геомагнитное поле, вам необходимо тщательно контролировать локальный магнетизм рабочей среды и ваших инструментов. («Калибровка магнитометра Google».)

  3. После того, как акселерометр и магнитометр были индивидуально откалиброваны, их оси необходимо откалибровать относительно друг друга. Поскольку оба этих устройства, как правило, припаяны к печатной плате, почти гарантированно будет значительная несоосность. Во многих случаях параметры платы и параметры устройства могут даже не допускать совпадения осей XYZ друг с другом! Это может быть труднее всего сделать из лабораторной перспективы, поэтому я бы рекомендовал вам прямое сравнение с использованием другого оборудования, которое имеет оба типа датчиков и уже откалибровано (например, iPhone или телефон Android), но проверьте устройство до использования). Обычно это достигается путем корректировки двух предыдущих калибровочных матриц, пока они не генерируют векторы, которые правильно выровнены относительно друг друга.

  4. Только после того, как вы создадите взаимно откалиброванные векторы магнитного и акселерометра, вы можете применить решения, предложенные другими респондентами.

Я описал только статическое решение, в котором как магнитометр, так и акселерометр неподвижны относительно локальных гравитационных и магнитных полей. Если вам нужно генерировать ответы в режиме реального времени, в то время как система быстро перемещается, вам нужно будет учитывать поведение времени каждого датчика. Существует два основных способа сделать это: 1) применять фильтры во временной области к каждому датчику, чтобы их выходы имели общую временную область (обычно добавляя некоторую задержку). 2) Используйте интеллектуальное моделирование для изменения выходов датчика в режиме реального времени (меньше задержки, но больше шума).

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

Или вы можете выбрать совершенно другой путь и использовать статистику и данные, чтобы все вышеперечисленные работы выполнялись на одном гигантском шаге. Рассмотрите проблему следующим образом: учитывая 6 входных значений (XYZ каждый из некалиброванного магнитометра и акселерометра) и ссылку на устройство (при условии, что это ручная работа, а также стрелка, нарисованная на корпусе), выведите один угол, представляющий магнитный подшипник, к которому направлена ​​стрелка на корпусе, и высота стрелки относительно вектора силы тяжести (наклон корпуса).

Использование калиброванного эталонного устройства (как указано выше), сопрягать его с откалиброванным устройством и принимать несколько сотен точек данных с устройством в разных направлениях. Затем используйте мощный математический пакет, такой как Matlab, MathCAD, R или SciPy для настройки и решения нелинейных уравнений для создания матриц преобразования.

+0

PS: Я использовал недорогую компьютеризованную базу телескопа, чтобы сделать эту последнюю часть: делать это вручную не реально. – BobC

Смежные вопросы