Aklaypart.ru

Авто Журнал
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Space engineers сколько нужно двигателей

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

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

Забегая вперед скажу, что всё, что касается программирования в Space Engineer, будет в следующей статье. В этой я расскажу про обратную кинематику и покажу прототип на HTML Canvas в котором я занимался отладкой алгоритмов.

Предыстория и постановка задачи.

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

Вроде такого

Но я столкнулся с невозожностью его точно разместить на месторождении, так-как колеса часто соскальзывали вниз (проблема физики — большинство блоков (в том числе и колеса) имеют слишком малый коэффициент трения). Колесная платформа с цельноповоротными колесными модулями оказалась слишком громоздкой и страдала от периодических physics explosion. В результате было решено строить шагающего робота — а именно — гексапод, как самую стабильную шагаюшую платфрому.

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

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

Для строения ноги была выбрана следующая схема:

Inner joint — внутренний сустав, качающийся по оси рысканья (yaw)
Mid joint и outer joint — внешние суставы, качающиеся по оси тангажа (pitch). Направление отсчета — от основания ноги к концу ноги.

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

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

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

С двумя другими суставами посложнее. У нас есть длина всех суставов. Можно найти угол к горизонту и расстояние между средним суставом и землей, а так-же расстояние до целевой точки.

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

Так это выглядит в коде:

Движение

Далее. Робот должен ходить, верно? То-есть мы должны передавать N раз в секунду каждой ноге координаты заданной позиции. С учетом того, что ног 6 и 3 из них двигаются в противофазе получается как-то сложно. Нужно ввести новый уровень абстракции.

А что если мы представим что нога движется по окружности и ей нужно передавать угол обозначающий позицию на этой окружности? Удаление в сторону становится постоянным и нужно передавать только один параметр, меняющийся циклично. Тогда целевые координыты находятся через синус и косинус.

Пока достаточно

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

Поэтому я решил написать визуализатор. Мне хотелось его сделать без дополнительных библиотек и иметь возможность запускать его в один клик и без привязки к окружению.
Поэтому был выбран JS + HTML Canvas.

А сейчас нарисуем сову.

Шаг — структура данных для управления ногой:

Но для отрисовки понадобятся еще несколько классов:

Обертка над Canvas:

В классе Leg есть метод для получения текущих координат суставов. Вот эти координаты мы и будем отрисовывать.

Так-же я добавил отрисовку точек, в которых находилась нога в N последних тиков.

И наконец Worker, который будет запускать симуляцию:

Правда миленько?

Здесь видно, что траектория движения ног отличается от окружности. Движение по вертикали напоминает урезанную синусоиду, а движение по горизонтали линейно. Это должно уменьшить нагрузку на ноги.

Теперь несколько пояснений, что происходит в коде.

Как научить робота поворачивать?

Для поворота я рассмотрел 2 ситуации:

Если робот стоит — ноги двигаются по окружности.

Единственное но — движение именно по окружности сильно усложнило-бы код с текущей реализацией. Поэтому ноги двигаются по касательной к окружности.

Когда робот двигается нужно реализовать что-то вроде Ackermann steering geometry с дифференциалом.

Читать еще:  Чип тюнинг дизельного двигателя митсубиси

То-есть длина шага ног, двигающихся по меньшему радиусу, — меньше. А угол поворота — больше.

Что-бы реализовать изменение угла поворота для каждой ноги я придумал следующий алгоритм:

1. Считаем угол от изначального положения ноги к центру робота:

2. Считаем угол от изначального положения ноги к (центру робота + смещение, которое отвечает за поворот — это изменяемый параметр):

3. Поворачиваем шаг на разницу этих углов:

Но это не всё. Еще нужно изменять длину шага. Реализация в лоб — домножать длину шага на изменение расстояния до центра — имело фатальный недостаток — внешние ноги слишком широко шагали и начинали задевать друг друга.

Поэтому пришлось усложнить реализацию:

1. Считаем изменение расстояния до центра для каждой ноги:

0.3 — магическое число

2. Находим отношение между минимальным и максимальным изменением

Этот множитель отражает разницу между минимальным и максимальным изменением расстояния до центра. Он всегда меньше 1 и если на него домножать длину шага — она при повороте не будет увеличиваться даже для внешних по отношению к направлению поворота ног.

Вот как это работает (gif 2 мегабайта):

→ Поиграться с результатом можно тут

Для более пристального изучения рекомендую сохранить содержимое в html файл и продолжить в любимом текстовом редакторе.

В следующей публикации я расскажу как заставил всё это работать в Space Engineers.
Спойлер: в Programmable Block можно писать на C# почти последней версии.

Водородный двигатель

В отличие от атмосферных, эти движки могут функционировать как в космосе, так и на планетах. Для питания используется водород, получаемый при переработке льда в генераторе O2/H2.

Водородные двигатели

Такие двигатели для работы должны быть соединены с источником водорода — водородным баком. В некоторых ситуациях это может быть очень неудобным. Согласитесь, что прокладывать десятки труб по всему кораблю то еще удовольствие. Еще одним недостатком является то, что водородные ускорители потребляют очень много водорода. Ввиду этого, если вы стартуете на планете и планируете подняться в космос — постройте несколько резервуаров с водородом. Желательно их полностью заполнить перед взлетом — ведь ты не хочешь, чтобы на высоте в 20-30 км у тебя закончился водород и твой корабль начал неконтролируемое падение?

