roboforum.ru

Технический форум по робототехнике.

Модуль измерения углов наклона/поворота

Обсуждение и примеры готовых и самосборных компонент для построения роботов.

Модуль измерения углов наклона/поворота

Сообщение vvk » 13 июн 2012, 17:16

Уважаемые робототехники!
Предлагаю Вашему вниманию свою разработку – модуль измерения угла наклона/поворота по 2-м осям:

AllAxis.jpg

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

1. Углы наклона, т.е. угол между осью (X и Y) и ее проекцией на горизонтальную плоскость.

ИЛИ

2. Углы поворота (иногда их называют углами Эйлера, иногда pitch и roll, иногда тангаж и крен). Совсем коротко, что это такое:
Любой поворот можно разложить на три составляющие - повороты отдельно по каждой из осей X,Y,Z. Это и есть углы Эйлера. Т.к. акселерометр не может измерить поворот вокруг вертикальной оси, (модуль измеряет только наклон), поворот будет разложен на две составляющие: X и Y, которые и измеряются модулем. Более подробно про углы Эйлера здесь
Простейший пример применения углов Эйлера – дублирование движения одного устройства другим.

Функционально модуль состоит из трехосевого акселерометра LIS332AX и двухосевого гироскопа LPR410AL, результаты измерений с которых поступают на процессор PIC18F25K20. В процессоре реализован цифровой фильтр, объединяющий данные с акселерометра и гироскопа с последующей передачей суммарного результата пользователю по каналу I2C и каналу UART. К модулю придается компьютерная программа, позволяющая проводить анализ поведения объекта в реальном времени, а также задавать режимы работы модуля. Программа получает данные из модуля через COM-порт, при этом пользовательский внешний процессор может одновременно работать через I2C, что является полезной функцией при отладке алгоритмов движения объекта.

Xарактеристики модуля:
1.Диапазон измерения углов наклона ±90º
2.Диапазон измерения углов поворота pitch ±90º, roll ±180º
3.Точность измерения: не хуже ±1º, типовая ±0,3º
4.Диапазон рабочей угловой скорости: 0 – 380 º/сек.
5.Рабочее напряжение: 3.3 В.
6.Питание: 3.3 – 16 В. На плате установлен регулятор напряжения LF33, дающий возможность пользователю питать свои схемы от 3.3В.
7.Выходные порты: I2C (ведомый), UART. При стыковке UART с 5-ти вольтовой схемой по линии Tx может потребоваться преобразователь уровня (зависит от внешнего процессора).
8.Данные, выдаваемые пользователю: углы наклона, прямые откалиброванные результаты измерений с акселерометра по осям X, Y, Z, и с гироскопа по осям X и Y. Возможна выдача не всех данных, а только заданных пользователем. Вместо углов наклона пользователь может получать углы поворота (тангаж (pitch) и крен (roll)).
9.При работе по I2C данные выдаются пользователю по запросу. Возможно подключение нескольких модулей на одну шину. При этом пользователь должен задать I2C-адрес каждого модуля.
10.Частота запросов внешнего процессора по шине I2C: при запросе менее 5-ти каналов - 200Гц, при запросе 5-ти и более - 180Гц.
11.Скорость работы шины I2C типовая - 100 кбит/c, максимальная 200 кбит/c.
12.При работе через UART данные могут выдаваться как по запросу, так и с заданной частотой в диапазоне от 16 до 200Гц.
13.Температурный диапазон -40... +85. (согласно техописаниям на микросхемы, реальные термоиспытания не проводились)
14.Размеры, мм: 41x47.

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


Как это работает.
Рассмотрим график измерения угла наклона по одной оси с помощью только акселерометра. Модуль был прикреплен к поворотной платформе, собранной на сервоприводах Dynamixel. Модуль из нулевого положения с постоянной скоростью поворачивался сначала на +45°, затем на -45°. График:

AccOnly.jpg


На графике видна сильная зашумленность во время движения, и умеренная зашумленность в состоянии покоя. Особенно сильный шум в начале и в конце поворота. Таким образом, измерение угла только с помощью акселерометра приемлимо в приложениях с невысокими требованиями к точности. Поэтому для измерения положения динамических объектов целесообразно применять гироскоп. Он, в отличие от акселерометра, измеряет не ускорение и не угол, а угловую скорость. Поэтому он значительно меньше подвержен шумам вибрации. Для получения угла из угловой скорости показания гироскопа необходимо проинтегрировать и добавить к ним начальный угол (т.е. угол покоя гироскопа). Интегрирование производится по алгоритму:

Angle = Angle + Gyro*Tick

Где Angle – измеренный ранее угол (при первом вычислении он должен быть равен начальному углу), Gyro – угловая скорость с гироскопа, Tick - период измерения.
График угла, измеренный только по данным с гироскопа (в сравнении с углом по акселерометру; коричневый - гироскоп, зеленый - акселерометр):

