№ | Слайд | Текст |
1 |
 |
World Robot Olympiad (WRO) 2015 Анализ задания «Поиск сокровищ»Александр Ворон voron.alexander@gmail.com |
2 |
 |
Ворон АлександрДавайте знакомиться! Нижний Новгород 4 года с LEGO-роботами Победы на Intel ISEF, Робофест Участие в финалах World Robot Olympiad, Google Moonbots Судья Мирового этапа World Robot Olympiad http://nnxt.blogspot.com – самый полезный ресурс на русском языке по LEGO-роботам |
3 |
 |
Пару слов о WROВ России – Международные состязания роботов (МСР) Включают в себя соревнования в 4 категориях: Основная категория Творческая категория Студенческая категория Футбол роботов |
4 |
 |
WRO 2015Российский этап – г. Казань (26 – 28 июня) Мировой этап – Катар, г. Доха (6 – 8 ноября) Официальный сайт WRO 2015: http://www.wro2015.org Перевод правил на сайте МСР: http://robolymp.ru/rules |
5 |
 |
Основная категорияКоманды должны сконструировать и запрограммировать робота для решения конкретной задачи 3 возрастных группы: младшая группа (до 13 лет) средняя группа (13-15 лет) старшая группа (16-19 лет) Задачи во всех возрастных группах разные |
6 |
 |
Общие правила основной категорииОбщие правила применяются ко всем возрастным категориям Робот должен быть построен только из LEGO Размер робота ограничен: 250 * 250 * 250 мм 1 EV3 / NXT блок У EV3 можно использовать 4 мотора Разрешены все датчики NXT / EV3 (в т.ч. EV3 гироскоп) Bluetooth и Wi-Fi отключены |
7 |
 |
WRO 2015 - Основная категорияМладшая группа – Ловля жемчуга Средняя группа – Поиск сокровищ Старшая группа – Восхождение на горы |
8 |
 |
Поиск сокровищ – Игровое поле |
9 |
 |
Поиск сокровищ - ЗаданиеРобот должен: собрать 5 артефактов отвезти артефакты на базу не перемещать опасные артефакты |
10 |
 |
Поиск сокровищ – Координатная системаКоординатная система: Цвет строк Цвет столбцов Координаты первого артефакта |
11 |
 |
Базовая конструкция роботаРобот «5 minute bot» с небольшими дополнениями: |
12 |
 |
Поиск сокровищ – Общий алгоритмПример решения: http://youtu.be/4uALSzXZN-U |
13 |
 |
1. Считать шифр карты – общий алгоритмДвижение по линии Считывание шифра координаты 1-го артефакта цвета столбцов цвета строк Выезд на координатную сетку |
14 |
 |
1. Считать шифр карты1.1 Движение по линии 1.2 Считывание шифра 1.2.1 координаты 1-го артефакта 1.2.2 цвета столбцов 1.2.3 цвета строк |
15 |
 |
1.1 Движение по линииУниверсальный алгоритм для всей задачи Пропорциональный регулятор с 1 датчиком |
16 |
 |
1.2 Считывание шифраРешим промежуточную задачу – робот едет вдоль линии и говорит цвета плиток 3 блока – движение по линии, определение цвета, произнесение цвета Есть ли ложные срабатывания? |
17 |
 |
21 1.2 Считывание шифра Какой цвет «видит» датчик цвета в 1 и 2 случаях? Иногда для верного определения цвета плитки нужно попасть на ее центр плитки |
18 |
 |
1.2 Считывание шифра - алгоритмЕдем по линии Ожидаем белый цвет Ожидаем не белый цвет Проезжаем X градусов, чтобы попасть на центр плитки Определяем цвет плитки |
19 |
 |
1.2 Считывание шифра - алгоритмДвижение по линии и считывание цветов плиток – в разных потоках |
20 |
 |
1.2 Считывание шифра - алгоритмТеперь надо сохранить цвета плиток в переменные: В EV3 удобно использовать массивы: |
21 |
 |
Промежуточный результат №1Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается |
22 |
 |
