Pull to refresh

Comments 33

А почему вы перемещаете конечности по дугам, а не по прямым линиям?
Если перемещать конечности по прямым линиям, то получится походка без поворота тела (не помню как называется). Я хотел, чтобы нос гексапода всегда был направлен в сторону движения.

Я правильно понял Вашу мысль?
Но дугами тоже ведь не все движения корпуса можно нарисовать…
Верно. Данная математика используется только для базовых движений: вперед, назад, поворот, движение по дуге. В основном она была введена для реализации движения по дуге — очень уж хотелось этого.

Для подъема гексапода и различных танцулек используется старый вариант: «передвинь ногу из текущей позиции в XYZ по линейной траектории».
Так получилось, что я сейчас разрабатываю смежную тематику
Возможно вас заинтересует управление на тензорных регуляторах.


Принцип управления тут такой: мы управляем не положениями сочленений, а скоростями в них. Имея желаемое перемещение корпуса, вычисляем для каждой ноги, которая стоит на земле вектор перемещения, который это перемещение обеспечит. Зачем решаем систему уравнений, чтобы понять, с какой скоростью нудно в каждом сочленении каждой ноги двигаться. В этом варианте любые движения корпуса, хоть по дуге, хоть танцы, задаются просто уставкой скорости или положения корпуса.

Там довольно много линейной алгебры, зато результат может быть очень красивым.
Это очень круто! Я потихоньку к этому хочу придти, но пока есть ряд других проблем и хотелок. Спасибо большое за информацию, обязательно ознакомлюсь.
Только имейте в виду, что сервомоторы должны управляться именно заданием скорости а следование по траектории должно поддерживаться регулятором верхнего уровня. Это та проблема на которую я напоролся при установке серводвигателей на свои станки. Я сначала пытался использовать контур позиционирования в самом двигателе, но постоянно возникало рассогласование координат, потом оставил в двигателе только контур скорости а контур позиционирования перевел выше в контроллер положения
А с манипуляторами по другому и не получается. Потому что если вы делаете уставку по положению, вам приходится решать обратную задачу кинематики. А обратная задача кинематики — это то, что нужно гнать тряпкой из подобных систем, потому как она нелинейна, а обратная скоростная задача линейна.

Конкретно в этом видео создаётся точка устойчивости по позиции ноги за счет введения небольшого сигнала обратной связи по положению, но он исключительно вспомогательный (совсем без него нельзя, система потеряет устойчивость).

Вам не кажется странным, что в каждый момент времени движения ваш гексапод стоит на 2х ногах, а 4 перемещает в воздухе? Неустойчиво же!

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


Скорее всего это из-за того, что камера вращается. Кажется, что дальняя нога перемещается.

Не. Тут 3 ноги на земле и 3 в воздухе, это вот прям основа всего. Ноги не станут подниматься пока все 6 ног не будут на земле (актуально для движения).
Если быть совсем точным, то нам нужна какая то точность перемещения по траектории, т.е всегда есть допустимое отклонение, а с учетом этого любую траекторию можно апроксимировать даже прямыми отрезками. Если есть еще и дуги то очень сильно упрощается анализ и на порядки уменьшается объем примитивов движения
Кстати о походках, где-то с 1:02
У меня так 3 кошки топчут пол. Ещё железяки для полной клиники не хватает ))
Может я неправ, но подумалось что при движении прямо вперед имеет смысл ходить не тройками ног, а парами, тогда расчет математики можно делать для одной стороны, а вторую просто зеркалировать. А при повороте, если точки крепления ног осесимметричны, можно вообще считать для одной ноги, и на две по 120 градусов просто поворачивать.
Да, можно. Такая походка будет медленнее, чем тройками (tripod gait). Приводы я использую довольно мощные, соответственно скорость поворота у них не высокая. В этом случае проект можно переименовать с hexapod в turtle :)

Да и ресурсы МК позволяют выбрать более сложный и универсальный путь с большим запасом.
проект можно переименовать с hexapod в turtle
да ладно, черепаха по одной ноги переставляет :)
Вообще, самый интересный вопрос — ходьба по пересеченной местности, когда высота пола разная для разных ног.
Это будет чуть позже. Для реализации этого на концах лап находятся концевики, но пока они не задействованы. Не думаю, что будет сложно. Все сводится к манипуляции с Y координатой.
Я делаю станки с ЧПУ, и рассматриваю такой аппарат для для резки больших листов с точным позиционированием в каждый момент, меня привлекает абсолютная маневренность

Вы наверное путаете с hexapod платформой. В данном случае hexapod это шестиногий робот.

Нет, не путаю. Есть большие листы металла скажем 3х6 метра(есть и больше), если делать станок для раскроя такого листа, то он будет очень большой и неперемещаемый, а вот если установить на подвижный робот плазмотрон и систему позиционирования достаточной точности, то это будет и дешево и удобно
А есть идеи о том, как такая система позиционирования будет выглядеть?
Предполагается что с помощью СВЧ видимо 8 или 3 мм с частотной модуляцией. 4 синхронизированных излучателя размещенных по границам поля обработки и анализ на гексаподе с точностью по фазе не хуже 10 градусов. Можно добиться ошибки 0,1 мм

Чтобы обеспечить постоянную погонную энергию — нужно добиться равномерности движения.

Равномерности движения в такой системе добиться можно, но ошибки всё равно будут накапливаться. Понадобится внешняя коррекция, а вот как её делать с достаточной точностью не очень понятно.
Существует подход к крупногабаритной печати, когда печатающая головка (аэрозольный баллончик с электрическим клапаном) подвешивается на стене многоэтажного здания, где множество факторов мешает равномерному перемещению головки, но так как её фактическое положение отслеживается с высокой точностью, команда на открытие клапана всегда соответствует реальному положению.
Что если попробовать такой подход? Положение робота можно измерять точно при помощи стационарных лазерных дальномеров. Также робота можно оснастить дополнительным актуатором, осуществляющим прецизионное позиционирование плазменной головки (как в приводе CD/DVD, лазер в магнитной подвеске нивелирует неидеальность позиционирования головки), чтобы не пришлось прерывать линию реза.
Можно и лазер, но с ним побольше сложностей, он конечно на порядки точнее и приемник имеет меньше габариты но с СВЧ проще обеспечить сферические волны, он не чувствителен к пыли и дыму, при работе плазменного аппарата еще и яркое излучение и т.д. Я все таки больше склоняюсь к СВЧ, хотя у него тоже большие сложности в основном с отражением от поверхности металла.
Да, да! Примерно так и должно это выглядеть! Достаточно большое расстояние до брюшка чтобы плазма его не обжигала!

Скоро скоро, совсем немного осталось :)

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

Я думаю проще сделать не получится. Если условиться, что гибкая конечность состоит из сегментов (как на картинке), то все равно нужно вычислять поворот для каждого сегмента. В данном случае получается манипулятор с N степенями свободы, где N явно больше 20 и отсюда выливается лютый матан. Я сложно представляю систему уравнений для такого манипулятора :)

Думаю, можно расчленить конечность на отдельные сегменты по нескольку звеньев. Каждый сегмент будем решать независимо, а поверх управления отдельными сегментами добавим систему управления конечностью в целом. Это позволит решать не все 30 уравнений разом, а иерархически, по 5 штук в 6 группах и одну в 6 уравнений для 6 сочленений.


Кстати, это идея. Я внесу это мысль в свою статью по теме управления манипуляторами :).

Sign up to leave a comment.

Articles