GyroAcc.jpg


Как видно, шумы на графике практически отсутствуют, но при этом происходит накопление ошибки интегрирования, что приводит к изменению постоянной составляющей и уходу результата. Поэтому на длительном интервале времени измерять угол с помощь гироскопа нельзя.
Уменьшить этот эффект можно хорошей калибровкой гироскопа и точной оцифровкой. Однако полностью устранить его не удастся. Для того, что бы полностью избавиться от ухода постоянной составляющей, необходимо объединить результаты измерений акселерометра и гироскопа. Иными словами, само измерение угла нужно производить гироскопом, т.к. у него очень маленькие шумы, а постоянную составляющую необходимо брать от акселерометра. Именно это и происходит в цифровом фильтре процессора модуля. Результат вычислений процессора приведен на следующем графике в сравнении с предыдущими графиками:
Res.jpg


Ну вот, вкратце вроде все...
Детальная информация у меня на сайте
Последний раз редактировалось vvk 31 янв 2013, 21:53, всего редактировалось 1 раз.
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Модуль измерения углов наклона/поворота

Сообщение Myp » 13 июн 2012, 19:24

цену назови
тогда будет интересно.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Модуль измерения углов наклона/поворота

Сообщение vvk » 13 июн 2012, 21:12

Myp писал(а):цену назови
тогда будет интересно.


1600р. Плюс доставка из Ростова-на-Дону.

16.06.12 уезжаю на три недели. Т.е. продавать буду по возвращению.
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Модуль измерения углов наклона/поворота

Сообщение dccharacter » 13 июн 2012, 21:55

Компаса я так понимаю нет?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Модуль измерения углов наклона/поворота

Сообщение vvk » 13 июн 2012, 22:27

dccharacter писал(а):Компаса я так понимаю нет?

Нет, только наклон. С компасом и с обработкой поворота по вертикальной оси получается существенно дороже, т.к. нужен более мощный проц. Может в будущем сделаю, если спрос будет.
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Модуль измерения углов наклона/поворота

Сообщение dccharacter » 13 июн 2012, 22:34

http://www.varesano.net/blog/fabio/free ... f-marg-imu
Ну не то, чтобы сильно. Но не 50 долл конечно.
Я, кстати, написал хидеры для itg3200, adxl450 и не помню уж для какого компаса в стиле CMSIS-библиотек и с эмуляцией ардуиновской freeimu-library. Вроде как даже работает... для примера файлы во вложении. Мож их куда-то на гитхаб/гуглкод пристроить? Посоветуйте?
Вложения
adxl345.c
(4.18 КиБ) Скачиваний: 573
adxl345.h
(18.88 КиБ) Скачиваний: 505
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Модуль измерения углов наклона/поворота

Сообщение vvk » 13 июн 2012, 23:37

dccharacter писал(а):http://www.varesano.net/blog/fabio/freeimu-designing-free-speech-9-domdof-marg-imu
Ну не то, чтобы сильно. Но не 50 долл конечно.


Я посмотрел эту ссылку, там ведь процессора нет. Я так понял, они вроде открытые библиотеки предлагают. А плата с акселерометром, гироскопом и компасом там заявлена за 70 евро. Для сравнения Pololu MiniIMU-9 стоит 50$, функционально тоже самое. Так же есть свободные библиотеки. Правда с ними что бы разобраться, надо знать соответствующую математику - матрицы поворота или кватерионы (не знаю, на чем они библиотеки делали), углы Эйлера.





dccharacter писал(а):Я, кстати, написал хидеры для itg3200, adxl450 и не помню уж для какого компаса в стиле CMSIS-библиотек и с эмуляцией ардуиновской freeimu-library. Вроде как даже работает... для примера файлы во вложении. Мож их куда-то на гитхаб/гуглкод пристроить? Посоветуйте?


Ой, тут я вряд-ли что-то посоветую...
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Модуль измерения углов наклона/поворота

Сообщение dccharacter » 13 июн 2012, 23:41

vvk писал(а):Я посмотрел эту ссылку, там ведь процессора нет. Я так понял, они вроде открытые библиотеки предлагают. А плата с акселерометром, гироскопом и компасом там заявлена за 70 евро. Для сравнения Pololu MiniIMU-9 стоит 50$, функционально тоже самое. Так же есть свободные библиотеки. Правда с ними что бы разобраться, надо знать соответствующую математику - матрицы поворота или кватерионы (не знаю, на чем они библиотеки делали), углы Эйлера.

FreeIMU на кватерионах. Ну, процессор - это любой камень с I2C, ценой меньше доллара. Ну или I2C от FT (серия X). Короче это не сильное конкурентное преимущество. А этот Фри ИМУ - это опен сорс, т.е. платы заказываешь за 10 долларов и камней на 20-ть. Фен в руки и усе. Но это я так. Для балансира нормальная плата с нормальной ценой.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Модуль измерения углов наклона/поворота

