Разработчик задач
Разработчик задач является ролью ответственной за разработку задач. Данный пользователь имеет возможность создавать задачи, формировать и публиковать туры.
Подготовка задач
Для создания задачи требуется предварительно загрузить необходимые файлы. К задаче можно прикрепить любое количество полигонов, одно упражнение, одно эталонное решение и опционально условие задачи.
Полигон — xml файл с ограничениями который будет использоваться при проверке
Упражнение — qrs файл, которой будет предоставлен участнику в качестве примера
Эталонное решение — qrs файл, который будет использован для проверки корректности полигонов
После загрузки всех необходимых файлов вы можете создать задачу и запустить тестирование эталонного решения. Далее, рекомендуется ознакомиться с результатами тестирования и убедиться, что эталонное решение получает ожидаемое количество баллов.
Разработка полигона
Первым этапом разработки полигона является расположение объектов окружения и разметки зон в TRIK Studio. После этого необходимо сохранить модель мира на диск. Дальнейшая работа будет происходить с сохранным файлом.
Данная секция направленна на знакомство с ограничениями, с подробной информацией можно ознакомиться в документации к TRIK Studio. Ограничения добавляются в специальный блок constraints в сохраненном файле. Также важной частью ограничений являются логические зоны, они добавляются в блок regions.
Самым простым ограничением является ограничение на время выполнения, оно выглядит следующим образом <timelimit value="60000"/>. Значение указывается в миллисекундах, в нашем примере ограничение составляет одну минуту.
Следующим важным видом ограничений является constraint. Данный тип ограничения позволяет выполнять произвольные проверки. Рассмотрим подробнее какие параметры у него есть.
checkOnceЕсли в значении стоит true, то ограничение будет проверено 1 раз при старте программы и больше проверяться не будет.failMessageСообщение об ошибке, которое будет показано при нарушении ограничения.
Внутри блока constraint должно быть описано условие, этим условием может быть сравнение некоторых значений, нахождение робота в определенной зоне и другое. Рассмотрим несколько примеров, следующее ограничение проверяет при запуске, что на порту А1 установлен инфракрасный датчик расстояния.
В данном примере используются следующие конструкции:
equalsПроверка равенства значений<string value="twoDModel::robotModel::parts::RangeSensor"/>Создание строкового значения<typeOf objectId="robot1.A1"/>Получение типа датчика установленного на соответствующем порту
Здесь и далее будут встречаться новые конструкции, со всеми ними можно ознакомиться в документации TRIK Studio.
Следующее ограничение проверяет, что робот находится в допустимом регионе на протяжении всего времени выполнения программы.
На случай если условие для ограничения состоит из нескольких компонентов есть специальный блок conditions. Данный блока позволяет указывать несколько условий и связывать их логически И (and) или ИЛИ (or). Тип связки указывается с помощью параметра glue. Рассмотрим пример ограничения проверяющего, что у робота на портах А1 и A2 установлен инфракрасный датчик расстояния.
Для выполнения действий перед началом работы программы есть специальный блок init. Его можно использовать, например, для инициализации переменной в которой будут храниться набранные баллы или вывода приветственного сообщения.
Иногда возникает необходимость не только проверить какое-то условие, но и выполнить определенные действия во время работы программы, для таких ситуаций существует блок event. Событие состоит из условия и триггера (действий, которые необходимо выполнить). Также блок event имеет ряд параметров.
settedUpInitiallyАтрибут, позволяющий указать взведено ли событие при старте программы. Событие может быть взведено или спущено (setted up и dropped). Во взведенном состоянии событие выполняет свой триггер по выполнению своего условия, в спущенном оно просто игнорируется системой.idУникальный идентификатор события. По этому идентификатору можно обращаться к данному событию из других. Опциональный.dropsOnFireЛогический атрибут, который указывает продолжать ли быть событию взведенным после его срабатывания или нет.
Рассмотрим событие, выводящее консоль сообщение о первом посещении зоны финиша.
Данное событие изначально взведено (так как нет дополнительных предусловий) и перестанет быть взведенным после выполнения (так как мы хотим сообщить только о первом посещении).
Одним из важных действий разрешенных в блоке trigger является success, при его исполнении программа завершит работу без ошибок. Данное действие обязательно должно выполняться в триггерах проверяющих завершение выполнения задания. Дополним предыдущий пример.
С success связан одно особое событие с id="on_success", данный триггер выполняется после завершения работы программы. Его удобно использовать, например, для вывода набранных баллов.
Рассмотрим процесс разработки ограничений для задачи, в которой робот должен посетить по порядку 3 зоны: за посещение каждой зоны начисляется 10 баллов. Также робот не должен покидать границы рабочей зоны и остановиться в последней зоне. В данном примере существенной роли не играет какие датчики использует робот, как он навигируется между зонами и как расположены сами зоны. Выбор этих параметров остается на усмотрение пользователя.
Сначала необходимо настроить конфигурацию робота и другие параметры в TRIK Studio, а затем сохранить модель мира. Далее представлен пример добавления логических зон и ограничений для описанной задачи.
Подготовка тура
Тур состоит из набора задач, даты начала, даты окончания и времени на прохождение. Дата начала и дата окончания регулируют в какое время участник сможет приступить к выполнению, а "время на прохождение" регулирует сколько у участника будет времени на выполнение задач.
После того как вы создали тур его можно будет опубликовать — все организаторы из той же группы пользователей (все, в случае публичной) смогут добавить его в свои группы.
Вход в систему
Видео инструкция
Текстовая инструкция
Для входа в систему необходимо выполнить следующие шаги:
Зайдите на сайт TestSys по ссылке
На главной странице нажмите кнопку "Войти"
Введите в поле свой код-доступа
Нажмите на кнопку "Войти"
Загрузка файлов
Видео инструкция
Текстовая инструкция
Для загрузки файлов вам необходимо выполнить следующие шаги:
Нажмите на кнопку "Файлы" в меню
В открывшемся разделе нажмите на кнопку "Создать файл"
Введите название и выберите тип загружаемого файла
Выберите файл, который хотите загрузить
Нажмите на кнопку "Создать"
Созданный файл отобразится на текущей странице в соответствующей таблице.
Создание задачи
Видео инструкция
Текстовая инструкция
Для создания вам необходимо выполнить следующие шаги:
Нажмите на кнопку "Задачи" в меню
В открывшемся разделе нажмите на кнопку "Создать задачу"
Заполните название и нажмите кнопку "Создать"
Созданная задача отобразится в списке задач, далее необходимо прикрепить к ней файлы:
Нажмите на название созданной задачи
Прикрепите необходимые файлы
Запустите тестирование
Просмотр результатов
Видео инструкция
Текстовая инструкция
Для просмотра результатов вам необходимо выполнить следующие шаги:
Нажмите на кнопку "Задачи" в меню
Нажмите на название интересующей задачи
В открывшемся разделе нажмите на кнопку "Результаты тестирования"
Создание и публикация тура
Видео инструкция
Текстовая инструкция
Для создания тура вам необходимо выполнить следующие шаги:
Нажмите на кнопку "Туры" в меню
В открывшемся разделе нажмите на кнопку "Создать тур"
Заполните необходимые поля и нажмите на кнопку "Создать"
Созданная тур отобразится в списке туров, далее необходимо прикрепить к нему задачи:
Нажмите на название созданного тура
Прикрепите необходимые задачи
После наполнения тура задачами его можно опубликовать:
Нажмите на название созданного тура
Выберите группу для которой хотите опубликовать тур
Нажмите кнопку "Добавить группу"