Инерциальные датчики: рецепты приготовления для систем позиционирования
В этой заметке мы поговорим об инерциальных датчиках. О том, что они измеряют и о том, как эти физические величины можно использовать.
Большинство современных мобильных телефонов имеют на борту триады акселерометров, гироскопов и магнитометров, часто в дополнение к ним ставится и датчик атмосферного давления.
С последним датчиком все предельно ясно: почти у каждого из нас дома или на даче висит барометр и миллиметры его ртутного столба прочно связаны с дождем, непогодой и общим самочувствием любимой бабушки. А вот что измеряют акселерометр, гироскоп и магнитометр, и как использовать эту информацию для определения ориентации устройства в пространстве?
Акселерометр
В википедии сказано, что акселерометр — это прибор, измеряющий проекцию кажущегося ускорения. Типичный акселерометр состоит из трех взаимно перпендикулярных измерительных осей, регистрирующих гравитационное и линейные ускорения.
С помощью измерений трехосного акселерометра можно определить его ориентацию относительно опорного вектора, которым в данном случае является гравитационное ускорение. Тогда, однако, ориентация будет разрешена не полностью — останется неопределенность относительно угла поворота вокруг оси, параллельной направлению ускорения свободного падения.
Подробнее это пояснено на рисунке ниже. Представим, что в нашем распоряжении есть измерительное устройство с акселерометром, имеющим три оси X, Y и Z. На рисунке данные оси обозначены красным, зеленым и синим цветом и образуют левую тройку векторов. Очевидно, что если для определения ориентации доступен только вектор ускорения свободного падения, то будет существовать бесконечное число возможных ориентаций измерительного устройства, при которых ось Z акселерометра будет измерять значение ускорения свободного падения, но разрешить абсолютную ориентацию устройства мы не сможем.
Магнитометр
Чтобы разрешить ориентацию полностью, нужен второй базисный вектор, который не будет параллелен первому. Таким вектором может являться, например, вектор магнитного поля нашей планеты. Если известно его направление, то ориентация будет разрешена однозначно.
Зная ориентацию одной системы координат относительно другой становится возможным переводить измерения из системы координат устройства в глобальную. А знания об ускорениях в глобальной системе координат позволят путем интегрирования восстановить скорость и получить информацию об относительном местоположении.
Гироскоп
Гироскоп позволяет измерить скорость вращения устройства, соответственно для того, чтобы привести скорость к углу поворота мы должны её интегрировать. С этим положением связана основная проблема ориентации только при помощи гироскопа — из-за постоянного интегрирования не совсем точных измерений угловых скоростей, вызванных смещением нуля или температурными эффектами, мы получим дрейф ориентации, или, другими словами, она будет «уплывать» от истинного значения.
Преимущество использования всех трех датчиков в фильтре ориентации кроется в том, что:
- Благодаря измерениям гироскопа становится возможной одновременное подавление скачков ориентации с сохранением реактивности фильтра, фактически мы получаем аналог низкочастотного фильтра без какой-либо задержки, при визуализации наблюдается «плавность» при вращении объекта. Хороший фильтр для быстрого старта — фильтр Мадвика, но на мой взгляд, еще более интуитивным является фильтр Махони, так как в нем ошибка ориентации рассчитывается не с помощью градиента, а путем простого векторного умножения.
Подобные фильтры можно использовать и для объединения измерений пар датчиков. Например, на следующем рисунке показан результат оценки высоты с использованием фильтра Калмана, где в качестве измерений используются данные об атмосферном давлении, а в качестве внешнего воздействия — измерения акселерометра. Кстати на хабре есть подобное решение, там акселерометр и барометр используют для стабилизации высоты квадрокоптера.
- Становится возможным включение в вектор состояния системы параметров датчиков: таких как смещение нуля акселерометра и гироскопа. Используемые фильтры, построенные на базе комплементарных или фильтра Калмана, постепенно сходятся к истинному значению смещения нуля датчика.
- Можно эффективно организовать сбор калибровочных данных. Так, при сборе калибровочных данных для магнитометра для максимально равномерного покрытия поверхности шара можно использовать данные об ориентации устройства и инициировать процесс калибровки только после того, когда все требуемые сегменты шара будут содержать как минимум одно измерение.
- Появляется возможность в той или иной мере разрешить основные проблемы при определении ориентации: оценить направление внешнего ускорения или определить, присутствует ли в данной точке локальное магнитное возмущение, а значит, не следует доверять измерениям магнитометра.
Как можно еще использовать данные от инерциальных датчиков?
Помимо традиционной и хорошо изученной задачи определения ориентации устройства, инерциальные датчики могут использоваться для:
- Сбора данных о магнитной карте помещения. Пример такой карты приведен на рисунке ниже. Видно, что в различных частях здания изменяется не только магнитуда магнитного поля (в мкТл), но и направление вектора магнитной индукции (обозначено розовой линией). Такую карту можно использовать для уточненного позиционирования объекта в дополнении к традиционным картам радиосигнала.
-
Восстановления траектории движения объекта. Таким объектом может быть пешеход или автомобиль. В отдельных случаях, например при креплении устройства на ноге и предварительной точной калибровке датчиков можно добиться ошибки возврата в точку начала движения, не превышающую десятков сантиметров для длины пути превышающей 100 метров. Пример восстановленной траектории методом ZUPT (при сбросе ошибки в периоды неподвижности), дополненным измерениями датчика атмосферного давления приведен на следующем рисунке (траектория движения включала в себя проход по коридору, спуск по лестнице, еще один проход и подъем на лифте). Подобный метод уже упоминался на хабре здесь.
При произвольном креплении устройства на теле человека ошибка возврата к исходной точке, как правило, куда больше и составляет 15–20% от пройденной дистанции. Такое её значение обусловлено, во-первых, ошибкой в определении длины шага, а во-вторых, ошибкой в определении направления движения.
-
Инициирования каких-либо событий или управления устройством. Это возможно сделать при помощи «рисования» устройством какой-либо фигуры или образа в воздухе, например символ ∞ может использоваться для запуска калибровки магнитометра, продольные взмахи устройством — для генерации экстренного сообщения, тройной «тап» — для выключения. Данные задачи решаются при помощи заранее обученных классификаторов.
- Определения текущей активности пользователя. Например, при использовании устройств в офисе может быть полезным знание о том, насколько много человек двигался в течение рабочего дня и типе движения — какую часть времени он провел стоя, сидя, сколько времени потратил на различные переходы по зданию.
В будущих статьях планируется раскрыть темы того, как работать с инерциальными датчиками — обсудить способы их калибровки (хотя это уже и обсуждалось на хабре), посмотреть на существующие способы восстановления траектории движения человека, изучить подходы к детектированию и устранению возмущений магнитного поля, а также обсудить архитектуру встроенного ПО для своевременного таймштампирования и обработки их измерений.
Автор — Александр Миков.