Как определить абсолютную ориентацию
У меня есть xyz-акселерометр и магнитометр. Теперь я хочу определить ориентацию устройства, используя оба. Проблема, которую я вижу, заключается в том, что в зависимости от ориентации устройства мне нужно будет использовать датчики в другом порядке.
Позвольте мне привести пример. Если у меня есть устройство, обращенное ко мне, то с помощью акселерометра можно определить изменения в рулоне и тангаже. Для рыскания я использую магнитометр.
Но если я поместил устройство горизонтально (т.е. поверни его на 90º, обратившись к потолку), то любое изменение вектора вверх (теперь горизонтально) не будет замечено, так как акселерометр не обнаружит никаких изменений. Теперь это можно обнаружить с помощью магнитометра.
Итак, вопрос в том, как определить, когда использовать тот или иной. Достаточно ли этого с обоими датчиками или мне нужно что-то еще?
Спасибо
Ответы
Ответ 1
Ключ должен использовать кросс-произведение двух векторов, гравитации и магнитометра. Перекрестное произведение дает новый вектор, перпендикулярный им обоим. Это означает, что он горизонтальный (перпендикулярно вниз) и на 90 градусов от севера. Теперь у вас есть три ортогональных вектора, которые определяют ориентацию. Это немного уродливо, потому что они не все перпендикулярны, но это легко исправить. Если вы затем пересечете этот новый вектор обратно с вектором силы тяжести, который дает третий вектор, перпендикулярный вектору силы тяжести и вектору плоскости магнита. Теперь у вас есть три перпендикулярных вектора, которые определяют вашу трехмерную координатную систему координат. Оригинальный вектор акселерометра (гравитационный) определяет Z (вверх/вниз), а два вектора перекрестных продуктов определяют компоненты ориентации восток/запад и север/юг.
Ответ 2
Вот несколько документов, которые проходят через этот проект. Как видно из других ответов, математика может быть сложной.
http://www.freescale.com/files/sensors/doc/app_note/AN4248.pdf
Ответ 3
Я думаю, что вопрос "как определить, когда использовать тот или иной" ошибочен. Вы должны всегда использовать оба датчика для ориентации. Бывают случаи, когда один из них бесполезен. Однако это краевые случаи.
Ответ 4
Если я правильно вас понимаю, вам понадобится что-то, чтобы обнаружить подачу (наклонение) и ориентацию в соответствии с основными точками (север, восток, юг и запад).
Шаг можно считывать с акселерометра.
Ориентация по основным точкам может быть считана с компаса.
Совмещение вывода этих двух датчиков с правильной математикой в вашем программном обеспечении, скорее всего, даст вам абсолютную ориентацию.
Я думаю, что это возможно.
Удачи.
Ответ 5
В случае, если вам по-прежнему нужна абсолютная ориентация, вы можете проверить эту взломанную доску от Adafruit: https://www.adafruit.com/products/2472. Самое приятное в этом заключается в том, что у него есть процессор ARM Cortex-M0 для выполнения всех вычислений для вас.