2. Определение координат артефактаМы знаем цвет строки / столбца, где находится артефакт, но не знаем их порядковые номера Задача: написать 2 блока: «определение индекса строки» входной аргумент: цвет строки, выходной – номер строки «определение индекса столбца» входной аргумент: цвет столбца, выходной – номер столбца |
23 |
 |
2. Определение координат артефактаПример блока «определение индекса строки»: |
24 |
 |
2. Определение координат артефактаПример блока EV3: Итеративно сравниваем цвет каждой строки с цветом 1-го артефакта. Если обнаружено равенство цветов – выходим из цикла |
25 |
 |
Промежуточный результат №2Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается робот выводит координаты 1 артефакта на экран |
26 |
 |
3. Выезд на координатную сеткуОптимальный алгоритм выезда зависит от конструкции робота Предложенный робот имеет широкую колесную базу, поэтому были выделены 2 варианта: 1 артефакт находится на 1 строке 1 артефакт находится на 2 - 4 строке |
27 |
 |
3. Выезд на координатную сетку – 1 вариант1 артефакт находится на 1 строке Алгоритм: поворачивать левым колесом, пока датчик не увидит светлый, темный и снова светлый участки |
28 |
 |
3. Выезд на координатную сетку – 2 вариант1 артефакт находится на 2 - 4 строке Алгоритм: проехать немного вперед по линии поворачивать левым колесом, пока датчик не окажется в «зеленой» зоне продолжать поворачивать, пока датчик не видит темный и светлый участки |
29 |
 |
3. Выезд на координатную сетку – 2 вариант1 артефакт находится на 2 - 4 строке Пример блока: Проехать немного вперед по линии Продолжение поворота до темной и светлой зон Поворот до зеленой зоны |
30 |
 |
Промежуточный результат №3Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается робот выводит координаты 1 артефакта на экран робот выезжает на координатную сетку если артефакт стоит на 1 строке – робот выезжает на 1 строку если артефакт стоит на 2-4 строке – робот выезжает на нулевой столбец |
31 |
 |
4. Подъехать к 1-му артефактуАлгоритмы подъезда к 1 артефакту и всем остальным будут отличаться Рассмотрим алгоритм подъезда к 1-му артефакту: если артефакт на 1 строке – робот находится на нужной строке, осталось подъехать к нужному столбцу если артефакт стоит на 2-4 строке – робот находится на нулевом столбце, надо подъехать к нужной строке, повернуть налево и подъехать к нужному столбцу |
32 |
 |
4. Подъехать к 1-му артефактуВыделим основные подзадачи: поворот налево подъезд к нужной строке подъезд к нужному столбцу подъезд к артефакту Решим каждую из них отдельно. |
33 |
 |
4.1. Поворот налевоРеализация зависит от конструкции робота (расположения датчиков и пр.). Пример алгоритма: Запуск правого мотора Ожидание темной зоны Ожидание светлой зоны Ожидание темной зоны |
34 |
 |
4.2. Подъезд к нужной строке/столбцуВ общем случае, 1 и 3 задачи одинаковы: езда вдоль линии и остановка на n-ном перекрестке подъезд к нужной строке подъезд к нужному столбцу |
35 |
 |
4.2. Подъезд к нужной строке/столбцуМожно реализовать программу в 2 потока: движение по линии (для него блок уже готов) для того, чтобы робот не «дергался» / съезжал при пересечении перекрестка нужно предусмотреть это состояние (проезд перекрестка) определение и подсчет перекрестков потребуется дополнительный датчик цвета или света |
36 |
 |
4.2. Подъезд к нужной строке/столбцуПример реализации 1-го потока: Остановка после проезда n-го перекрестка Проверка флага Проезд перекрестка Движение по линии |
37 |
 |
4.2. Подъезд к нужной строке/столбцуПример реализации 2-го потока: Выход из цикла после проезда последнего перекрестка Установка флага «перекресток обнаружен» + инкремент счетчика перекрестков Ожидание перекрестка |
38 |
 |
4.3. Подъезд к артефактуНужен 3-ий датчик цвета для обнаружения артефакта Блок «подъезд к артефакту» - движение по линии до обнаружения артефакта датчиком цвета: |
39 |
 |
