Подтвердить что ты не робот

Как определить абсолютную ориентацию

У меня есть xyz-акселерометр и магнитометр. Теперь я хочу определить ориентацию устройства, используя оба. Проблема, которую я вижу, заключается в том, что в зависимости от ориентации устройства мне нужно будет использовать датчики в другом порядке.

Позвольте мне привести пример. Если у меня есть устройство, обращенное ко мне, то с помощью акселерометра можно определить изменения в рулоне и тангаже. Для рыскания я использую магнитометр.

Но если я поместил устройство горизонтально (т.е. поверни его на 90º, обратившись к потолку), то любое изменение вектора вверх (теперь горизонтально) не будет замечено, так как акселерометр не обнаружит никаких изменений. Теперь это можно обнаружить с помощью магнитометра.

Итак, вопрос в том, как определить, когда использовать тот или иной. Достаточно ли этого с обоими датчиками или мне нужно что-то еще?

Спасибо

4b9b3361

Ответ 1

Ключ должен использовать кросс-произведение двух векторов, гравитации и магнитометра. Перекрестное произведение дает новый вектор, перпендикулярный им обоим. Это означает, что он горизонтальный (перпендикулярно вниз) и на 90 градусов от севера. Теперь у вас есть три ортогональных вектора, которые определяют ориентацию. Это немного уродливо, потому что они не все перпендикулярны, но это легко исправить. Если вы затем пересечете этот новый вектор обратно с вектором силы тяжести, который дает третий вектор, перпендикулярный вектору силы тяжести и вектору плоскости магнита. Теперь у вас есть три перпендикулярных вектора, которые определяют вашу трехмерную координатную систему координат. Оригинальный вектор акселерометра (гравитационный) определяет Z (вверх/вниз), а два вектора перекрестных продуктов определяют компоненты ориентации восток/запад и север/юг.

Ответ 3

Я думаю, что вопрос "как определить, когда использовать тот или иной" ошибочен. Вы должны всегда использовать оба датчика для ориентации. Бывают случаи, когда один из них бесполезен. Однако это краевые случаи.

Ответ 4

Если я правильно вас понимаю, вам понадобится что-то, чтобы обнаружить подачу (наклонение) и ориентацию в соответствии с основными точками (север, восток, юг и запад).

Шаг можно считывать с акселерометра.

Ориентация по основным точкам может быть считана с компаса.

Совмещение вывода этих двух датчиков с правильной математикой в ​​вашем программном обеспечении, скорее всего, даст вам абсолютную ориентацию.

Я думаю, что это возможно.

Удачи.

Ответ 5

В случае, если вам по-прежнему нужна абсолютная ориентация, вы можете проверить эту взломанную доску от Adafruit: https://www.adafruit.com/products/2472. Самое приятное в этом заключается в том, что у него есть процессор ARM Cortex-M0 для выполнения всех вычислений для вас.