<< Вернуться на главную КВАДРОБОЛНачинаем очередной конкурс программистов. Недавно в нашем городе прошел фестиваль "РОБОТЕХ". Там было много чего интересного, и в частности были широко представлены летающие дроны разнообразных конструкций. Вот мы тоже решили приобщиться к квадрокоптерному спорту и предлагаем конкурсантам сыграть в придуманную нами игру "КВАДРОБОЛ". Игра проходит в кубическом помещении размером 200х 200х200 метров. Суть игры заключается в том, чтобы управляя 4-мя квадрокоптерами одновременно, максимально точно пересечь центр помещения снизу вверх. За каждое пересечение условной зоны в центре помещения даются очки. При пересечении Снизу вверх очки положительные а при обратном отрицательные. Зона начисления очков представляет собой квадрат со сторонами 40х40м, расположенный горизонтально. Чем точнее к центру помещения вы пересечете зону, тем больше очков вам начислят. Если квадрокоптер не попал в зону зачисления, то очки не начисляются вообще. Центр помещения имеет координаты 0х0х0. Соответственно размеры игрового куба от -100 до +100 по всем осям. По условиям конкурса считается, что квадрокоптеры самостоятельно держат ориентацию и никогда не поворачиваются относительно осей. Высота представлена осью “Z”, глубина осью “Y” а перемещение вправо-влево это ось “X”. При столкновении квадрокоптеров со стенами помещения или друг другом происходит их падение на пол. После падения можно снова управлять аппаратом. Управление производится путем выдачи управляющих напряжений одновременно на все органы управления по осям X,Y,Z. Уровень управляющих напряжений от 0 до 255. Напряжение 128 соответствует среднему положению органа управления. Организаторами конкурса написана полная модель игры в которой учтены все факторы полета (включая контроль на столкновения и ветровые возмущения). Текущие координаты всех квадролетов известны, конкурсантам остается только продумать и реализовать такой алгоритм управления, который принесет максимальное количество очков за ограниченное количество ходов.
Игрушку с ручным управлением для ознакомления можно скачать
тут.
В игрушке все квадрокоптеры управляются одновременно стрелками (по Х и Y ) и по высоте кавишами "Q" и "A". Игровое поле показано как на чертеже в 3-х проекциях. Нижний левый - вид сверху, верхний левый - спереди, верхний правый - сбоку. Если квадрокоптер отрывается от земли, то начинают прорисовываться оси (желтые линии). В нижнем правом углу печатаются очки и текущий номер хода. Красными линиями в центре показана зона начисления очков, в которую нужно попадать. Задача конкурса - за 3000 ходов обеспечить максимальное количество очков. Как всегда за месяц предлагается освоить управление, попробовать максимально улучшить показатели, наработать полезные подпрограммы (можно конечно ничего не делать если вас не интересует результат :-) ). Ну а на очном этапе милости просим в СЮТ с готовыми исходниками и собственными идеями. Обещаем как минимум усложнить жизнь. Управление квадрокоптерами совсем не простая задача. Различные завихрения в воздухе встречаются и даже ветер. Но ведь и реальными квадрокоптерами так-же трудно управлять и ничего, справляются. Уверен что и конкурсанты справятся. Просто кто-то очков поменьше получит а кто-то побольше, вот и определится победитель В конкурсе поддержано несколько оболочек и языков программирования. В зависимости от того какая оболочка вам более комфортна вы можете выбрать то что вам ближе. А почему именно такой выбор? Да просто потому, что именно эти оболочки официально куплены нами в СЮТ. А значит, на очном этапе вы можете выбрать любую из этих оболочек. Если у вас другие версии, то вы можете адаптировать проект под вашу оболочку. Это легко делается, потому что основные функции вынесены в DLL. Но учтите, что на очном этапе мы можем обеспечить вам только указанные версии! Впрочем вы можете прийти и со своим ноутбуком, если вас не устраивают наши средства. Игра написана так, что от производительности компьютера она совершенно не зависит.
Для участия в конкурсе качаете готовую затравку Качаете подходящий вам проект, распаковываете его, и смотрите. Там есть подпрограмма пользователя (HOD), которая вызывается 3000 раз по мере выполнения программы. Вот в идеале вы можете править только ее. Желательно в другие места затравок не лазить, а то может проект рассыпасться! Хотя если очень хочется, и вы понимаете что там делается..... Например, можно добавить дополнительные глобальные переменные (они вам наверняка понадобятся).
Для управления существует только одна подпрограмма, которая называется "M_UPR" Подпрограммы "M_BEGIN", "M_HOD" являются служебными, и трогать их категорически не рекомендуется!. А вот например с подпрограммой "M_OTRIS" при желании можно поэкспериментировать. Там ей передается параметр, от значения которого зависит как она станет рисовать. Сейчас реализован только вид "1" (3-и проекции). однако может к очному этапу появится еще. Если у вас очень медренный компютер, то можно вызывать отрисовку например раз в 10 ходов.
Ну а для того, чтобы вы могли как-то анализировать ситуацию предусмотрены информационные подпрограммы и функции Дерзайте, все в ваших руках и головах! Мало того, чтобы потом на очном этапе сюрпризов не случилось, нужно хорошенько погонять это ПО. Вдруг что-то работает не совсем так как заявлено. Пишите, ошибки подправим. На очном этапе все ошибки обзываются "багами" и исправлению не подлежат!
Месяц всем на ознакомление с задачей, наработки своих методик и подпрограмм, тестирование. А в новогодние каникулы (а конкретно 09.01.2016, в 12:00 в кабинете 2-24 СЮТ) состоится очный этап.
ВНИМАНИЕ!
Желающим принять участие в конкурсе очень желательно зарегистрироваться.
Чтобы заранее "застолбить" место на очном этапе. Учтите, если вы зарегистрировались, то сразу в таблице себя не увидите. Мы постараемся внести информацию в течении 2-х дней. На сегодня зарегистрировались:
PS. А наработки программ можно будет попробовать и для управления реальными аппаратами. И тогда может получиться как в этом ролике. Cкачать По всем вопросам обращайтесь к администрации "Звездного Мира" через систему или по почте |