4. Подъехать к 1-му артефактуРешим промежуточную задачу: используя написанные блоки, составьте программу для прохождения траектории. Номер строки и столбца с артефактом задается переменными в программе. Проверьте, что робот доезжает до любого перекрестка |
40 |
 |
Промежуточный результат №4Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается робот выводит координаты 1 артефакта на экран робот выезжает на координатную сетку робот подъезжает к 1 артефакту |
41 |
 |
5. Определение координат следующего артефактаКоординаты каждого следующего артефакта закодированы: цвет текущего артефакта = цвет строки следующего артефакта цвет плитки под текущим артефактом = цвет столбца следующего артефакта |
42 |
 |
5. Определение координат следующего артефактаВыделим подзадачи: определение цвета артефакта определение цвета плитки под артефактом определение координат следующего артефакта |
43 |
 |
5.1. Определение цвета артефактаМожно определить цвет артефакта после остановки перед ним: Определение цвета артефакта Подъезд к артефакту |
44 |
 |
5.2. Определение цвета плитки под артефактомМожно определить цвет плитки под артефактом с помощью датчика цвета, который считывал шифр. Для этого необходимо сдвинуть артефакт: вплотную подъехать к артефакту повернуть так, чтобы датчик цвета оказался над плиткой |
45 |
 |
5.2. Определение цвета плитки под артефактомОбъединим программы определения цвета артефакта и плитки под ним: Определение цвета артефакта Сдвиг артефакта Определение цвета плитки под артефактом |
46 |
 |
5.3. Определение координат следующего артефактаЗадача определения координат артефакта по известным цветам строки и столбца была решена во 2 разделе. Используем блоки «определить индекс строки» и «определить индекс столбца», созданные во 2 разделе |
47 |
 |
Промежуточный результат №5Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается робот выводит координаты 1 артефакта на экран робот выезжает на координатную сетку робот подъезжает к 1 артефакту робот определяет и выводит координаты следующего артефакта на экран |
48 |
 |
6. Захват артефактаКонструкторская задача Возможный вариант механизма захвата: |
49 |
 |
Промежуточный результат №6Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается робот выводит координаты 1 артефакта на экран робот выезжает на координатную сетку робот подъезжает к 1 артефакту робот выводит координаты следующего артефакта на экран робот захватывает 1 артефакт |
50 |
 |
7. Определение зоны следующего артефактаКоординаты следующего артефакта определены, но как до него доехать? Можно выделить 9 возможных зон: 0 6 3 2 8 5 1 7 4 |
51 |
 |
7. Определение зоны следующего артефактаЗоны определяются в зависимости от значений Cx_delta и Rx_delta: Cx_delta = Cx – Cx_new Rx_delta = Rx – Rx_new № Cx_delta Rx_delta 0 > 0 > 0 1 > 0 < 0 2 > 0 = 0 3 < 0 > 0 4 < 0 < 0 5 < 0 = 0 6 = 0 > 0 7 = 0 < 0 8 = 0 = 0 |
52 |
 |
7. Определение зоны следующего артефактаЗакодируем значения Cx_delta: 0 (> 0), 3 (< 0), 6 (= 0) Закодируем значения Rx_delta: 0 (> 0), 1 (< 0), 2 (= 0) Номер зоны = код Cx_delta + код Rx_delta № Cx_delta Rx_delta 0 > 0 (0) > 0 (0) 1 > 0 (0) < 0 (1) 2 > 0 (0) = 0 (2) 3 < 0 (3) > 0 (0) 4 < 0 (3) < 0 (1) 5 < 0 (3) = 0 (2) 6 = 0 (6) > 0 (0) 7 = 0 (6) < 0 (1) 8 = 0 (6) = 0 (2) |
53 |
 |
7. Определение зоны следующего артефактаВычисление кода Cx_delta (1 ветка блока switch): Если cx_delta < 0: сохраняем значение 3 в индекс зоны Вычисление cx_delta |
54 |
 |
7. Определение зоны следующего артефактаВычисление кода Cx_delta (2 ветка блока switch): Если Cx_delta > 0 – ничего не сохраняем (индекс зоны был предварительно обнулен) Если cx_delta = 0: сохраняем значение 6 в индекс зоны Вычисление cx_delta |
55 |
 |
