Как Я Построил Гексапод В Space Engineers. Часть 1

Привет. Я хочу рассказать о конструкции и программировании системы управления конечностями в гексаподе, построенном Space Engineers. Забегая вперед, скажу, что все, что касается программирования в Space Engineer, будет в следующей статье.

В этом я расскажу об обратной кинематике и покажу прототип на HTML Canvas, в котором я отлаживал алгоритмы.



Как я построил гексапод в Space Engineers. Часть 1



Предыстория и постановка проблемы.

Первоначально было построено шарнирно-сочлененное шасси, а затем на нем построили землеройный агрегат. Такая конфигурация обеспечивала контакт всех колес с поверхностью на больших неровностях, в том числе при скручивании.



Как я построил гексапод в Space Engineers. Часть 1

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

Колесная платформа с цельноповоротными колесными модулями оказалась слишком громоздкой и страдала от периодических физических взрывов.

В результате было решено построить шагающего робота, а именно гексапода, как наиболее устойчивую шагающую платформу.

Как нормальный человек начнет строить гексапод? Вероятно, он зайдет в игру и начнет строить тело робота с конечностями, а потом будет думать, как это все анимировать.

Но это не наш метод (тс)

я начал с теории

Для строения ножки была выбрана следующая схема: Внутренний сустав – внутренний сустав, качающийся по оси рыскания (рыскания) Средний шарнир и внешний шарнир — это внешние шарниры, которые качаются вдоль оси тангажа.

Ориентировочное направление — от основания ноги до конца ноги.



Как я построил гексапод в Space Engineers. Часть 1

Угол 0 для всех суставов означает, что нога полностью выпрямлена (прямую ногу будет легче построить в игре).

Задача — найти для заданной целевой точки такие углы поворота суставов, чтобы конец ноги оказался в данной точке.

Вот и пришло время вспомнить о тригонометрии.

Угол внутреннего шарнира можно найти через арктангенс горизонтальных координат цели.

  
   

const yawRad = Math.atan2(esimatedLegPosition.x, esimatedLegPosition.y);

Два других сустава сложнее.

У нас есть длина всех суставов.

Вы можете найти угол к горизонтали и расстояние между средним суставом и землей, а также расстояние до целевой точки.

Далее, используя теорему косинусов, нужно найти углы треугольника, используя известные стороны.



Как я построил гексапод в Space Engineers. Часть 1



Как я построил гексапод в Space Engineers. Часть 1

Решение треугольников Вот как это выглядит в коде:

getLegAngles(esimatedLegPosition) {

Теги: #игры #Игры и игровые приставки #Сделай сам или Сделай сам #программирование #Робототехника #JavaScript #робототехника своими руками #обратная кинематика

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.