ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:00
Подготовка робота к соревнованиям:
  • Участники объединят знания курса для подготовки робота
  • Робот должен двигаться по чёрной линии, объезжать препятствия, находить выход из лабиринта и преодолевать горку
  • Среди заданий робота обозначены объезд препятствий и прохождение лабиринта
00:00:19
Описание полигона и задач:
  • Робот должен двигаться по чёрной линии, объезжать препятствия, преодолевать горку и достигать кегельринга
  • В конструкции робота рекомендуется разместить моторы в портах A и B2, датчики цвета в портах E и F, датчик касания в порту Ц и датчик расстояния в порту Д
  • После преодоления препятствий и горки робот должен добраться до центра круга, вытолкнуть все кегли за пределы круга и остановиться внутри круга
00:02:37
Программирование движения по линии:
  • 1. Создана новая переменная `count` для подсчёта перекрёстков во время движения по полигону
  • 2. Добавлен блок задания начальной величины переменной `count`, обнуляется перед началом движения
  • 3. Введена проверка корректности записи переменной через вывод её значений на экран до старта и во время движения
00:05:30
Калибровка датчиков:
  • 1. Для отслеживания значений переменных предлагается выводить их в мониторинг, установив соответствующие галочки перед началом работы
  • 2. Переменные изначально установлены в ноль при старте программы
  • 3. Предложено создать отдельные процедуры для записи калибровки и движения, обеспечивающие управление движением калибровочной программы по линии
00:06:34
Создание процедур движения и объезда препятствий:
  • Создана новая процедура движения, размещённая рядом с основной программой
  • Все блоки, относящиеся к движению и калибровке, размещены справа от программы
  • Разработан алгоритм движения по линии с объездом препятствий, включающий циклы и условия выхода из цикла
00:12:59
Программирование лабиринта:
  • Принято решение использовать существующий код поиска выхода из лабиринта и скопировать его из другого проекта
  • Добавлен блок цикла для выполнения действий поиска выхода до тех пор, пока не встретится перекрёсток
  • Предусмотрено добавление условий выхода из цикла движения по лабиринту, определяемых значением переменной `count`, равной единице
00:16:31
Проезд по горке:
  • Записан алгоритм движения по лабиринту и горке для проезда третьего участка полигона
  • Проезд по горке аналогичен обычному пересечению перекрёстка, датчики поднимаются вверх и отслеживают наличие линии или отсутствия полигона
  • Движение по третьему участку полигона выделено в отдельную процедуру и добавлен вызов процедуры горки внутри основного алгоритма
00:18:42
Программирование кегельринга:
  • Разработан алгоритм движения робота вокруг круга с использованием поворота на определённый угол (8 кегель = 2 оборота колеса)
  • Создан алгоритм завершения программы кегельринга, включающий остановку робота после выполнения всех действий
  • Записанная программа кегельринга выделена в отдельную процедуру и добавлена в основной алгоритм передвижения робота
