В прошлой статье я показал как собирать 4х ногого робота. Кстати, инструкцию мы уже закончили, и посмотреть вы можете ее по данной ссылке.
Собрать то мы его собрали, а вот с движением его возникают некоторые трудности. Причем трудности очень большие.
Как я уже писал - данный робот имеет 4 ноги, по 2 степени свободы у каждой. В случае 3х степеней свободы его можно легко наклонять без потери устойчивости. Например для того, чтобы подтянуть заднюю ногу. Но так как ноги у него не сгибаются - постоянно перпендикулярны полу, то программировать его нужно по определенной методологии.
На самом деле это был примерный пересказ цитаты взятой с одного сайта (уже не помню какого). И про "определенную методологию" там не было сказано ничего.
Ну что ж, попробуем разобраться в этой сомнительной "определенной методологии".
Как вы уже, наверное догадались, если вы читаете эту статью, следовательно я ее выложил, и следовательно у меня все получилось.
Но нет - это пока просто наброски и теоретические расчеты.
Просмотрев пару видео (видео на которых 4х ног ходит реально от силы 2-3 во всем интернете), я вначале попробовал просто переставлять одну ногу за другой. Но не тут то было. В некоторых положениях при поднятии одной из ног робот сразу же падал.
Я долго думал в чем же тут дело. Почему робот не может стоять на 3х ногах?
После долгих мучений - я вывел то, что робот стоит, только когда его центральная точка находится в треугольнике, образующийся из точек соприкосновений ног с полом.
Я прекрасно понимаю что нужно исходить не из центральной точки робота, а из его центра тяжести. Но, так как центр тяжести робота в любом положении находится в разных местах, я буду показывать по сильно упрощенной схеме.
Приведу пример на картинке.
Показал просто схематично.
- Зеленая точка - центр
- Серые линии - возможные положения ног
- Красные линии - то, где ноги находятся сейчас
- Синий треугольник - треугольник из точек соприкосновения с полом
Снизу слева нет красной полоски, потому что нога в данный момент поднята, и как видите - центр робота находится за пределами треугольника, и в данном положении робот будет падать.
Конечно, в данном примере показано все очень схематично - длина ноги по короче, и следовательно робот чуть устойчивее. Но суть, думаю, понятна.
Рассмотрим следующий пример
Как видите - треугольник почти полностью закрывает робота. И в данном случае он падать не будет.
Исходя из этих данных я смоделировал следующие алгоритмы движения.
Я буду предполагать, что у ноги есть только 4 положения (серые линии)
Нога с красным шариком означает что она поднята.
Помимо всего, вы можете заметить, что ноги, не поднятые, двигаются только на соседнюю позицию, в то время как поднятая нога, двигаться из крайней в крайнюю.
Как я уже писал - в данных гифках условия будут не всегда соответствовать примерам, которые я привел выше из-за не точности в рисунках. Но, ПО ИДЕЕ, должны работать.
Движение вперед.
Движение назад.
Поворот влево.
Поворот вправо.
Данная статья не является чем либо поучающим - я всего лишь привел примеры своих размышлений. Я не спорю с тем, что они могут быть в корне неверны.
Комментарий: