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

Интеграция показаний гироскопа и акселерометра

Возможный дубликат:
Объединить данные гироскопа и акселерометра

Я прочитал ряд работ по Kalman filters, но, похоже, мало хороших общедоступных обработанных примеров перехода от математической статьи к фактическому рабочему коду.

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

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

4b9b3361

Ответ 2

У вас, кажется, есть две (или три) отдельные проблемы.

1. Вы действительно не понимаете фильтры Калмана и/или математику позади них. Это будет очень сложно правильно реализовать и использовать.

2. Вы, кажется, не понимаете основную физику, участвующую в проблеме. (Основная физика означает основную физику, а не просто физику, потому что это не просто.)

Я бы предположил, что вы пытаетесь использовать гораздо более простой интегратор, такой как Runga-Kutta 4, для которого вы можете найти много книг с примерами как реализации, так и использования. Этого должно быть достаточно для этой проблемы. (Если клиент указал Кальмана, выясните, почему.)

Что касается проблемы, связанной с проблемой, мне кажется, что она не имеет возможности гарантировать, что устройство удерживается вертикально и не может измерить фактическую ориентацию. Забудьте гироскоп на данный момент и предположите, что устройство не может вращаться вокруг вертикальной оси. У вас есть три акселерометра, по-видимому, для оценки положения в 3D. Поэтому, если вы видите ускорение в направлении X, вы увеличиваете оценку того, где вы находитесь в направлении X. Аналогично, если вы видите ускорение в направлении Z (которое я буду считать "вверх" ), вы увеличите оценку того, где вы находитесь в направлении Z. Теперь поверните устройство немного, скажем, на 30 градусов относительно оси Y. Теперь, когда устройство думает, что вы ускоряетесь в направлении X, устройство фактически ускоряется немного меньше, чем указано в X и, оно также ускоряется в направлении Z. Поэтому ваша оценка местоположения теперь некорректна.

Ротации намного сложнее интегрировать (уравнения более "жесткие", требующие меньшего временного шага для поддержания точности). Но они будут сталкиваться с подобными проблемами при вычислении неправильных ответов, если устройство опрокинуто (потому что устройство не может сказать, что оно опрокинуто). Он будет думать, что вращение вокруг вертикальной оси больше или меньше, чем на самом деле, потому что часть вращения на самом деле о другой оси (так же, как часть ускорения находится вдоль другой оси).

Возможно, вам нужно нанять консультанта (нет, я не ищу работу), чтобы помочь вам в формулировании математики.

Ответ 3

Учитывая ваш интерес к калмановскому фильтру, возможно, вы намерены увеличить данные GPS с помощью инерционных измерений. О вашем вопросе:

"Как я буду кодировать фильтр? использовать показания акселерометра для откалибруйте гироскоп в моменты, когда система наклоняется так, чтобы ось гироскопа не коллинеарный с гравитацией, а поворачивается вокруг оси гироскопа? Это похоже, должно быть достаточно информацию для этого"

Это звучит как выравнивание гирокомпакса. Предполагая, что вы выполняете калибровку factory и имеете устройство на скамейке, вы сможете самостоятельно измерить выравнивание. Затем запустите код выравнивания, который вы напишете, и отпустите ошибку смещения гироскопа от разницы между мерами и гирокомпактными выравниваниями.

Если вы хотите обновить дрейф гироскопа на лету, вам понадобится фильтр калмана.

Что касается реализации, я рекомендую Глава 7, GPS и инерциальную интеграцию Теория и приложения глобальной системы координат vol 2 имеет отличный фон для тема. Он имеет теорию и математику, но не исходный код.

Ответ 4

Я нашел хорошие статьи об использовании акселерометров и гироскопов в навигации на в этом блоге. Часть фильтрации Kalman немного туманна, но, похоже, есть образцы кода.

Вы также найдете общие ресурсы по фильтрации Калмана на http://academic.csuohio.edu/simond/publications.html. Статья, упомянутая в (8), является хорошим, не слишком страшным введением в математику за фильтрами Калмана.

Ответ 6

Если вы, должно быть, разрабатываете Propeller uController, чем Parallax Object Exchange имеет некоторый код. Большой вопрос; -)