0: Привет. В этом видео мы объединим знания по всему курсу и подготовим робота для соревнований. Большое путешествие. Двигаясь по чёрной линии. Нашему роботу нужно будет объехать препятствие, найти выход из лабиринта, преодолеть горку и
1: Кегли из кеглера.
2: Мы находимся на полигоне. Большое путешествие. Задача робота, двигаясь от стартовой клетки вдоль чёрной линии, достигнуть кегельринга и вытолкнуть все кегли за черту круга. Для прохождения полигона. Большое путешествие. Мы разобьём его на 4.
3: Задачи. Движение по линии с препятствием. Лабиринт горка и кегельринг. Наш робот начинает движение из клетки. Старт едет по чёрной линии и достигает препятствия, которое необходимо объехать. Здесь мы
4: Используем алгоритм движения с лалом, то есть поворачиваем налево, объезжаем препятствие, возвращаемся на линию и продолжаем движение. Как только мы достигаем перекрёстка, мы понимаем, что переходим к следующей задаче, к лабиринту для про
5: Прохождение лабиринта. Нам понадобятся алгоритмы, которые мы изучили в ролике лабиринт. Соответственно, мы берём правило правой руки, двигаемся вдоль стен и доезжаем до выхода. Об этом нам сообщает как раз-таки перекрёсток. Следующая Зада.
6: Преодоление горки. Наш робот, двигаясь по чёрной линии, забирается на горку, спускается с неё и доезжает до следующего перекрёстка, который предвещает Кигель ринг алгоритмически. Здесь просто движение по линии с 1 перекрёстком, а вот
7: Конструкторская. Здесь уже более сложная задача. Нам необходимо собрать робота, у которого центр тяжести будет позволять ему забираться на горку. Лучше колеса располагать сзади, а датчики как раз спереди. Затем наш робот доезжает до полигона Кигель.
8: Здесь ему необходимо заехать в центр круга, определить 8 кегель и вытолкнуть их за пределы ринга. По окончанию действия необходимо остановиться внутри круга. Для прохождения полигона. Большое путешествие. Нам понадобится робот, оборудованный всеми. Да?
9: Итак, у нас 2 мотора, которые подключены в порты а и b2 датчика цвета, которые подключены в порты е и f датчик касания, подключённый в порт ц и датчик расстояния, направленный вправо.
10: Подключённый в порт д. Соответственно, датчик касания будет определять препятствия и стенки в лабиринте. Датчик расстояния поможет нам определять стенки в лабиринте и кегли в кегельринге. Ну а датчики цвета помогут нам двигаться вдоль
11: Линии и определять перекрёстки, чтобы запрограммировать робота для прохождения полигона большое путешествие, разобьём 1 большую задачу на несколько маленьких. 1, с чего мы начнём это движение по линии для того, чтобы его заново не писать, мы можем обратиться к уже написанной
12: Программе и скопировать участки кода, которые нам необходимы для движения. Открываем все программы, переходим в список всех проектов и выбираем движение по линии с 2 датчиками. Выбираем верхний блок. Нажи
13: Нажимаем контрол ц или же просто правой клавишей скопировать переходим в нашу программу большое путешествие и сочетанием клавиш контрол в вставляем весь код программы движения по линии, подключаем его к start.
14: Блоку и проверяем, все ли корректно у нас здесь записано. У нас есть установка скорости движения.
15: Калибровка.
16: И цикл движения по линии здесь отсутствует подсчёт перекрёстков во время движения по полигону большое путешествие. Нам это обязательно необходимо. Для того, чтобы добавить подсчёт перекрёстков. Мы создаём новую переменную назы.
17: Вам её, например, count?
18: И во время прохождения перекрёстка а это именно вот это место в нашем цикле задаём переменный count.
19: Значение count + 1.
20: Поскольку при присвоении переменной count значения мы обращаемся к ней же, нам необходимо её обнулить до начала движения по линии добавляем блок задать значение переменной count.
21: Перед стартом движения.
22: Для того, чтобы быть уверенным, что переменная корректно записалась, добавляем записать на экран.
23: Значение переменной аккаунт проделываем это и до запуска программы, и во время движения по линии
24: Для того чтобы значение переменной count записывалось во время прохождения перекрёстка, 1 раз добавим задержку, задержку мы используем здесь звуковую, чтобы ещё и детектировать прохождение перекрёстка, добавляем блок включить звуковой сигнал.
25: На 0,5 секунды.
26: Поскольку у нас здесь используется значение уставки в виде серого цвета, проверяем корректность выполнения программы калибровки. Сначала мы нажимаем кнопку налево, у нас записывается переменная блэк 1. То есть нам нужно поставить сначала на чёрную линии
27: Затем переставляем на белый полигон, нажимаем кнопку вправо, у нас записывается переменная вайт и затем рассчитывается уставка, как среднеарифметическая между черным и белым для каждого из датчиков, подключённых соответственно в порты ц и д.
28: Для того чтобы корректно отслеживать значение этих переменных, мы можем их вывести в мониторинге, проставив галочки напротив каждой из переменных до старта. Программы эти переменные у нас равны нулю во время старта. Вы можете отле.
29: Отслеживать значение в этом окошке для того, чтобы обращаться к движению по линии калибровке во время программы. Тогда, когда нам это нужно, создадим процедуры и запишем калибровку и движение отдельно. Внутри этих процедур переходим
30: К моим блокам нажимаем создать блок и 1 блок. Назовём движение.
31: Новая процедура создана разместим её рядом с нашей программой и перенесём все блоки, относящиеся к движению.
32: Вместе с переменными каунт внутрь нашей процедуры.
33: По алгоритму процедуру движения мы будем запускать вместе с обнулением переменной count.
34: Теперь в теле программы вызовем процедуру движения, добавив соответствующий блок тоже самое проделываем и с калибровкой создаём новый блок с названием калибровка.
35: Размещаем его.
36: Справа от нашей программы и добавляем в неё все блоки, связанные с калибровкой.
37: Вызываем процедуру в теле программы, по необходимости переходим к программированию 1 участка полигона. Движение по линии с объездом препятствия. Для этого подготовим сначала блок процедуры движения, мы будем её вызывать внутри.
38: 3 цикла объезда препятствия, поэтому оставляем только условия с определением перекрёстков и подсчётом переменных.
39: 1, с чего мы начинаем, это выезд со стартовой клетки. Нам необходимо добавить блок проезда вперёд буквально на полоборота, чтобы начать движение по линии.
40: Добавляем блок движения переместиться вперёд после того, как провели калибровку.
41: Указываем полоборота. Теперь мы находимся на линии и можем двигаться до того, пока не определим препятствие перед собой. Добавляем блок цикла.
42: Повторять, пока не
43: Датчик касания ц не будет нажат прежде чем мы начнём движение по линии, нам необходимо обнулить переменную count.
44: А блок нажатия кнопки влево для запуска мы перенесём в калибровку.
45: Цикл повторять всегда нам теперь уже не нужен как только мы докоснулись нашего кирпича, это значит, что можно приступать к объезду препятствия.
46: Отъезжаем немножко назад.
47: Достаточно будет 0,3 оборота. Поворачиваем налево на 90 градусов.
48: То есть используем блок поворота налево.
49: На полоборота и начинаем движение по дуге, пока наш датчик цвета правый не увидит чёрную линию.
50: Добавляем блок начала движения, устанавливаем угол вправо 60.
51: И добавляем блок ожидания.
52: Пока датчик цвета.
53: Не увидеть значение меньше серого.
54: Устанавливаем правый датчик цвета, подключённый в портф, и используем соответствующую переменную грей 2.
55: Как только наш робот увидел чёрную линию своим правым датчиком, нам необходимо вернуться на линию плавным поворотом.
56: Под углом - 60.
57: На полоборота.
58: Значение вправо 60 влево - 60. Вам необходимо корректировать самостоятельно в зависимости от полигона и препятствия. После того, как мы вернулись на линию. Также добавляем движение по линии до того момента, пока мы не выйдем с наше
59: Участка полигона, то есть не увидим перекрёсток, который соединяет движение по линии с объездом препятствия и лабиринт добавляем блок повторять, пока не устанавливаем внутри блока.
60: Процедуру движения и условие выхода из этого цикла у нас будет определение перекрёстка, то есть когда переменный аккаунт
61: Станет равна единице.
62: Мы достигли следующего участка полигона. Лабиринт и объезд препятствия будет закончен после того, как мы закончили выполнять 1 задачу нашего полигона объезд препятствия для того, чтобы корректно въехать в лабиринт. Добавим блок движения вперёд на
63: 1 наоборот, чтобы сразу же перейти к движению внутри самого лабиринта.
64: Программа движения по 1 участку записана, мы можем её выделить в отдельную процедуру, создаём новый блок, называем его объезд.
65: Выделяем все блоки, которые связаны именно с объездом препятствия, и перемещаем их.
66: Только что созданную процедуру.
67: Размещаем блоки так, чтобы можно было к ним удобно возвращаться.
68: И вызываем процедуру объезда внутри тела программы. Теперь переходим к программированию поиска выхода из лабиринта. Поскольку мы уже писали данный код, мы можем скопировать его из соответствующего проекта.
69: Лабиринт.
70: Выделяем блок цикла контрол ц контрол в.
71: Поскольку у нас лабиринт будет выполняться не всегда, у нас есть следующие участки программы, нам необходимо добавить цикл.
72: Повторять, пока не и переместить в него все блоки, относящиеся к алгоритму поиска выхода, блок повторять всегда нам теперь больше не нужен.
73: Выполнять действия поиска выхода из лабиринта. Мы будем до того момента, пока не увидим перекрёсток. Для того, чтобы это добавить. 1. Мы добавляем обнуление переменной count, который у нас отвечает за подсчёт перекрёстков перед
74: Движения внутри лабиринта выводим на экран на всякий случай значение этой переменной
75: Теперь смотрим внимательно, в какой момент мы должны следить за тем, что проехали перекрёсток. За это отвечает участок алгоритма, когда кнопка ц не нажата. Соответственно, нам необходимо добавить в этот участок определение.
76: Перекрёстка. Можем посмотреть внимательно на движение по линии, как у нас реализовано здесь и здесь видим, что используются 2 блока. Условия, которые вложены друг в друга. Поэтому точно также добавляем блоки, условия.
77: Вложенные друг в друга можем скопировать действия, относящиеся к подсчёту перекрёстков.
78: И вставить их внутрь наших вложенных условий.
79: Условия также у нас будут, что датчики ц и д.
80: Видят чёрный цвет, то есть их значение ниже уставки серого цвета.
81: Теперь остаётся добавить условия выхода из цикла алгоритма движения по лабиринту таким условием будет определение перекрёстка, то есть
82: Значение переменной count будет равняться единице.
83: Движение внутри лабиринта записано теперь можем выделить их в отдельный блок.
84: Добавляем новый блок, процедуру, лабиринт.
85: И перемещаем все блоки, относящиеся к этому алгоритму внутрь процедуры, добавляем вызов лабиринта внутри тела программы и удобно размещаем процедуру так, чтобы к ней можно было всегда вернуться.
86: Алгоритм движения по лабиринту записан, теперь переходим к проезду по горке для того, чтобы проехать 3 участок полигона большое путешествие, нам необходимо сначала двигаться по линии, затем преодолеть горку и опять двигаться по линии до перекрёстка.
87: Который будет сигнализировать о том, что мы переходим к геллери. На самом деле проезд по горке ничем не будет отличаться по проезду обычного перекрёстка, поскольку датчики поднимаются наверх и детектируют отсутствие полигона или линии. Поэтому мы просто
88: Можем запрограммировать движение по линии, добавляем блок, повторять, пока не размещая внутри этого блока процедуру движения перед тем, как мы запустим цикл с движением, нам необходимо
89: Обнулить переменную аккаунт.
90: Вывести её на экран.
91: И выполнение цикла проезда через горку будет завершаться в тот момент, когда переменный аккаунт будет равняться.
92: 2 перекрёстку.
93: После того, как мы достигли 2 перекрёстка, мы находимся перед Кигель рингом. Теперь нам необходимо добавить движение вперёд для того, чтобы разместиться в центре этого кигли ринга и начать выбивать кегли, поэтому добавляем проезд вперёд.
94: На 90 сантиметров, что соответствует расстоянию от этого перекрёстка до центра галерина, алгоритм проезда по 3 участку с горкой записан, теперь необходимо выделить его в отдельную процедуру.
95: Переносим все блоки внутрь новой, только что созданной процедуры и добавляем вызов процедуры горка внутри тела.
96: Программы переходим к программированию кегельринга. Ранее мы составляли алгоритм, в котором использовали поиск препятствия, его определение и выталкивание за круг. Теперь мы будем использовать фиксированное расположение кегель по кругу для
97: Того, чтобы поворачиваться на определённый угол вокруг робота. 8 кегель 1 оборот это 2 оборота колеса. Именно настолько нам нужно поворачивать, чтобы располагаться Ровно напротив каж.
98: Из кегель. Давайте запишем это в виде алгоритма. Добавляем цикл со счётчиком.
99: Повторять действие мы будем 8 раз, поскольку 8 кегель находится вокруг робота.
100: Наш робот будет двигаться вперёд.
101: Пока не увидят чёрную линию круга.
102: То есть добавляем блок ожидания.
103: До того момента, пока датчик цвета.
104: При том любой не увидит значение.
105: Ниже серого.
106: После этого наш робот должен вернуться в центр круга.
107: Это перемещение назад.
108: На 50 сантиметров, поскольку у нас весь круг это 1 метр, половина круга это 50 сантиметров. И после того, как мы переместились назад, нам необходимо встать напротив следующей кегли. Для этого мы добавляем поворот.
109: На 0,25 оборота колеса.
110: По окончанию выполнения программы иеринга нам необходимо остановиться, поэтому добавляем блок остановить движение.
111: Программа кегельринга записана, теперь мы выделяем её в отдельный блок процедуры, называем процедуру кегельринг.
112: И перемещаем в неё все блоки, относящиеся к данному алгоритму.
113: Добавляем вызов процедуры кегелинг в тело нашей программы.
114: Алгоритм прохождения большого путешествия завершён, теперь посмотрим на все наши процедуры и разместим их так, чтобы удобно было к ним возвращаться в случае редактирования программы.
115: Давайте запустим робота на полигоне.
116: Запускаем робота на полигоне. 1, что мы делаем, это проводим калибровку, устанавливаем робота на чёрном цвете, нажимаем влево на белом вправо. И наш робот готов к старту. Подносим его прямо к 1.
117: Перекрёстку и нажимаем влево. Робот начал движение и выравнивается вдоль чёрной линии. 1 препятствие, которое ему необходимо преодолеть, это кирпич, он подбирается к нему
118: Видит датчиком касания и приступает к объезду.
119: Объезд совершён, робот вернулся на линию, и теперь его задача достигнуть лабиринта.
120: Робот преодолел очередной перекрёсток и начал выполнение задачи поиска выхода из лабиринта он отлично поворачивает внутри стенок, достигает 1 тупика и пытается найти выход из него отъезд.
121: Назад внутри клетки это выравнивание, которое мы используем, чтобы выровнять робота относительно стенок лабиринта. Да, робот отлично нашёл выход, проехал перекрёсток и приступил к задаче преодоления горки.
122: Есть преодоление горки, робот выровнялся по линии и продолжает движение к кегельринг робот подъехал к финишу участка с горкой и перемещается в центр кегельринга.
123: Наш робот вытолкнул все.