Pikap24.ru

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

Space engineers как включить двигатель

Space Engineers

Space Engineers
РазработчикKeen Software House
ИздательKeen Software House
Дата выпуска28 февраля 2019 года
ЖанрСимулятор, Песочница
Технические данные
ПлатформыWindows
ДвижокVRAGE 2.0
Режимы игрыодиночная игра и мультиплеер
Язык интерфейсаАнглийский / Мультиязычный перевод сообщества
Носительцифровая дистрибуция
Официальный сайт
Медиафайлы на Викискладе

Space Engineers (русск. Космические инженеры) — воксельная игра-песочница о строительстве и обслуживании космических структур. Игра стала доступна в Steam Early Access с 23 октября 2013 года.

28 февраля 2019 года состоялся релиз игры на платформе Windows [1] .

Игра основана на графическом движке VRage 2.0 собственной разработки компании-создателя Keen Software House (англ.).

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

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

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

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

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

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

Как я строил гексапод в 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 мегабайта):

Читать еще:  Hyundai starex какой двигатель надежнее

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

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

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

Об этой игре

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

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

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

Год неудач

«Фобос-Грунт» стал четвертой по счету неудачей Роскосмоса в 2011 году — всего их было 5.

Однако эта авария отличалась от остальных тем, что неполадки возникли в самом космическом аппарате.

Причинами остальных стали неисправности в ракетах-носителях и разгонных блоках.

В феврале прошлого года во время запуска военного спутника «Гео-ИК-2» неисправность возникла в разгонном блоке «Бриз-КМ». В результате спутник не достиг расчетной орбиты и был потерян.

18 августа аварией закончилась попытка запуска телекоммуникационного спутника «Экспресс-АМ4». Ракета-носитель «Протон-М» отработала нормально, но на участке работы разгонного блока «Бриз-М» с ним оборвалась связь. Спутник был потерян.

24 августа ракета-носитель «Союз-У» не смогла вывести на орбиту грузовой корабль «Прогресс». Из-за поломки двигателя третьей ступени корабль был потерян.

Последняя авария произошла при запуске спутника связи «Меридиан» 23 декабря. Он не добрался до орбиты и рухнул на землю в Сибири.

На 421 секунде полета возникла некоторая нештатная ситуация. Как говорят специалисты, скорее всего, это было связано с работой двигателя третьей ступени.

Глава Роскосмоса Владимир Поповкин назвал основную причину аварии — неполадки в двигателе третьей ступени ракеты-носителя «Союз-2.1б».

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

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