Стоимость деталей fischertechnik (включая сервомоторы с встроенными редукторами) в этом роботе ~ 6000 р. Остальное - это бортовой контроллер, драйвер для двигателей, датчики и аккумулятор.
Eruman писал(а):Посмотрел на fischertechnik, дорогой он, по-моему. А на простых деталях такого балансира собрать нереально?
Почему нереально. Мне кажется 1 любая серва постоянного вращения, любой контроллер и гироскоп одноосевой (ну еще акк ессно) - это минимум деталей для простого балансира. Корпус можно сделать из детского конструктора или алюминиевых уголков например.
Кроме гиры надо еще аксель, желательно 2-осевой. Но это если полностью красиво делать, а так народ делает балансиров на моторчике + выключателях концевых, без всяких МК
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Сервы будет маловато. Желательная скорость вращения 300об\мин Раму можно сделать из оргстекла 3-4мм и соединить четырьмя штангами с резьбой М4 Колеса 90-100мм... Моторы лучше брать с энкодером. Но энкодер должен быть не одноканальным.
Человек в своей жизни ни в чем не может быть уверен, кроме того, что ему придется с ней расстаться. Джордж Мередит
Хочу сделать такого же, ни как не найти алгоритм балансировки, все мною найденные завязаны на точные расчеты центров масс и т.д., подскажите плс, как тут реализовано или ссылочку на разжеванное описание ?
Посчитать не проблема, только это не правильно, нужно что бы он сам равновесие ловил независимо от массы(в расчетных, относительно мощности, пределах) и положения центров тяжести.
Как раз таки правильнее вначале посчитать, чем потом подбирать магические константы. Физически в балансере есть три интересные вещи: колесная ось, центр масс и расположение датчиков (лично я поставил бы их на прямой, проходящей через ц.м и ось). Управление балансом делится на две части: получение текущего угла относительно вертикали и расчет управляющего воздействия на ось. Первое в простом варианте выглядит как получение направления вектора силы тяжести посредством акселерометра, далее школьной геометрией получаем искомый угол. Какие есть проблемы: объединение показаний гироскопа и акселерометра является нетривиальной задачей; во время компенсации угла у всей системы появляется дополнительное ускорение, и аксель будет отдавать его сумму с g, то есть получаемый угол будет грязным. Второе тоже довольно несложно. Сделаем тривиальное замечание: балансирование - удержание угла наклона робота относительно вертикали равным нулю; маневр «вперед» или «назад» выполняется через удержание ненулевого угла, при этом чем он больше, тем выше скорость. Также заключаем, что увеличить модуль угла можно через движение в противоположном наклону направлении, а уменьшить - через сонаправленное. Всё, можно ехать) У вас есть текущий угол, желаемый угол, осталось сформировать «напругу» на моторы. Банальнейший путь - пропорциональное управление, т.е. разницу углов домножаете на константу и посылаете исполнительному устройству. Способ чуть посложней - запилить ПИД, про него можно прочитать в робофоруиской вики.
Почему обязательно связка гироскоп + акселерометр("объединение показаний"), гироскоп нам даёт итак угол, акселем можно только обнулять, или собирать их пачку и самому лепить гироскоп http://habrahabr.ru/blogs/algorithm/114513/
Самая непонятная вещь - это расчет управляющего воздействия, предположим робот стоял в положении равновесия(управляющее воздействие, например напряжение на двигателе = 0), далее мы берем и бросаем на робота сверху груз, робот начинает быстро падать, что делает система управления - заметив падение начинает давать напряжение на двигатель, вопрос - как подбирается это напряжение: можно начать перебирать(увеличивать от нуля до предела), но это займет много времени, робот десять раз успеет упасть(либо мы должны иметь аппарат получения текущего угла(ускорения) очень быстрый что-нибудь > 2-3 КГц) при имеющихся 0.1 КГц; можно например начать с середины(бинарный поиск), но при больших мощностях двигателя, это может оказаться слишком много и робот завалится в другую сторону. Плюс все осложняется тем, что воздействие описанное может быть не линейным => скорость получения данных должна быть еще выше...
Ну, связка совсем не обязательна - я видел балансеры вообще без акселей-гиро на двух кнопках с усиками, на дальномере мордой в пол. Опять же, есть вероятность того, что робот только с акселем будет неплохо балансировать. Объединение, вообще говоря, лучше сделать, чем нет, ибо: 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.
Судя по видео, гироскоп вообще вещь лишняя, ибо с таким уползнием он только мешать будет, нужно строить систему акселерометров пропущенную через Калмана. С принципом ПИД управления я знаком что бы данный аппарат (с ПИД управлением) сработал как надо, ему нужно как минимум два измерения при воздействии управления, но как я описал ранее, если робот двигается в реальных условиях(открытое пространство, неровная дорога, препятствия, ветер...) например 20 кмч, наезжает на препятствие и тут порыв ветра, для стабилизации время будет отведено крайне мало и гироскоп для ПИД регулятора не успеет дать информацию о положении, до того как это всё упадет...
гироскоп важен в краткосрочной перспективе. если, скажем, за десятую секунды робот наехал на камешек, аксель показал резкое изменение ускорения и расчетное приращение угла равно 30 градусов; в это же время изменение по гироскопу 10 градусов, а его дрейф за это время не больше 7гр, тогда настоящее изменение должно лежать в пределах [3..17] и 30 - явно завышенная оценка.
насчет ПИД: мне кажется, здесь выбор между скоростью датчиков и количеством информации об объекте управления. т.е. либо вы лучше прогнозируете систему (матмодели и таки точные расчеты ), либо улучшаете датчики, третье вряд ли дано.