Однако, этим движкам не нужна энергия. Таким образом, даже если на корабле закончится энергия — двигатели не перестанут работать. Все преимущества и недостатки можно выделить в такой вот таблице:

ПлюсыМинусы
Работает во всех средахНеобходимо соединять каждый двигатель с водородным баком
Быстрый разгонОчень прожорливы
Не требуют энергию

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

Доступны три типа структур: малые корабли, большие корабли и станции. В зависимости от выбранного размера блоков создаются либо малые корабли, либо большие корабли/станции. Станцией структура становится если её блоки пересекаются с вокселями планеты или астероида.

Творческий режим игры [ править | править код ]

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

Режим выживания [ править | править код ]

В режиме выживания игрокам необходимо добывать, собирать и очищать различные ресурсы, чтобы создавать инструменты, оружие и блоки, а также производить электричество. Ресурсы можно добывать вручную с помощью ручного бура или с использованием кораблей с необходимым оборудованием. Чтобы избежать смерти, игроки должны следить за своим здоровьем, энергией и уровнем кислорода. Здоровье и энергия игрока могут быть восстановлены с использованием медицинского блока (отдельно энергию можно также восстановить в кабине пилота). Запас кислорода может быть восполнен в медблоке, если он подключён к генератору O2/H2, или при помощи кислородного баллона, заправляемого в вышеупомянутом генераторе. С недавних пор, в игре присутствует опция «Прогресс», позволяющая игроку постепенно открывать доступ к чертежам.

Читать еще:  Двигатель аир160м8 технические характеристики

Планеты [ править | править код ]

12 ноября 2015 года были добавлены планеты. [2] На данный момент в игре присутствуют 5 планет : Земля, Марс, Чужая планета, Тритон Пертам и их спутники: Луна, Европа, Титан

Неизвестные сигналы [ править | править код ]

17 августа 2017 года в режим выживания были добавлены «неизвестные сигналы». [3] Эти сигналы появляются случайно в определённом диапазоне вокруг игрока и указывают расположение маленького зонда с помощью координат GPS. Каждый зонд имеет кнопку, которая при нажатии на неё, случайным образом выдаёт скин на снаряжения или на скафандр, либо не даёт ничего. Так же в зонде находится маленький контейнер с различными ресурсами или снаряжением полезными при строительстве. Скины на снаряжение или скафандр могут быть проданы или куплены на торговой площадке Steam.

Об этой игре

Space Engineers — игра песочница с открытым миром, основанная на творчестве и исследованиях

Игроки строят космические корабли, космические станции, планетарные аванпосты различного размера и назначения, пилотируют корабли и путешествуют в космосе, чтобы исследовать планеты и собирать ресурсы для выживания. Благодаря творческому способу и режиму выживания, нет предела тому, что можно построить, использовать и исследовать. В Space Engineers реализован реалистичный физический движок, основанный на объемах: все в игре может быть собрано, разобрано, повреждено и уничтожено.

В игру можно играть как в одиночном, так и в многопользовательском режимах.

AURA – [U-AURA’]

Кодировка для дронов, сверхмалых кораблей и беспилотников.

Флаг U показывает нам, что перед нами беспилотный (Unmanned) или сверхмалый корабль.

A – автономность (2, 1 и 0), показывает степень автономности корабля, где 0 — корабль полностью автономный (например, дроны, передвигающиеся с помощью программы или сенсоров), 1 — управляется удаленно, 2 — управляется как удаленно, так и непосредственно из кабины (для сверхмалых кораблей).

U (Usage) использование, назначение. Приобретает следующие значения:

  • M (Military) – военный, боевой.
  • S (Survey) – исследовательский, разведывательный.
  • I (Industrial) – промышленный (включает в себя как дроны-майнеры, так и микротранспорт, дроны-ремонтники).
  • C (Civil) – гражданский, это маяки, навигаторы, сверхмалые челноки.

RR – Радиус сферы действия антенны в км (М — максимальный радиус)

A’ – Резервный код

Таким образом, сенсорные мины, например, можно промаркировать [U-0M0] Mine 1, что будет означать, что перед нами автономный объект (U), на сенсорах или запрограммированный (0), военного назначения (M), без антенн или с радиусом антенн меньше километра (0)

Заключение

В заключении хотелось бы отметить наиболее важные аспекты и преимущества данной системы классификации кораблей и станций:

  1. Удобство и простота в использовании.
  2. Краткость записи (отсутствует лишняя тактическая информация).
  3. Безопасность (по тем же причинам).
  4. Простота в запоминании и расшифровке (мнемонические и интуитивно понятные коды).
  5. Универсальность (можно классифицировать почти все созданные объекты).

Данные преимущества делают систему классификации MNEMONIC наиболее удобной и универсальной по сравнению с остальными системами, что выводит ее на уровень глобальной и общепринятой.

Рецензии и отзывы

