<< Вернуться на главную

МАРСИАНСКИЙ ДЕСАНТ

Скоро новый год, и мы с радостью представляем Вам новый конкурс программистов под названием "МАРСИАНСКИЙ ДЕСАНТ".

В настоящее время человечество готовится к колонизации различных планет и в том числе марса. Для этого предлагаются самые различные конструкции аппаратов и разнообразные способы посадки.

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

Компания Илона Маска несколько лет разрабатывала проект в котором первая (самая дорогая) ступень ракетоносителя возвращалась на аэродром и садилась на бетонную площадку (или даже на палубу баржи в океане).

Построить подобную систему управления посадкой и будет задачей конкурса.

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

Организаторами конкурса написана модель спускаемого аппарата в которой учтены основные факторы полета. Конечно, всякая модель имеет упрощенный характер. Так в нашей модели не учтена третья координата и аппарат "не умеет" вращаться вокруг вертикальной оси "Y". Мы сочли, что для того чтобы посоревноваться нам хватит и таких неприятностей. Проще рисовать и проще управлять. Если Вам удастся стабилизировать аппарат и посадить его на поверхность с более-менее приемлимыми параметрами, то мы уверены, что и третья координата и поворот Вас не испугают.

Внешний вид Программы выглядит примерно так:

.

На экране будет отображаться траектория полета и основные параметры.

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

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

Игровое поле показано сбоку. Вертикальная белая линия - "0" оси Х (тоесть это идеальное место посадки). Если Ваш аппарат выйдет за пределы экрана по "Х", то происходит автоматическое масштабирование. Сверху-слева внешний вид аппарата, по которому можно визуально прикинуть угол наклона.

Задача конкурса - посадить аппарат с минимальным отклонением по "Х", минимальной скоростью (по "Х" и по "Y"), да еще и сэкономить как можно больше топлива. И учтите, двигатели работают не очень устойчиво (как и в реальности) и поэтому аппарат постоянно стремится завалиться куда-нибудь набок. А если аппарат наклонился, то часть тяги расходуется на торможение а часть на перемещение вбок!

И поверьте, управлять таким капризным аппаратом, это не такая простая задача, как может показаться с первого раза :-)

Как всегда за месяц предлагается освоить управление, попробовать максимально улучшить показатели, наработать полезные подпрограммы (можно конечно ничего не делать если вас не интересует результат :-) ). Ну а на очном этапе милости просим в СЮТ с готовыми исходниками и собственными идеями. Обещаем как минимум усложнить жизнь.

В конкурсе поддержано несколько оболочек и языков программирования. В зависимости от того какая оболочка вам более комфортна вы можете выбрать то что вам ближе. А почему именно такой выбор? Да просто потому, что именно эти оболочки официально куплены нами в СЮТ. А значит, на очном этапе вы можете выбрать любую из этих оболочек. Если у вас другие версии, то вы можете адаптировать проект под вашу оболочку. Это легко делается, потому что основные функции вынесены в DLL. Но учтите, что на очном этапе мы можем обеспечить вам только указанные версии! Впрочем вы можете прийти и со своим ноутбуком, если вас не устраивают наши средства. Игра написана так, что от производительности компьютера она совершенно не зависит.

Для участия в конкурсе качаете готовую затравку
Версия для LAZARUSа.
Версия для DELPHI 7.
Версия для С++BUILDER 9.

ВНИМАНИЕ! ПОКА ЗАТРАВКА ВЫЛОЖЕНА ТОЛЬКО ДЛЯ LAZARUSA . ЭТО БУДЕТ ИСПРАВЛЕНО В БЛИЖАЙШЕЕ ВРЕМЯ!

Качаете подходящий вам проект, распаковываете его, и смотрите. Там есть подпрограмма пользователя (HOD), которая Вот в идеале вы можете править только ее. Желательно в другие места затравок не лазить, а то может проект рассыпасться! Хотя если очень хочется, и вы понимаете что там делается..... Например, можно добавить дополнительные глобальные переменные (они вам наверняка понадобятся).

Для управления существует только одна подпрограмма, которая называется "M_UPR"
PROCEDURE M_UPR(F1,F2:REAL);
ей передается расход (%) левого двигателя и правого двигателя.
ВНИМАНИЕ! Если вы ошиблись в параметрах, то ничего страшного не произойдет, но устойчивость аппарата не гарантируется !

Подпрограммы "M_BEGIN", "M_HOD" являются служебными, и трогать их категорически не рекомендуется!.

А вот например с подпрограммой "M_OTRIS" при желании можно поэкспериментировать. Там ей передается параметр, от значения которого зависит как она станет рисовать. Сейчас реализован только вид "1" (3-и проекции). однако может к очному этапу появится еще. Если у вас очень медленный компютер, то можно вызывать отрисовку например раз в 10 ходов.

Ну а для того, чтобы вы могли как-то анализировать ситуацию предусмотрена информационная подпрограмма
PROCEDURE M_GET(VAR X,Y,DX,DY,F,UG:REAL);

X,Y - текущее попложение аппарата в пространстве
DX,DY - текущие скорости перемещения F - остаток топлива UG - наклон аппарата (от 0 до 2*PI)

Как только аппарат коснется поверхности, производится подсчет очков.
ВНИМАНИЕ! В нашем конкурсе идет подсчет только штрафных очков. Тоесть если Вы посадите аппарат точно в конец белой линии, скорость по Х и скорость по Y будут "0" и наклон аппарата будет "0" градусов, то вы получите "0" штрафных очков и всех победите :-).

Дерзайте, все в ваших руках и головах! Мало того, чтобы потом на очном этапе сюрпризов не случилось, нужно хорошенько погонять это ПО. Вдруг что-то работает не совсем так как заявлено. Пишите, ошибки подправим. На очном этапе все ошибки обзываются "багами" и исправлению не подлежат!

Месяц всем на ознакомление с задачей, наработки своих методик и подпрограмм, тестирование. А в новогодние каникулы (а конкретно 06.01.2018, в 12:00 в кабинете 2-24 СЮТ) состоится очный этап.
Не забудьте перед тем как сесть за праздничный стол, заглянуть на сайт и поинтересоваться конкретно временем и датой. Вдруг что-то поменяется :-)

ВНИМАНИЕ!

Желающим принять участие в конкурсе очень желательно зарегистрироваться. Чтобы заранее "застолбить" место на очном этапе. (тем более что предполагаются подарки)
РЕГИСТРАЦИЯ

Учтите, если вы зарегистрировались, то сразу в таблице себя не увидите. Мы постараемся внести информацию в течении 2-х дней.

На сегодня зарегистрировались:

Фамилия и имя Школа Класс Предпочитаемая оболочка
Сивирин Владислав СЮТ 11 Lazarus
Керемецкий Артем 103 9 Lazarus
Пимонов Даниил 102 10 Lazarus
Лазеев Сергей 102 8 Lazarus
Агафонов Ярослав 93 10 Lazarus
Плавко Михаил ЖКК 11 Lazarus
Климов Иван 102 10 Lazarus

По всем вопросам обращайтесь к администрации "Звездного Мира" через систему

Вопрос-ответ (предпочтительно).

или по почте