2013-03-19 6 views
10
  • Я хочу контролировать ориентацию устройства на 2 оси: очень просто: какой путь вниз.
  • Он должен поддерживать точность в течение длительного периода времени (12 часов)
  • Это будет предметом вращений и ускорений обо всех оси

Устройство будет Android-телефон со стандартным гироскопом/акселерометром. С этими двумя типами датчиков, можно удовлетворить вышеуказанные требования?Получение ориентации с использованием гироскопа и акселерометра

Моих мысли до сих пор: одна акселерометр не может достичь этого, так как с учетом любого набора значений для момента времени, не представляется возможным отделить гравитационные и пространственные компоненты ускорения. И я не могу разглядеть, как гироскоп может помочь разрешить это. Есть ли какие-нибудь умные формулы/алгоритмы, которые бы справились с этим?

Благодаря

+1

Попробуйте использовать Google для «гироскопа данных гироскопа». Это довольно распространенная задача в ИДУ, и это определенно выполнимо. (Сверху моей головы вы можете настроить фильтр Калмана/просто сделать HPF на акселерометре и LPF на гироскопе, но у меня нет каких-либо подробностей реализации). – sapi

ответ

21

Простой способ объединить акселерометр и гироскоп данных путем использования дополнительного фильтра. Таким образом, у вас нет проблем с дрейфом от гироскопа и шумом от акселерометра. Это также намного легче понять и использовать, чем фильтр Калмана.

Вычислите угол из гироскопа, используя интеграл. А для акселерометра вы будете использовать функцию tan2 для определения положения вектора силы тяжести. Дополнительный фильтр будет затем объединить эти два угла следующим образом:

угол = 0,98 * (угол + gyroData * дт) + 0,02 * accAngle

Обратите внимание, как вы берете только часть данных акселерометра (достаточно просто компенсировать дрейф). Таким образом, вы используете данные гироскопа для быстрых изменений, но в долгосрочной перспективе вы будете следить за средним значением вычисления угла акселерометра, чтобы вы не дрейфовали.

Надеюсь, это поможет. Если вам нужна дополнительная информация и пример кода C, я написал статью об этом here

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