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

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

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

Сообщение ft-ninja » 15 май 2011, 22:33

Стоимость деталей fischertechnik (включая сервомоторы с встроенными редукторами) в этом роботе ~ 6000 р. Остальное - это бортовой контроллер, драйвер для двигателей, датчики и аккумулятор.
Поздравляю, ft-ninja!
Изображение
Аватара пользователя
ft-ninja
 
Сообщения: 82
Зарегистрирован: 21 дек 2009, 15:21
Откуда: Inner Mongolia

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

Сообщение HarryStar » 16 май 2011, 09:23

Eruman писал(а):Посмотрел на fischertechnik, дорогой он, по-моему. А на простых деталях такого балансира собрать нереально?

Почему нереально. Мне кажется 1 любая серва постоянного вращения, любой контроллер и гироскоп одноосевой (ну еще акк ессно) - это минимум деталей для простого балансира. Корпус можно сделать из детского конструктора или алюминиевых уголков например.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

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

Сообщение =DeaD= » 16 май 2011, 09:25

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

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

Сообщение Madmess » 04 июн 2011, 10:38

Сервы будет маловато. Желательная скорость вращения 300об\мин
Раму можно сделать из оргстекла 3-4мм и соединить четырьмя штангами с резьбой М4
Колеса 90-100мм... Моторы лучше брать с энкодером. Но энкодер должен быть не одноканальным.
Человек в своей жизни ни в чем не может быть уверен, кроме того, что ему придется с ней расстаться. Джордж Мередит
Аватара пользователя
Madmess
 
Сообщения: 12
Зарегистрирован: 13 май 2011, 19:58
Откуда: Москва
ФИО: Евгений

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

Сообщение DrSergey » 02 авг 2011, 09:30

Хочу сделать такого же, ни как не найти алгоритм балансировки, все мною найденные завязаны на точные расчеты центров масс и т.д., подскажите плс, как тут реализовано или ссылочку на разжеванное описание ? :)
DrSergey
 
Сообщения: 18
Зарегистрирован: 10 июл 2011, 17:08

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

Сообщение MiBBiM » 02 авг 2011, 13:02

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

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

Сообщение DrSergey » 03 авг 2011, 10:32

Посчитать не проблема, только это не правильно, нужно что бы он сам равновесие ловил независимо от массы(в расчетных, относительно мощности, пределах) и положения центров тяжести.
DrSergey
 
Сообщения: 18
Зарегистрирован: 10 июл 2011, 17:08

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

Сообщение MiBBiM » 04 авг 2011, 23:42

Как раз таки правильнее вначале посчитать, чем потом подбирать магические константы.
Физически в балансере есть три интересные вещи: колесная ось, центр масс и расположение датчиков (лично я поставил бы их на прямой, проходящей через ц.м и ось).
Управление балансом делится на две части: получение текущего угла относительно вертикали и расчет управляющего воздействия на ось.
Первое в простом варианте выглядит как получение направления вектора силы тяжести посредством акселерометра, далее школьной геометрией получаем искомый угол.
Какие есть проблемы: объединение показаний гироскопа и акселерометра является нетривиальной задачей; во время компенсации угла у всей системы появляется дополнительное ускорение, и аксель будет отдавать его сумму с g, то есть получаемый угол будет грязным.
Второе тоже довольно несложно. Сделаем тривиальное замечание: балансирование - удержание угла наклона робота относительно вертикали равным нулю; маневр «вперед» или «назад» выполняется через удержание ненулевого угла, при этом чем он больше, тем выше скорость.
Также заключаем, что увеличить модуль угла можно через движение в противоположном наклону направлении, а уменьшить - через сонаправленное. Всё, можно ехать)
У вас есть текущий угол, желаемый угол, осталось сформировать «напругу» на моторы. Банальнейший путь - пропорциональное управление, т.е. разницу углов домножаете на константу и посылаете исполнительному устройству. Способ чуть посложней - запилить ПИД, про него можно прочитать в робофоруиской вики.
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

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

Сообщение DrSergey » 05 авг 2011, 12:19

Не совсем мне понятны некоторые вещи:

Почему обязательно связка гироскоп + акселерометр("объединение показаний"), гироскоп нам даёт итак угол, акселем можно только обнулять, или собирать их пачку и самому лепить гироскоп http://habrahabr.ru/blogs/algorithm/114513/

Самая непонятная вещь - это расчет управляющего воздействия, предположим робот стоял в положении равновесия(управляющее воздействие, например напряжение на двигателе = 0), далее мы берем и бросаем на робота сверху груз, робот начинает быстро падать, что делает система управления - заметив падение начинает давать напряжение на двигатель, вопрос - как подбирается это напряжение: можно начать перебирать(увеличивать от нуля до предела), но это займет много времени, робот десять раз успеет упасть(либо мы должны иметь аппарат получения текущего угла(ускорения) очень быстрый что-нибудь > 2-3 КГц) при имеющихся 0.1 КГц; можно например начать с середины(бинарный поиск), но при больших мощностях двигателя, это может оказаться слишком много и робот завалится в другую сторону. Плюс все осложняется тем, что воздействие описанное может быть не линейным => скорость получения данных должна быть еще выше... :(
DrSergey
 
Сообщения: 18
Зарегистрирован: 10 июл 2011, 17:08

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

Сообщение MiBBiM » 05 авг 2011, 23:11

Ну, связка совсем не обязательна - я видел балансеры вообще без акселей-гиро на двух кнопках с усиками, на дальномере мордой в пол. Опять же, есть вероятность того, что робот только с акселем будет неплохо балансировать.
Объединение, вообще говоря, лучше сделать, чем нет, ибо:
1) мемс гироскопы _очень быстро_ накапливают ошибку.
2) корректировку акселем нужно проводить без собственных ускорений, чтобы не загрязнить вектор g. Это значит никаких неровностей поверхности, двигатель без вибраций, постоянная скорость. Фактически придется останавливать робота каждые, скажем, 5 секунд.
Вот, специально нашел ролик с тестами датчиков, там слева направо показания акселя, фильтра Калмана, гиры.
http://www.youtube.com/watch?v=MJ71V_wxtuU
По управлению: константы подбираются один раз и хардкодятся в программу, всё на глазок. При пропорциональном управлении воздействие = дельта_угол * конст. Если произойдет перерегулирование(слишком сильно дернуть), то следующее движение его исправит.
Если пропорциональной части окажется недостаточно, можно будет добавить дифференциальную, зависящую от скорости изменения угла. Ознакомитесь со статей о ПИД регуляторе wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8_%22%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE_%D0%BE_%D0%9F%D0%98%D0%94-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%B0%D1%85%22.
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

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

Сообщение DrSergey » 08 авг 2011, 10:40

Судя по видео, гироскоп вообще вещь лишняя, ибо с таким уползнием он только мешать будет, нужно строить систему акселерометров пропущенную через Калмана.
С принципом ПИД управления я знаком :) что бы данный аппарат (с ПИД управлением) сработал как надо, ему нужно как минимум два измерения при воздействии управления, но как я описал ранее, если робот двигается в реальных условиях(открытое пространство, неровная дорога, препятствия, ветер...) например 20 кмч, наезжает на препятствие и тут порыв ветра, для стабилизации время будет отведено крайне мало и гироскоп для ПИД регулятора не успеет дать информацию о положении, до того как это всё упадет...
DrSergey
 
Сообщения: 18
Зарегистрирован: 10 июл 2011, 17:08

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

Сообщение MiBBiM » 10 авг 2011, 16:05

гироскоп важен в краткосрочной перспективе. если, скажем, за десятую секунды робот наехал на камешек, аксель показал резкое изменение ускорения и расчетное приращение угла равно 30 градусов; в это же время изменение по гироскопу 10 градусов, а его дрейф за это время не больше 7гр, тогда настоящее изменение должно лежать в пределах [3..17] и 30 - явно завышенная оценка.

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

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

Сообщение Rokstedi » 23 ноя 2017, 16:37

Подскажите, если у меня есть магнитный компас(HMC5883L), он работает в 3-х осях. По сути же его одного должно хватить для создания такого робота?
Rokstedi
 
Сообщения: 1
Зарегистрирован: 23 ноя 2017, 16:34

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

Сообщение Madf » 23 ноя 2017, 17:07

Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Пред.

Вернуться в Наши проекты

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

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