Оренбургский государственный педагогический университет
Опубликован: 10.09.2014 | Доступ: свободный | Студентов: 1958 / 431 | Длительность: 05:42:00
ISBN: 978-5-9556-0164-9
Лекция 9:

Управление движением робота при помощи системы с отрицательной обратной связью

< Лекция 8 || Лекция 9: 12

Кегельринг

В мире робототехники проводится множество различных соревнований. Наиболее известными и зрелищными являются сумо роботов, поиск выхода из лабиринта, скоростное движение по линии и танцы роботов. Большое количество соревнований проводятся на всемирной олимпиаде роботов (WRO), где перед роботами ставятся сложные интеллектуальные задачи. Мы рассмотрим одну из соревновательных задач начального уровня - так называемый "Кегельринг".

Поле для соревнования "Кегельринг"

Рис. 9.11. Поле для соревнования "Кегельринг"

Имеется робот, оснащённый датчиками цвета (или света) и ультразвука. Также имеется ринг и расставленные внутри него кегли - алюминиевые банки (Рис. 9.11). Робот должен вытолкнуть все кегли за пределы ринга. Начальное положение робота - центр ринга. Побеждает робот, вытолкнувший все кегли из ринга за минимальное время. На решение задачи роботу даётся 2 минуты.

Наиболее очевидное общее решение задачи распадается на две отдельные подзадачи:

  1. поиск кегли;
  2. выталкивание кегли.

Поиск кегли

Для поиска банки добавьте в конструкцию робота датчик ультразвука, направленный вперёд. Запрограммируйте поведение робота по следующему алгоритму:

  1. робот, находясь в центре ринга, разворачивается на месте, пока датчик не зафиксирует расстояние до объекта менее заданного;
  2. остановка.

Задание 9.9. Составьте программу поиска роботом кегли.

Выталкивание кегли

Если кегля найдена, то алгоритм её выталкивания состоит в следующем:

  1. двигаться вперёд до чёрной линии;
  2. вернуться назад.

Возникает вопрос: насколько сильно робот должен возвращаться назад? Очевидно, на то же расстояние, которое он проехал до линии. Как определить это расстояние?

Моторы Lego Mindstorms содержат встроенный датчик оборотов. Снимать показания этого датчика можно при помощи блока Rotation Sensor из меню Sensor полной палитры. Этот блок подсчитывает количество градусов (с точностью до 1°) или количество полных оборотов вала мотора.

Доступ к блоку Rotation Sensor в меню Sensor

Рис. 9.12. Доступ к блоку Rotation Sensor в меню Sensor

Блок Rotation Sensor имеет довольно много входных и выходных разъёмов. Для решения нашей задачи понадобится только один разъём, выдающий текущее количество градусов или оборотов, совершённых валом мотора.

Настройки блока Rotation Sensor

увеличить изображение
Рис. 9.13. Настройки блока Rotation Sensor

Поле Action задаёт тип действия: Read - считать данные; Reset - сбросить показания датчика в ноль.

Пример 9.3. Демонстрация работы датчика оборотов.

  • Запрограммируйте робот так, как показано на Рис. 9.14. Обратите внимание, что первый блок Rotation Sensor сбрасывает показания датчика оборотов в ноль, а второй работает в режиме чтения.
  • Загрузите программу на робот при помощи кнопки Download and Run.
  • Не отсоединяя USB-кабель вращайте колесо робота вперёд/назад и наблюдайте за показаниями на экране.
  • Сравните показания на экране с показаниями в поле обратной связи датчика оборотов.
Демонстрация работы датчика оборотов

Рис. 9.14. Демонстрация работы датчика оборотов

Задание 9.10. Измените программу так, чтобы данные выводились в оборотах.

Кегельринг. Общий алгоритм

Итак, общий алгоритм кегельринга состоит в следующем:

  1. Разворот на месте, пока датчик ультразвука не обнаружит банку.
  2. Двигаться вперёд до чёрной линии.
  3. Вернуться назад на столько же оборотов, сколько он проехал вперёд, выталкивая очередную банку.
    Напоминаем, что на концентратор данных блока Move можно передавать только градусы, но не обороты.
  4. Перейти к пункту 1.

Задание 9.11. Реализуйте алгоритм кегельринга целиком. Устройте соревнование "Кегельринг" по описанным выше правилам.

Задание 9.12. Создайте программу для имитации дискового телефона. Пользователь "набирает номер" из трёх цифр (от нуля до девяти). После набора каждой цифры диск должен вернуться в исходное состояние. В конце набора робот проговаривает набранный номер вслух (по цифрам).

< Лекция 8 || Лекция 9: 12