roboforum.ru

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

Зачем в балансере акселерометр?

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

Зачем в балансере акселерометр?

Сообщение Master » 19 апр 2009, 21:40

Гироскоп ясно зачем - отклонился от нужного курса, к примеру, начал падать вперед включаем оба мотора и едем вперед чтобы стабилизировать падение, а акселерометр зачем?
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Зачем в балансере акселерометр?

Сообщение MiBBiM » 19 апр 2009, 22:02

во-первых, задавать начальную позицию для гироскопа (выравнивание при старте).
во-вторых, насколько я знаю, гироскопы со временем накапливают ошибку, что может привести к падению. акселлерометр время от времени (когда робот стоит, например) обнуляет гироскоп, устраняя эту самую ошибку
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Зачем в балансере акселерометр?

Сообщение Master » 20 апр 2009, 00:54

Что-то я не понял, акселерометр измеряет ускорение, каким образом он задаст начальную позицию и почему именно он должен обнулять гироскоп?
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Зачем в балансере акселерометр?

Сообщение =DeaD= » 20 апр 2009, 08:07

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

Re: Зачем в балансере акселерометр?

Сообщение Master » 20 апр 2009, 10:48

Таким образом получается акселерометр определяет вертикально стоит туловище или нет. И если нет гироскоп определяет в какую сторону произошло отклонение и на сколько.
Правильно?
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Зачем в балансере акселерометр?

Сообщение =DeaD= » 20 апр 2009, 11:07

неее :)

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

Re: Зачем в балансере акселерометр?

Сообщение Master » 20 апр 2009, 11:44

Короче балансера мы не скоро построим :)
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Зачем в балансере акселерометр?

Сообщение MiBBiM » 20 апр 2009, 16:27

ну да, аксель меряет проекции ускорения на каждую из его осей. если робот стоит, то аксель будет мерить g(и соотвественно знать наклон робота). но стоит роботу поехать, как ускорение на акселе становится a+g, и вычислить направление g уже затруднительно.
в этом случае помогает гироскоп, показания котрого слабо зависят от ускорения робота. но и тут нас подстерегает лажа: гироскоп накапливает серьезную ошибку. после достижения критического значения робот с горя хлопнет вотки и сляжет :) поэтому гироскоп периодически обнуляется, чтобы устранить ошибку.
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Зачем в балансере акселерометр?

Сообщение executer » 21 апр 2009, 17:42

А что значит ваше "обнуляется"? Что ждет пока остановится и потом тупо сбрасует угол гироскопа? А если долго ездить без остановки? Упадет от усталости? Както не технично.
:no:
Ктото из местных Великих когдато о хитром фильтровании говорил чтобы гироскоп и аксель вместе работали непрерывно а не друг друга сбрасывали когда прийдется, можно ли осветить эту стоону вопроса?
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: Зачем в балансере акселерометр?

Сообщение =DeaD= » 21 апр 2009, 17:55

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

Re: Зачем в балансере акселерометр?

Сообщение Master » 21 апр 2009, 22:40

=DeaD=, это ты щас с кем разговаривал? Две строки текста - нифига не понял.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Зачем в балансере акселерометр?

Сообщение =DeaD= » 21 апр 2009, 23:11

:D

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

Re: Зачем в балансере акселерометр?

Сообщение boez » 21 апр 2009, 23:25

Master писал(а):=DeaD=, это ты щас с кем разговаривал? Две строки текста - нифига не понял.

Попробую разжевать (типа капитан очевидность :) )
Акселерометр меряет ускорение. Может вдоль нескольких осей. Но поскольку действие гравитации полностью аналогично ускорению, то он меряет еще и силу тяжести, и отличить одно от другого не может. Гироскоп (который MEMS, "твердотельный") на самом деле вообще не гироскоп :) А датчик угловой скорости. Меряет, будете смеяться, угловую скорость. Называется гироскопом только потому, что гироскопами тоже можно мерять угловую скорость.

Вернемся к нашему перевернутому маятнику. Пусть для простоты он качается в одной плоскости, чаще всего так и есть. Как его балансировать? Нужно узнать угол отклонения от вертикали. Как узнать? Есть 2 метода.

По акселерометру - если маятник вертикален, ускорение вдоль горизонтальной оси нулевое. Если маятник отклонился, то в показаниях акселерометра появляется проекция силы тяжести, примерно пропорциональная отклонению. Но при этом при каждом качании маятника акселерометр к наклону добавляет сигнал, пропорциональный ускорению. Он регулировать очень мешает, но зато полезен тем, что интеграл от него после возврата маятника на исходную позицию равен нулю. Значит, если долго усреднять показания акселерометра, то получим наклон маятника без "примесей". Но за то время пока мы усредняем, маятник упадет :(

По датчику угловой скорости - угловая скорость есть производная угла наклона. Значит если показания датчика проинтегрировать, то получим угол. Причем любые быстрые изменения угла будут учтены. Но зато появляется накопление ошибки датчика. Если, предположим, в покое показания равны 1 градус в секунду, то через 90 секунд наш интеграл станет равен 90 градусам, хотя маятник по прежнему вертикален. Ну или если мы по этим показаниям регулируем, то наоборот, мы будем держать значение интеграла равное нулю, а маятник через 90 сек ляжет.

Поэтому долговременное значение угла нужно определять акселерометром, а кратковременно - ДУСом (гироскопом).

А теперь как объединить. ИМХО, можно и без кальмана. Взять показания акселерометра, пропустить через ФНЧ. А показания ДУС - через интегратор+ФВЧ (по сути это фильтр с характеристикой как у интегратора, но только до определенной частоты, потом спад). частоты среза фнч и фвч взять равными, выбрать исходя из характеристик ДУС и маятника. И вот эту сумму и считать углом наклона маятника. По ней ПИ/ПИД и на мотор.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Зачем в балансере акселерометр?

Сообщение executer » 22 апр 2009, 11:18

Спасибо за подробное объяснение. Вобщем понятно :good:
А в Лего роботе-балансере что фильтр Кальмана или наколенный вариант постом выше? (просто видел видео держится он отлично, вот и интересно какой алгоритм юзают)
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел


Вернуться в Новичкам или основы основ роботостроения.

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

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