Урок прогресс
0% завершено
Задача 2: Отслеживание лиц
Одна из наиболее увлекательных задач — отслеживание лиц. Кварки может находить лицо и «следовать» за ним, поворачивая голову в том же направлении, что и человек перед ним. Звучит интересно, не так ли? Давайте же начнём писать код для робота, отслеживающего положение лица.
Понимание логики
- Если лицо находится в центре экрана, угол сервопривода должен быть прямым.
- Если оно перемещается левее, сервопривод также должен повернуться налево.
- Если оно перемещается правее, сервопривод также должен повернуться направо.
Напишем код!
- Перетащим блок when green flag clicked из панели События (Events).
- После этого добавим блок turn () video on stage with ()% transparency из расширения Распознавание лиц (Face Detection) и выберем вкл (on) из выпадающего меню. Так мы включим камеру.
- Камера должна включиться при нажатии на зелёный флаг. Прежде, чем приступать к следующему этапу, нужно убедиться, что эта часть программы работает.
- Добавим блок forever из панели Управление (Control) сразу под блоком turn () video on stage with () % transparency.
- Затем добавим внутрь блока forever блок analyze image from (). Этот блок будет анализировать лицо, которое распознает камера. Выберем пункт камера (camera) из выпадающего меню.
- Для изменения положения сервопривода добавим блок set servo on () to () angle под блоком analyze image from ().
- Здесь важна логика, потому что положение лица на экране имеет огромное значение. С учётом этого, нам нужно добавить блок деления () / () из панели Оператор (Operator) в область программирования.
- Поместим блок get () of face () в левую часть блока () / () и 3 — в его правую часть. Выберем пункт положение Х (X position) из выпадающего меню.
- Затем перетащим блок () + () внутрь блока set servo on () to () angle. В левую его часть введём значение 90, а в правую поместим блок () / ().
Пояснение о блоке сервопривода
- Для центра экрана мы устанавливаем значение положения X, которое равно нулю.
- При перемещении влево значение положения X будет меняться на отрицательное, а вправо — на положительное.
- Значение положения X делится на 3, что позволяет точно определить положение лица.
- Для установки угла сервопривода на 90 градусов в том случае, если лицо находится в центре экрана, мы прибавляем 90 к значению положения X.
- При перемещении влево значение угла сервопривода будет снижаться, так как значение положения X станет отрицательным.
- При перемещении вправо значение угла сервопривода будет увеличиваться, так как значение положения X станет положительным.
Проверка
Следующий шаг — проверить, всё ли работает правильно. Если лицо попадает в поле зрения камеры, оно должно распознаваться, и при перемещении влево или вправо голова робота также должна поворачиваться в нужном направлении.