MARG Ориентир-1

Ориентир-1, нижняя сторона

Описание и назначение продукта

MARG Ориентир 1 —  это система, которая может вычислять абсолютное положение платы в пространстве. Система состоит из таких сенсоров как акселерометр, гироскоп и магнитометр. Гироскоп замеряет угловую скорость, акселерометр — ускорение (в т.ч. гравитацию), а магнитометр — направление магнитного поля. Все эти данные вы можете получить отдельно, обратившись по I2C порту к определённому сенсору. Все датчики размещены на двух микросхемах. Одна из них включает в себя трёхосевой гироскоп (ST L3G4200D), а другая — трёхосевой магнитометр и трёхосевой акселерометр (ST LSM303DLM).

Мы написали удобную библиотеку под Arduino для использования платы. Для оценки ориентации был использован алгоритм Маджвика, который можно найти здесь:
http://www.x-io.co.uk/node/8#open_source_imu_and_ahrs_algorithms

 

Примеры использования

Здесь вы можете пронаблюдать примеры использования нашей платки с библиотекой:

 

Руководство по работе с платой MARG Ориентир-1 и Arduino

Подключение

Подключите плату к соответствующим разъёмам на Arduino:

Arduino Uno

  •  GND → GND
  • 5V → +5V
  • SCL → Analog pin 5
  • SDA → Analog pin 4

Arduino Mega

  •  GND → GND
  • 5V → +5V
  • SCL → Digital pin 21
  • SDA → Digital pin 20

Схема подключения Ориентир-1 к Arduino

Программирование

Для каждой из микросхем, расположенных на плате, вы можете найти библиотеку для удобной работы с ними, написанную компанией Pololu. Библиотека для L3G4200D и библиотека для LSM303DLM. В этих же библиотеках вы можете найти удобные примеры работы с сенсорами, а также скетч для калибровки магнитометра.

Калибровка магнитометра

Для калибровки магнитометра загрузите выше описанные библиотеки в папку libraries (она должна быть в папке, где у вас установлена Ardiono IDE). Затем откройте Arduino IDE и запустите скетч калибровки (File→Examples→LSM303→Calibrate). Залейте этот скетч на плату. Откройте Serial Monitor. Теперь поворачивайте вашу плату в разных направлениях и под разными углами. Те значения, которые будут у вас в конце калибровки, и будут искомыми калибровочными значениями. Запишите их.

Библиотека Transformation

Библиотека Transformation была написана для оценки текущего положения платы (ориентация + смещение).

Ориентация

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

Для того чтобы нивелировать эти неточности используются абсолютные ориентиры, такие как вектор силы тяжести и вектор направления магнитного поля, которые неизменны. Для реализации системы вычисления абсолютного угла на основе всех трёх датчиков существуют различные алгоритмы, такие как DCM-фильтр Бизарда и Пермерланиалгоритм с применением EKF Маринса и Бачмена или Orientation-фильтр Маджвика. Мы для написания нашей библиотеки воспользовались последним.

Смещение

Coming soon

Библиотека

Скачать библиотеку можно здесь. Скопируйте её в папку libraries (она должна быть в папке, где у вас установлена Ardiono IDE). Затем откройте Arduino IDE и запустите пример (File→Examples→Transformation→Serial). Отакалибровав предварительно магнитометр (см. п. «Калибровка магнитометра»), залейте этот скетч на плату и откройте Serial Monitor. Важно, чтобы в начальный момент ваша плата MARG была параллельна земле (т. е. чтобы вектор гравитации был направлен точно по оси z) и не двигалась. Это необходимо для устранения отклонений в показаниях акселерометров и гироскопов. Если плата находилась в другом положении, просто перезагрузите Arduino.

Если вы хотите написать свой скетч на основе нашей библиотеки, просто добавьте нашу библиотеку в свой скетч при помощи Sketch→Imporl Library→Transfomation.

Основные методы класса Transformation

calibrate(minX, maxX, minY, maxY, minZ, maxZ) — метод для передачи в алгоритм параметров калибровки магнитометра (см. п. «Калибровка магнитометра»). Этот метод нужно вызывать перед методом init

init — инициализация. Здесь происходит устранение отклонений датчиков, вычисление абсолютной ориентации и фиксация её. Этот метод должен запускатья при начале работы платы

fix — фиксация ориентации. После вызова этого метода текущая ориентация фиксируется. После этого метод getFixed будет возвращать ориентацию относительно новой фиксированной ориентации. По умолчанию фиксированной ориентацией является ориентация, которая была при инициализации

getFixed — получить относительный поворот платы относительно фиксированной ориентации в углах Эйлера

getAbsolute — получить абсолютную ориентацию платы в пространстве в углах Эйлера

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

Где купить?

Купить Ориентир-1 можно в следующих магазинах:

Упаковка Ориентир-1

 



Обсуждение закрыто.