roboforum.ru

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

Балансирующий робот

Балансирующий робот

ukrnano » 20 янв 2014, 16:29

Добрый день. Пытаюсь сделать робота-балансера(уже 4й вариант). Кто-нибудь может подсказать на пальцах как фильтруется сигнал с гироскопа и акселерометра? Гугл как-то уж слишком сложно и муторно описывает теорию фильтра Калмана, альфа-бета фильтра и тд.

Грубо говоря, есть байтовых значения: Gyro и Acsel, которые обновляются 100 раз в секунду, какие математические действия нужно сделать сделать чтобы получить отфильтрованное значение?

вот прошлый тестовый вариант шасси:
9163416.jpg

7241699.jpg

5260943.jpg

5234361.jpg

3488179.jpg

2936988.jpg


На данный момент, для увеличения возможностей, переделал блок управления:



Зарание всем спасибо!

Re: Балансирующий робот

Madf » 20 янв 2014, 16:31

я так понимаю, что у вас слишком малое передаточное число с мотора на колеса, возможно не хватает крутящего момента

Re: Балансирующий робот

ukrnano » 20 янв 2014, 16:43

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

Re: Балансирующий робот

Madf » 20 янв 2014, 18:37

Влиять это может на то, что:

- временные хар-ки более быстрые (за короткий промежуток времени, надо отдать мгновенно данные (выполнить расчет, тянет ли железо, МК, код);
- запас мощности системы питания, да и просто мощности мотора в критических режимах работы (скажем, вместо оборота на 10 градусов за пол секунды, он выдает 8 градусов или вообще за 12 секунд);
- не уверен, что пасиковая система привода оправдана (не должно быть проскальзываний, растяжки как самого пассика, так и самой резины колес относительно поверхности).

Re: Балансирующий робот

ukrnano » 20 янв 2014, 18:44

ОК, я понял.

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

Re: Балансирующий робот

Romeo » 20 янв 2014, 20:52

ukrnano писал(а):еще есть проблемка с фильтрацией входных данных....увидеть бы пример расчета хотя бы для какого-то алгоритма фильтрации....

x[i]=(x[i-1]+x[i]+x[i+1])/3
И так для каждого из элементов.
Вложения
1.JPG

Re: Балансирующий робот

linvinus » 20 янв 2014, 20:57

Хмм. тута были уже? http://www.x-io.co.uk/category/open-source/ (читать с конца)
Всё готово, нужно только подключить.
Кстати у акселя и гироскопа накапливается ошибка, так что если сильно потрясти нулевое положение уплывёт.
Почитайте статьи по ссылке там всё разжёвано.

готовый пример для ардуино https://github.com/pololu/minimu-9-ahrs-arduino

Re: Балансирующий робот

ukrnano » 20 янв 2014, 23:07

Romeo писал(а):
ukrnano писал(а):еще есть проблемка с фильтрацией входных данных....увидеть бы пример расчета хотя бы для какого-то алгоритма фильтрации....

x[i]=(x[i-1]+x[i]+x[i+1])/3
И так для каждого из элементов.


Спасибо за подсказку! А какой программой Вы строили такой график? Я нагуглил только SFmonitor (http://www.poprobot.ru/soft/sfmonitor), но как-то пока не получилось ее запустить, к ней нужна еще куча библиотек..

Добавлено спустя 15 минут 52 секунды:
linvinus писал(а):Хмм. тута были уже? http://www.x-io.co.uk/category/open-source/ (читать с конца)
Всё готово, нужно только подключить.
Кстати у акселя и гироскопа накапливается ошибка, так что если сильно потрясти нулевое положение уплывёт.
Почитайте статьи по ссылке там всё разжёвано.

готовый пример для ардуино https://github.com/pololu/minimu-9-ahrs-arduino


Благодарю, интересный ресурс, надеюсь разжиться там софтишком для своих нужд. Но как-то, к готовому софту + готовым модулям Ардуины душа не лежит...в интернете, все роботы-балансеры(да и остальные), которые я видел, сделаны на готовом ардуино и остальных стандартных модулях и деталях, а также софте....как на мой вкус, то слишком мало творчества, ни паяльника, ни программирования....так-что буду пытаться сделать велосипед))..

Re: Балансирующий робот

Romeo » 20 янв 2014, 23:34

ukrnano писал(а):... А какой программой Вы строили такой график? ...

Прогу писал сам, на VB6. Пробовал разные фильтры сигнала.

Re: Балансирующий робот

linvinus » 21 янв 2014, 11:21

Советую изучить http://www.gnuplot.info/
программа может строить графики из любых данных
Ещё можно рисовать и делать управление используя Processing http://robocraft.ru/blog/arduino/336.html
http://www.x-io.co.uk/osc-illoscope/


Вот ещё хороший фильтр, http://ru.wikipedia.org/wiki/%D0%9C%D0% ... 1%82%D1%80
который хорошо сглаживает кратковременные пики, в отличие от обычного усреднения.

Re: Балансирующий робот

ukrnano » 21 янв 2014, 22:22

Romeo писал(а):
ukrnano писал(а):... А какой программой Вы строили такой график? ...

Прогу писал сам, на VB6. Пробовал разные фильтры сигнала.


А не могли бы вы поделиться такой программкой, если это не секретная технология?!))...мне нужна самая простая..чтоб взяла байт с ком-порта, поставила точку на график и все.

Добавлено спустя 6 минут 57 секунд:
linvinus писал(а):Советую изучить http://www.gnuplot.info/
программа может строить графики из любых данных
Ещё можно рисовать и делать управление используя Processing http://robocraft.ru/blog/arduino/336.html
http://www.x-io.co.uk/osc-illoscope/


Оо, процессинг под виндовс!..надеюсь получиться с ним разобраться!.. :beer: пасиб

Re: Балансирующий робот

linvinus » 21 янв 2014, 23:10

мне нужна самая простая..чтоб взяла байт с ком-порта, поставила точку на график и все.

gnuplot с этим отлично справится.
передача отладочной информации с контроллера это сама по себе ресурсоёмкая задача.
Самое оптимальное, сначала набрать массив данных в контроллере с отметками времени, а потом передавать через компорт для сохранения в файл, потом данные из файла можно изучать и обрабатывать.
передавать лучше в бинарном виде так быстрее, потом ,если нужно, можно перевести в текстовый вид, для наглядности.

Re: Балансирующий робот

Romeo » 22 янв 2014, 01:13

ukrnano писал(а):...А не могли бы вы поделиться такой программкой, если это не секретная технология?!))...мне нужна самая простая..чтоб взяла байт с ком-порта, поставила точку на график и все...

Во вложении проект на VB6. Принимает указанное количество байт с указанного порта и делает 2 фильтра с этими данными. Выводит входной и выходной сигналы на экран.
Вложения
filter.rar
(10.76 КиБ) Скачиваний: 0

Re: Балансирующий робот

Madf » 22 янв 2014, 10:42

Спасибо, полезно.

зы: одна проблема, mscomm не воспринимает порты больше 2х, надо быть внимательным. (

Re: Балансирующий робот

ukrnano » 22 янв 2014, 13:12

Всем спасибо за подсказки!...теперь главное переварить такой объем информации))


Rambler\'s Top100 Mail.ru counter