Сообщение =DeaD= » 14 июн 2012, 08:38

Слегка громоздкий модуль, а так - красиво! :good:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль измерения углов наклона/поворота

Сообщение vvk » 14 июн 2012, 17:38

=DeaD= писал(а):Слегка громоздкий модуль, а так - красиво! :good:


Да, великоват. Не рискнул сильно уменьшать, боюсь ошибок при монтаже. Хотя, если буду продолжать эту тему, следующий модуль сожму сильнее - резервы есть.
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Модуль измерения углов наклона/поворота

Сообщение Lutka » 11 июл 2012, 22:41

А с какой целью вы изобретаете такие платы, когда есть множество готовых решений?

http://store.ckdevices.com/products/Mon ... nsor-.html
http://www.sparkfun.com/products/10736
ну или попроще:
http://www.pololu.com/catalog/product/1265
Lutka
 
Сообщения: 13
Зарегистрирован: 20 май 2012, 16:31

Re: Модуль измерения углов наклона/поворота

Сообщение elmot » 12 июл 2012, 17:37

У ТС как минимум компактнее.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Модуль измерения углов наклона/поворота

Сообщение =DeaD= » 12 июл 2012, 18:25

MinIMU-9 от пололу точно компактней, но там голые датчики без МК на борту с алгоритмами обсчета.
А по сравнению с другими платами с МК размеры сопоставимы или у ТС даже больше, но тут цена в 2 раза ниже.

В общем с виду хорошее решение :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль измерения углов наклона/поворота

Сообщение vvk » 12 июл 2012, 20:58

Lutka писал(а):А с какой целью вы изобретаете такие платы, когда есть множество готовых решений?

Эти решения далеко не все готовые. Они только выглядят такими. Когда начинаешь детально разбираться возникает множество вопросов.

Lutka писал(а):http://store.ckdevices.com/products/Mongoose-9DoF-IMU-with-Barometric-Pressure-Sensor-.html


Например, по первой ссылке. Начал смотреть, и сразу наткнулся на фразу:
The base AHRS firmware computes the roll, pitch and yaw angles as well as reports the temperature and barometric pressure. The base AHRS code is suitable for measureing attitude and heading in static applications where the sensor board is not accelerating.
Т.е. если коротко перевести, то получается, что их базовый код измеряет углы только в статике. Хотя на видео все вроде бы выглядит работающим. Но по видео работоспособность оценить сложно. Какой-то нормальной документации в виде pdf файла так же найти я не смог. Только ссылки на pdf-ки на микросхемы.
Еще цитата c того-же сайта:

Features:
......
•Preloaded with Arduino bootloader
......
Т.е. программу для контроллера они выдать не смогли.
Получается, что изделие вроде бы есть, цена приемлимая, но мне кажется, что работать с ним будт тяжело. Это не готовый продукт.

Lutka писал(а):http://www.sparkfun.com/products/10736

По второй ссылке ситуация примерно такая же, я это изделие раньше изучал - тот же подход.

Lutka писал(а):ну или попроще:
http://www.pololu.com/catalog/product/1265


Это ведь тоже не готовый продукт.
У pololu готовая AHRS эта: http://www.pololu.com/catalog/product/1256 И стоит она на 100$ дороже. И код там закрытый.

Теперь для чего я делал этот модуль.
Изначально я пробовал работать с pololu chr-6dm (ставил его в своего шагающего робота). Это предыдущая версия их AHRS.
К сожалению, этот модуль иногда начинал вести себя самым странным образом, с чем я справиться не смог. Они не зря его поменяли. К тому же я хотел поставить AHRS в ноги робота вместо энкодера. Т.е. по три модуля на каждую ногу, и один в "голову". Итого мне надо минимум 7 шт. Плюс запас. Поэтому фирменные покупать получается дороговато. К тому же я хотел для отладки выводить данные в компьютер во время основной работы. Т.е. мне нужно два порта, работающих одновременно, а такой функции у других производителей я не встречал.
В результате я сделал не совсем AHRS, а в первую очередь виброустойчивый модуль измерения наклона в широком диапазоне. К тому же недорогой.Вот ближайший конкурент: http://www.robotshop.com/zct245an-ttl-2 ... ter-4.html
Аватара пользователя
vvk
 
Сообщения: 96
Зарегистрирован: 18 ноя 2010, 21:27
Откуда: Ростов-на-Дону

Re: Модуль измерения углов наклона/поворота

Сообщение Lutka » 12 июл 2012, 21:25

Не совсем понял, что понимается под готовым продуктом.

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

Хотя низкая цена для своих пацанов - безусловно отличная предпосылка)
Lutka
 
Сообщения: 13
Зарегистрирован: 20 май 2012, 16:31

След.

Вернуться в Готовые модули

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2