Как стать автором
Обновить

Разработка hexapod с нуля (часть 4) — математика траекторий и последовательности

Время на прочтение8 мин
Количество просмотров15K
Всего голосов 25: ↑25 и ↓0+25
Комментарии32

Комментарии 32

Три двигателя на одну ногу, а траектория движения считается для пятна контакта ноги с поверхностью. Мне кажется этого мало. Каждый двигатель обладает инертностью, и это нужно учитывать. При этом инертность первого двигателя, что используется для поворота всей конечности — получается максимальной. А вот последнего, что выдвигает лапу от корпуса — минимальной, и его можно существенно ускорить.
Модуль где вся математика — наверное самое интересное. Хотелось-бы увидеть в любом варианте: в виде ссылки, спойлера, или публикации на гитхабе.
Кхм, я рассчитывал увидеть обратное преобразование, а у вас решение в лоб. Плоскость платформы гексапода — как начальная точка отчёта. В таком варианте расчёты значительно упрощаются. :)
Насчёт преодоления сложного рельефа.
Я заметил сохранение точки касания, после чего её высота не меняется. Для разного рельефа эта точка будет находится на разной высоте. То-есть нужен датчик удара о поверхность. Могут быть варианты: контактный, ёмкостный, или датчик ускорения (аксель). Для последнего доступно сразу несколько функций: вертикальное препятствие, высота/пустота, и режим контактного осязания — постройка грубой формы рельефа препятствия. Постройка рельефа — рискованная функция. Есть шанс что гексапод сумеет забуриться туда — откуда его трудно будет достать.
Я не слишком силен в математике, поэтому не стал усложнять всё. Да и зачем, когда есть более простое решение. Возможно по мере усложнения проекта будет усложняться и математика.

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

На счет акселерометра можно поподробнее? Есть много MPU6050 :)
а модель доски калибровки сервы можно как-нибудь получить?
К сожалению чертеж в КОМПАС утерян. Есть только PDF, готовая для лазерной резки. Но тут нужно учитывать, что прорезь соответствует только MG996R и идентичным им. Цифровые приводы туда влезали со скрипом :)
Спасибо, сойдёт!
Много MPU6050 — это уже хорошо. Два таких датчика можно использовать на одной шине. Для старта более чем достаточно. Но придётся делать собственную ПП для датчика. Tе что продаются — имеют большие габариты и несовместимость с плоскими шлейфами.

Суть в том что последнее звено лапы нужно сделать чуть более подвижным. Либо на саму лапу прикрепить контактную поверхность с небольшим свободным ходом. И вот уже на неё крепить датчик. Вариантов перехода много: от резиновой трубки, до демпферов с вязким наполнителем.
Движение лапы необходимо просчитать для кординат датчика. У вас получится ещё один массив данных — но уже для датчика. При наличии препятствия — показания акселя будут многократно отличаться от расчётных.
Кажется я уловил Вашу мысль. Идея достаточно интересная и сложная — то что нужно. Попробую более подробно задуматься об этом. Спасибо за идею.
Да, да — совершенно слепой гексапод, который передвигается на ощупь.
Такой способен неожиданно напугать, если его надолго потерять из поля зрения. Я думаю домашние будут в восторге, но немного седые.
Тестировал на своем коте — гексапод его толкает уже лапами в бок, а он просто смотрит на него и всё. Ну хотя, что от кота ожидать — он пылесоса не боится. Люди от неожиданности пугаются :)
MPU6050 лучше всего использовать для стабилизации платформы,
а чтобы корректно работать с конечностями, нужно использовать сервы с обратной связью.
Но это дорого
Да, я очень долго смотрел на такие сервы и облизывался — минимум проводов и полный контроль над всем, но цена даже на Ali довольно высокая, особенно учитывая их требуемое количество.
кстати, можно было бы использовать для хексапода сервы со сквозным валом — их крепить удобнее
Думал над этим, но такие сервы довольно толстые и плохо смотрятся на таком корпусе.
почему толстые? SR403P стандартного размера
Мне такие не попадались на глаза. В основном видел только приводы, на другой стороне которых просто пластмассовая пипка торчит.
у SR403P металлический сквозной вал
Да, я уже погуглил их :). Дорогие. Да и текущие приводы более чем устраивают
так они дешевле стоят, чем DS3218 — 1.160 рублей в Москве
но я, конечно, ни на чём не настаиваю )))
Я DS3218 купил за 460р за штуку (у китайца скидку выпросил)
А не проще использовать обычную обратную кинематику?
Так она там и используется. Траектории это один из этапов обработки входных данных до алгоритма обратной кинематики. Сама обратная кинематика рассматривается тут: habr.com/ru/post/436748
Могу добавить про MG996R из личного опыта. Года 3 назад хотел собрать механическую руку, чтобы потом рисовать ею какие-то контуры. Для меня основной проблемой тогда стало то что под нагрузкой серва уже не занимала заданный мне угол а прижималась как бы к крайнему положению. Так же была проблема задания одного и того же угла когда серва поворачивается по направлению действия нагрузки и против направления действия нагрузки. Возможно в вашем случае сервы посильней, а плечо меньше и такой проблемы не возникнет, но то что серва под нагрузкой может принимать не совсем точное положение надо иметь ввиду.

Кстати сохранилось само видео той руки:


НЛО прилетело и опубликовало эту надпись здесь
Как видно, шаг импульса для каждого привода отличаются, это было неожиданным для меня открытием.

Кто имеет дело с сервоприводами — об этом знают и везде есть понятие «калибровка» сервоприводов. Указывают крайние точки на которые отклоняется выход сервомашинки и запоминают значения подаваемых импульсов, ну а дальше на основе этих данных масштабируют нужный угол в значения длины импульсов для каждой сервомашинки. Я бы добавил возможность калибровки каждого сервопривода и тогда все будет довольно точно. Вдруг далее захотите заменить сервомашинки на другие и опять таблицу будете делать :)
Калибровка это здорово, но от приводов нет обратной связи и нет датчиков положения конечностей. Довольно сложно (если вообще возможно) откалибровать автоматически без каких-либо данных от приводов. А так да, другие приводы — другая таблица.
Я говорю не про автомат. А про ручную калибровку. Например входим в режим калибровки: 1 сервопривод отклоняем в одну сторону и кнопками + и — устанавливаем отклонение на контрольную метку, потом 1 привод отклоняем в другую сторону и кнопками совмещаем вторую метку. Можно еще выставлять среднюю метку (края и середина, но обычно сервоприводы линейны в обе стороны). Таким образом запоминаем мин и макс значения импульс когда сервоприводы откланяются на заданный угол согласно меток, ну а дальше вычисляем коэффициент и смещение центра. И так все остальные приводы. Да, долго — но зато универсально.
Хорошая идея, нужно подумать об этом. Спасибо.
Буду рад, если предложите несколько идей для развития этой мысли :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации