roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 05:04

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 17:16 
Не в сети
Аватара пользователя

Зарегистрирован: 18 ноя 2010, 21:27
Сообщения: 96
Откуда: Ростов-на-Дону
Уважаемые робототехники!
Предлагаю Вашему вниманию свою разработку – модуль измерения угла наклона/поворота по 2-м осям:

Вложение:
AllAxis.jpg
AllAxis.jpg [ 149.61 КиБ | Просмотров: 11775 ]

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

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
AccOnly.jpg [ 50.41 КиБ | Просмотров: 11734 ]


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

Angle = Angle + Gyro*Tick

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

Вложение:
GyroAcc.jpg
GyroAcc.jpg [ 47.4 КиБ | Просмотров: 11749 ]


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


Ну вот, вкратце вроде все...
Детальная информация у меня на сайте


Последний раз редактировалось vvk 31 янв 2013, 21:53, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 19:24 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

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

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 21:12 
Не в сети
Аватара пользователя

Зарегистрирован: 18 ноя 2010, 21:27
Сообщения: 96
Откуда: Ростов-на-Дону
Myp писал(а):
цену назови
тогда будет интересно.


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

16.06.12 уезжаю на три недели. Т.е. продавать буду по возвращению.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 21:55 
Не в сети
Аватара пользователя

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

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 22:27 
Не в сети
Аватара пользователя

Зарегистрирован: 18 ноя 2010, 21:27
Сообщения: 96
Откуда: Ростов-на-Дону
dccharacter писал(а):
Компаса я так понимаю нет?

Нет, только наклон. С компасом и с обработкой поворота по вертикальной оси получается существенно дороже, т.к. нужен более мощный проц. Может в будущем сделаю, если спрос будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 22:34 
Не в сети
Аватара пользователя

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


Вложения:
adxl345.c [4.18 КиБ]
Скачиваний: 572
adxl345.h [18.88 КиБ]
Скачиваний: 504

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 23:37 
Не в сети
Аватара пользователя

Зарегистрирован: 18 ноя 2010, 21:27
Сообщения: 96
Откуда: Ростов-на-Дону
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. Вроде как даже работает... для примера файлы во вложении. Мож их куда-то на гитхаб/гуглкод пристроить? Посоветуйте?


Ой, тут я вряд-ли что-то посоветую...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 13 июн 2012, 23:41 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
vvk писал(а):
Я посмотрел эту ссылку, там ведь процессора нет. Я так понял, они вроде открытые библиотеки предлагают. А плата с акселерометром, гироскопом и компасом там заявлена за 70 евро. Для сравнения Pololu MiniIMU-9 стоит 50$, функционально тоже самое. Так же есть свободные библиотеки. Правда с ними что бы разобраться, надо знать соответствующую математику - матрицы поворота или кватерионы (не знаю, на чем они библиотеки делали), углы Эйлера.

FreeIMU на кватерионах. Ну, процессор - это любой камень с I2C, ценой меньше доллара. Ну или I2C от FT (серия X). Короче это не сильное конкурентное преимущество. А этот Фри ИМУ - это опен сорс, т.е. платы заказываешь за 10 долларов и камней на 20-ть. Фен в руки и усе. Но это я так. Для балансира нормальная плата с нормальной ценой.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 14 июн 2012, 08:38 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 14 июн 2012, 17:38 
Не в сети
Аватара пользователя

Зарегистрирован: 18 ноя 2010, 21:27
Сообщения: 96
Откуда: Ростов-на-Дону
=DeaD= писал(а):
Слегка громоздкий модуль, а так - красиво! :good:


Да, великоват. Не рискнул сильно уменьшать, боюсь ошибок при монтаже. Хотя, если буду продолжать эту тему, следующий модуль сожму сильнее - резервы есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 11 июл 2012, 22:41 
Не в сети

Зарегистрирован: 20 май 2012, 16:31
Сообщения: 13
А с какой целью вы изобретаете такие платы, когда есть множество готовых решений?

http://store.ckdevices.com/products/Mon ... nsor-.html
http://www.sparkfun.com/products/10736
ну или попроще:
http://www.pololu.com/catalog/product/1265


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 12 июл 2012, 17:37 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 12 июл 2012, 18:25 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
MinIMU-9 от пололу точно компактней, но там голые датчики без МК на борту с алгоритмами обсчета.
А по сравнению с другими платами с МК размеры сопоставимы или у ТС даже больше, но тут цена в 2 раза ниже.

В общем с виду хорошее решение :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 12 июл 2012, 20:58 
Не в сети
Аватара пользователя

Зарегистрирован: 18 ноя 2010, 21:27
Сообщения: 96
Откуда: Ростов-на-Дону
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 писал(а):


Это ведь тоже не готовый продукт.
У 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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль измерения углов наклона/поворота
СообщениеДобавлено: 12 июл 2012, 21:25 
Не в сети

Зарегистрирован: 20 май 2012, 16:31
Сообщения: 13
Не совсем понял, что понимается под готовым продуктом.

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

Хотя низкая цена для своих пацанов - безусловно отличная предпосылка)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO