
- •Разработка программы «Кегельринг»
- •Оглавление
- •Постановка задачи:
- •Описание задачи
- •Подзадачи:
- •Базовый уровень сложности.
- •Подсчёт вытолкнутых кеглей для остановки после выполнения задачи.
- •Выбор стратегии обхода.
- •Средний уровень сложности
- •Повышенный уровень сложности.
- •Заключение
- •Приложение 1. Требования к рингу, кеглям и роботу, предъявляемые на соревнованиях по кегельрингу:
- •Приложение 2. Таблица параметров, рассматриваемых в задаче «Кегельринг»
- •* Контур не должен иметь перекрёстков, вложенных контуров и острых углов.
Санкт-Петербургский Государственный Политехнический Университет
Факультет при ЦНИИ РТК
Кафедра телематики
Разработка программы «Кегельринг»
Учебная практика
Выполнила: Забалуева С. С.
Группа: 2172/2
Проверил: Курочкин М.А.
Оглавление
1. Постановка задачи: 3
2. Описание задачи 4
3. Подзадачи: 5
4. Базовый уровень сложности. 6
4. Средний уровень сложности 11
6. Повышенный уровень сложности. 14
7. Заключение 17
Приложение 1. Требования к рингу, кеглям и роботу, предъявляемые на соревнованиях по кегельрингу: 18
Приложение 2. Таблица параметров, рассматриваемых в задаче «Кегельринг» 19
* Контур не должен иметь перекрёстков, вложенных контуров и острых углов. 19
Постановка задачи:
Исследовать задачи типа «Кегельринг».
Проанализировать имеющиеся олимпиадные задачи раздела «Кегельринг»
Выделить подзадачи, решаемые в данной задаче.
Выделить несколько уровней сложности, для каждого из которых определить решаемые в нём подзадачи.
Описать метод решения задач каждого из уровней сложности.
Привести пример кода программы.
Привести примеры задач каждого уровня сложности.
Для написания программ использовать язык программирования ROBOTC, программу тестировать на роботе из конструктора LEGO MINDSTROMS 8547.
Описание задачи
После анализа имеющихся олимпиадных задач было выявлено пять основных параметров, которые могут изменяться, в зависимости от конкретной формулировки задачи:
Форма контура.
Контур представляет из себя простую фигуру, к примеру – круг или эллипс.
Форма контура не задана, известно, что он ограничен чёрной линией, имеет скруглённые углы и не имеет перекрёстков.
Число кеглей.
Задано.
Неизвестно.
План расстановки кеглей.
Известен
Неизвестен (в данном случае задача сводится к задаче уборки мусора)
Цвет кеглей.
Задан цвет кеглей, которые необходимо вытолкнуть.
Цвет кеглей не имеет значения.
Целевая функция.
Вытолкнуть все кегли за минимальное время.
Вытолкнуть максимальное количество кеглей за заданный интервал времени.
Для удобства представления выделенные параметры сведены в таблицу – см. Приложение 2.
Подзадачи:
При решении задач типа «Кегельринг» приходится сталкиваться с шестью значительно меньшими по объёму и сложности задачами:
Определение, наличия кегли на указанной позиции.
Выталкивание кегли за границу контура.
Подсчёт вытолкнутых кеглей для остановки после выполнения задачи.
Выбор стратегии обхода.
Определение цвета кегли перед её выталкиванием
Определение момента, когда робот достигает границы контура(чёрной линии).
Базовый уровень сложности.
Для формулировки задачи базового уровня воспользуемся самой простой задачей из раздела «кегельринг», используемой в соревнованиях. В ней форма контура и расположение кеглей известны и описываются схемой:
Схема 1. Классическое поле для кегельринга
Обобщив задачу, получим:
В задачах базового уровня сложности задана форма контура и план расстановки кеглей, цвет которых не имеет значения. Остальные параметры могут варьироваться.
Для решения задач базового уровня сложности необходимо решить подзадачи:
Определение, наличия кегли на указанной позиции.
Выталкивание кегли за границу контура.
Подсчёт вытолкнутых кеглей для остановки после выполнения задачи.
Выбор стратегии обхода.
Рассмотрим подзадачи подробнее в рамках базового уровня.
Определение, наличия кегли на указанной позиции. Чтобы определить, находится ли кегля на заданной позиции необходимо воспользоваться датчиком расстояния, сравнив его показатели с заданными размерами контура.
Выталкивание кегли за границу контура.
При сборке робота необходимо учитывать особенности действий, которые ему придётся выполнять, в особенности – выталкивания кеглей. Конкретная форма робота не имеет большого практического значения, однако следует избегать сужения его передней части.
С целью экономии времени кегли будем выталкивать сразу же после обнаружения, так что рассмотрим ситуацию, когда робот уже обнаружил кеглю и развёрнут по направлению к ней. Чтобы вытолкнуть обнаруженную кеглю за границу контура необходимо доехать до его границ – тогда кегля, которую робот будет толкать перед собой, окажется за границей контура.
Расчёта количества оборотов необходимого для прохождения заданного расстояния можно воспользоваться формулой длины окружности. Имеющаяся в языке ROBOTC команда позволяет роботу поворачивать колёса на один градус указанное количество раз. Исходя из того, что известно, сколько робот проходит за 360 оборотов, легко вычислить, сколько оборотов ему потребуется для прохождения любого заданного расстояния.