Игра Space Engineers в ближайшее время может попасть в ТОП-3 фаворитов пользователей. На сайтах-отзовиках она получает 95% положительных отзывов, геймеры выделяют следующие преимущества:

  • космическая тематика;
  • возможности, неограниченные стандартными рамками;
  • выделенные сервера;
  • атмосферность;
  • частые обновления, добавление новых режимов и функций;
  • приятная графика;
  • актуальность.

Из минусов отмечают сложный интерфейс и то, что игра работает медленно на маломощных и среднемощных ПК. Space Engineers получила награду в рамках Perpetuum MOB 2013.

Space Engineers : а где же экшн?

Игра предоставляет несколько вполне эффективных способов «испытать» экшн, помимо уже упомянутых. Креативный режим, например, снимает все запреты и ограничения на ресурсы, что позволяет буквально сойти с ума, создавая конструкции с нереальными дизайнами. Режим выживания наоборот требует более хладнокровного и рационального подхода, ведь придется добывать ресурсы на всяких астероидах, создавать предметы, следить за энергетическими уровнями и, конечно, избегать смерти, ведь с приходом старушки с косой исчезнет и все нажитое непосильным трудом — то есть, опустошится инвентарь. Тут опять хочется привести в сравнение уже упоминавшуюся игру, которая, казалось бы, не имеет никакого отношения к Space Engineers , ведь режимы выживания у обоих на базовых уровнях очень и очень похожи. Но если немного поднатореть, то режим выживания будет таким же «вседовзволенным», как и креативный — только с упором на то, что надо будет приложить немного усилий. Остается надеяться, что его еще доработают, а не оставят в том сыроватом виде, в котором он пребывает сейчас.

Читать еще:  Abm storm какой двигатель

Учитывая нынешнее состояние Space Engineers — совсем неудивительно, что он такой «неотполированный». Нет, а бывает ли иначе в раннем доступе? Тут есть баги, на которые можно на т кнуться где угодно, да и графика откровенно требует «полировки». Сами инженеры похожи на кукол в кукольном театре, а далекие звезды выглядят как статические картинки — в общем, движение прочувствовать проблематично. Но механика в целом хороша — и именно поэтому игра так играбельна даже в «сыроватом» виде.

Space Engineers: песочница как она есть

Но разберем подробнее версии Space Engineers — креативную и «на выживание», конечно. Как уже упоминалось, в креативном режиме, игрок получает доступ ко всему, к чему в принципе можно получить доступ в игре. Это — восхитительная возможность узнать, как работает игра и из чего состоит. Как работают двигатели, куда лучше лепить подруливающие устройства — как они влияют на подвижность и маневренность — и как справится с гравитацией. На этом этапе игры можно позабавляться и протестировать встроенные в Space Engineers корабли. Например, столкнуть их с астероидом, посмотреть как они разлетаются на части, а потом… попробовать собрать — если хватит нервов.

Версия «на выживание» более суровая и беспощадная. Все может навредить тебе, гравитация — придавить, каждый блок нужно изготовить из руды, которую ты щепетильно собирал на каком-то забытом богом астероиде. В него удобнее играть с друзьями — ведь постоянно что-то заканчивается, какой-то ресурс, как ни топливо, так руда, а система делит все добытое поровну. В этой версии Space Engineers космическая база частенько становится «жертвой» метеоритных дождей, а потому надо постоянно следить за защитой — турелями и щитами. Космические силы хотят стереть тебя в порошок, что делает игру более похожей, собственно, на игру, а не на интерактивный конструктор Lego в открытом космосе.

В любой из версий стройка довольно однообразная — ты размещаешь блок и потом размещаешь вокруг него другие блоки с помощью кликов. Но, в отличи е от других песочниц у Space Engineers куда больше разнообразия тех же форм (склоны, ступени, изгибы и прочие) — и это позволяет построить что-то такое, что не будет выглядеть как «квадратный домик из квадратных кирпичиков».

Можно быстренько «набросать» чертеж корабля в воздухе, слепив до кучи кабину, двигатель и пару подруливающих устройств, запрыгнуть в него и проверить его дееспособность. Заднее подруливающее устройство поможет подняться только в одном направлении, так что другие, поменьше, нужно изловчиться и расположить так, чтобы под контроль так же попал боковой и поворотный контроль. Ну и тормоза в космосе совсем не лишнее. Пушки тут пригодятся, если захочется «прищучить» друзей или вручную поотстреливать метеоритные дожди, но гораздо практичнее вооружится горнодобывающими сверлами — и тогда дело с добычей руды пойдет быстрее.

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

Для игры, в которой корабли строятся ради того, чтобы быть разбитыми о другие корабли, Space Engineers довольно комплексная и подчас даже сложная для понимания. Поскольку игра в раннем доступе, ожидается еще немного прикрас и новшеств, хотя и так в нее вполне можно играть. Как межзвездная песочница игра может кого-то и испугать, оттолкнуть, но многие другие найдут и разберутся что с ней делать. Особенно тех, кому не занимать терпения и креативности. Для менее креативных игра покажется каким-то космическим сафари по серверам… Но ведь и это весело!

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector