Как определить положение по данным гироскопа и акселерометра?

33

У меня есть 3-осевой акселерометр и 2-осевой гироскоп. Я намерен измерить то, что движется только по осям X и Z. Я слышал об использовании фильтров Калмана для сглаживания векторов ускорения, но я не могу найти хороший учебник для начинающего в этой теме. Кроме того, я знаю, что могу дважды интегрировать ускорение, чтобы получить положение, но как мне сделать это с конечным числом выбранных векторов ускорения? Буду признателен за ссылки на хорошие учебники для начинающих по обеим этим темам.

Стивен
источник
3
Похоже на эту запись в блоге, с которой я сегодня наткнулся: starlino.com/imu_kalman_arduino.html У меня нет связи с этим сайтом, я просто подумал, что это выглядело как то, что вы спрашиваете.
JustJeff
1
В этой статье можно найти серию руководств по использованию и интерфейсу датчиков акселерометра. intorobotics.com/… здесь доступны учебники по измерениям по двум осям
Ezu

Ответы:

16

Вот учебник по реализации матрицы направленного косинуса для IMU: http://gentlenav.googlecode.com/files/DCMDraft2.pdf

Взгляните на страницы ArduIMU: http://code.google.com/p/ardu-imu/wiki/Theory

Вот пара проектов с открытым исходным кодом, которые делают это. Чтение кода должно дать некоторые подсказки:

http://code.google.com/p/gluonpilot/source/browse/trunk/Firmware/#Firmware/rtos_pilot%3Fstate%3Dclosed

http://code.google.com/p/sf9domahrs/

Тоби джеффи
источник
8

Ну, фильтр Калмана - это своего рода магия, которая работает таинственно. :)

Я начал с цифровых фильтров . Хорошо объяснил для начала. И легко нестабильный. Эти простые фильтры прекрасно работают для любой системы. Просто нужно настроить соотношение точности и отклика, экспериментируя. Хитрость заключается в [Точность = 1 - Ответ].

Попробуйте.

Затем, чтобы понять, что такое фильтр Калмана, вам нужно будет выполнить следующие действия:

  1. Вероятность
  2. Закон Байеса
  3. Затем нужно будет научиться моделировать простые сценарии для их встраивания в фильтр Калмана.
  4. В настоящее время я нахожусь здесь, так что я нахожу, что делать .., конечно, сообщу.

И должен поделиться, если вы столкнетесь с чем-нибудь подобным.

Rick2047
источник
7

... двойное интегрирование ускорения, чтобы получить позицию

Теоретически (если у вас есть идеальные датчики и измерения) вы можете сделать это, но на практике вы не можете. Проблема заключается в том, что акселерометр будет иметь постоянную силу 1G, вызванную силой тяжести, когда объект лежит неподвижно (ноль G в случае свободного падения), но это не измеряется точно как 1,00000000 ... G. При перемещении объекта у вас будет вектор как сумма силы тяжести 1G и ускорения от движения (которое обычно намного меньше, чем 1G), и ваши измерения будут накапливать слишком много шума со временем, чтобы быть полезным, если вы попытаетесь интегрировать измеренные значения. ускорение минус 1G силы тяжести.

hlovdal
источник
6

Я начал строить квад почти 6 месяцев назад, у меня было много проблем с правильным определением угла :)

Прежде всего, вы должны попробовать эту презентацию - http://web.mit.edu/scolton/www/filter.pdf Она действительно всеобъемлющая и может помочь вам получить лучшее представление о том, что вы действительно хотите, это в значительной степени помогло для меня.

Я думаю, это в значительной степени зависит от вас, но реализация фильтра Калмана не требует только достаточно серьезных знаний в области математики, теории систем и, в данном случае, физики, но также очень требовательна к загрузке процессора. Если вы планируете использовать, скажем, Atmega328 с тактовой частотой 16 МГц, у вас могут возникнуть проблемы с использованием этого вида фильтра. Это действительно эффективно, если вы используете DSP, так что вы можете фильтровать нижние частоты по вашему входу.

В общем, мой совет - попробуйте использовать дополнительный фильтр 1-го порядка или, возможно, даже дополнительный фильтр 2-го порядка, если вы не удовлетворены результатами. Если ваша система свободна от высокочастотных вибраций, это должно работать отлично. Кроме того, ссылка JustJeff - идеальное место для начала, если вы застряли с реализацией :)

Всего наилучшего, Дэн

Дэн
источник
Ваша ссылка мертва. Я немного покопался и снова нашел документ: googledrive.com/host/0B0ZbiLZrqVa6Y2d3UjFVWDhNZms/filter.pdf По крайней мере, он должен быть таким же, может быть, вы хотите перепроверить.
Джон
Да, это точно так же :)
Дан
ссылка снова мертва :(
KyranF
@KyranF думаю, что я нашел это снова :) portal.ts-muenchen.de/Dateien/filter.pdf
Дан
@ Хорошо, на самом деле это тот же самый документ, который я использовал для разработки своей прошивки, когда я сделал мини-сигвей в универе. youtu.be/zOFlJJj8pPA
KyranF
1

Я также новичок и также ищу решение моей навигационной работы. Как и у вас, у меня есть плата с 3-осевым акселерометром и 2D-гироскопом. до сих пор я прочитал много материалов об этом, также я решил применить фильтр Калмана к моему сигналу. может быть, у меня нет никаких предложений, но я хочу поделиться с вами кое-чем, что я видел раньше. Есть несколько ссылок на них, надеюсь, что это полезно для вас.

  1. Введение фильтра Калмана
  2. CAS Robot Navigation Toolbox
  3. Инерциальная навигационная панель с открытым исходным кодом
  4. Исходный код проекта о навигации

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

Темная лошадка
источник
1
Хотя это может быть полезным набором ссылок для ФП, эта публикация будет полезна, если вы также добавите резюме соответствующих материалов из этих ссылок, относящихся к вопросу, опубликованному ФП. Имейте в виду, что когда ссылки в конечном итоге становятся недействительными из-за гниения ссылок, этот пост не будет иметь значения. Спасибо.
Аниндо Гош