7. Определение зоны следующего артефактаВычисление кода Rx_delta (1 ветка блока switch): Если rx_delta < 0: прибавляем 1 к номеру зоны Вычисление rx_delta |
56 |
 |
7. Определение зоны следующего артефактаВычисление кода Rx_delta (2 ветка блока switch): Если rx_delta = 0: прибавляем 2 к номеру зоны Вычисление rx_delta |
57 |
 |
Промежуточный результат №7Робот считывает цвета плиток, проговаривает их и записывает в переменные (или массивы) после считывания шифра робот останавливается робот выводит координаты 1 артефакта на экран робот выезжает на координатную сетку робот подъезжает к 1 артефакту робот выводит координаты следующего артефакта на экран робот захватывает 1 артефакт робот выводит номер зоны следующего артефакта |
58 |
 |
8. Навигация до зоны следующего артефактаРассмотрим навигацию до зоны 1: повернуть вниз проехать (abs(Rx_delta)) перекрестков повернуть направо проехать (Cx_delta – 1) перекрестков подъехать к артефакту и забрать его Навигация до зон 0, 3, 4 будет аналогичной 1 |
59 |
 |
8. Навигация до зоны следующего артефактаРассмотрим навигацию до зоны 1 : повернуть вниз А какое текущее положение робота? Если направлен налево – надо поворачивать налево Если направлен направо – надо поворачивать направо Если направлен вверх – надо развернуться Если направлен вниз – не надо никуда поворачивать 1 |
60 |
 |
8. Навигация до зоны следующего артефактаВ зависимости от положения робота, необходимо выполнять разные повороты Нужно запомнить направление робота: 0 – вправо 1 – вниз 2 – влево 3 – вверх Переменную с направлением робота необходимо обновлять во время каждого поворота / разворота 3 0 2 1 |
61 |
 |
8. Навигация до зоны следующего артефактаКроме обычных блоков «поворот направо», «поворот налево» можно создать блоки «поворот в положение 1», «поворот в положение 2», … Тогда действие «повернуть вниз» будет выполняться блоком «поворот в положение 2» |
62 |
 |
8. Навигация до зоны следующего артефактаПроехать (abs(rx_delta)) перекрестков |
63 |
 |
8. Навигация до зоны следующего артефактаПовернуть направо алгоритм поворота был разобран в разделе 4.1 проехать (cx_delta – 1) перекрестков алгоритм подсчета перекрестков был разобран в разделе 4.2 подъехать к артефакту и забрать его алгоритмы были рассмотрены в разделах 4.3 и 5 |
64 |
 |
Промежуточный результат №8Робот считывает шифр карты робот выводит координаты 1 артефакта на экран робот выезжает на координатную сетку робот подъезжает к 1 артефакту робот выводит координаты следующего артефакта на экран робот захватывает 1 артефакт робот выводит номер зоны следующего артефакта робот едет к следующему артефакту |
65 |
 |
ХХОбъезд опасных артефактов Проезд перекрестка в прямом направлении |
66 |
 |
ХХОбъезд опасных артефактов Проезд перекрестка с поворотом направо |
67 |
 |
ХХОбъезд опасных артефактов Проезд перекрестка с поворотом налево |
68 |
 |
ХХОбъезд опасных артефактов В теории все понятно, а что изменять в программе? блок «проезд Х перекрестков» должен проверять наличие опасного артефакта перед собой, и, если он был обнаружен, объехать его в прямом направлении |
69 |
 |
ХХОбъезд опасных артефактов Если опасный артефакт был обнаружен на последнем перекрестке (перед которым надо остановиться), то можно повернуть направо / налево или объехать его в прямом направлении Тип поворота можно задать отдельным входным параметром блока; выходной параметр может обозначать факт маневра на последнем перекрестке |
70 |
 |
ВопросыАлександр Ворон voron.alexander@gmail.com |
«World Robot Olympiad (WRO) 2015 Анализ задания «Поиск сокровищ»» |
http://900igr.net/prezentacija/informatika/world-robot-olympiad-wro-2015-analiz-zadanija-poisk-sokrovisch-171315.html