Проект №14 «Робоулинг»

Проект №14 «Робоулинг»

Есть такая игра, которая называется боулингом. В нем необходимо запускать шар по дорожке таким образом, чтобы он сбил как можно больше кеглей. Чем больше сбито кеглей, тем больше очков получает игрок. В идеале, шар должен сбить все кегли — тогда можно получить максимальное количество очков.

Но тот, кто хоть раз поиграл в боулинг, знает, что сбить все кегли — задача достаточно сложная. Шар после запуска норовит соскочить по дорожке в сторону либо упорно «не хочет» сбивать все кегли. В результате вполне может возникнуть желание исправить такую несправедливость, призвав на помощь робототехнические технологии.
 

 

 

Конструкция

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

В то же время, выполняя предыдущие проекты, вы наверняка заметили, что робот, как правило, не едет строго по прямой, даже когда оба мотора включены и подразумевается движение робота прямо. Он с течением времени хоть немного, но отклоняется от прямой и получется движение подуге. Если попробовать таким роботом сбить кегли, то вероятность промаха будет очень высока.

Поэтому для более точного запуска робота и его движения в сторону кеглей потребуется что-то, что позволит обеспечить прямолинейное движение. Этим элементом вполне может стать так называемый энкодер, который устанавливается на мотор-редуктор и позволяет определять угол поворота вала. Он состоит из диска, одеваемого на выходной вал, и платы с оптическим датчиком, располагаемым напротив диска. Диск имеет черно-белые сектора и при повороте диска вместе с валом оптический датчик регистрирует их смену. Таким образом, зная какому углу поворота соответствует один сектор и подсчитывая количество сменяющих друг друга секторов, можно определить на какой угол повернется колесо.

Залог же прямолинейного движения шасси состоит в том, чтобы колеса вращались с одинаковой скоростью и, соотвественно, поворачивались на одинаковый угол. С помощью энкодеров это возможно контроллировать.

В остальном в основе конструкции робота все то же шасси, индикаторы и кнопка для его запуска.
 

Алгоритм

Очевидно, что после того, как робот собьет кегли, он должен остановиться. В то же время запускать его в кегли можно с разного расстояния. Поэтому целесообразно предусмотреть три режима движения робота на разные расстояния. Например, перемещение на 0,5 м, 1 м и 1,5 м. Эти же дистанциии будут соответствовать и разным уровням сложности игры.

Чем дальше запускается робот, тем сложнее сбить кегли.

Выбор этих режимов будет осуществляться с помощью кнопки выбора. По умолчанию включен режим №1, в котором робот перемещается на 0,5 м. О нем свидетельствует один горящий индикатор. Далее при однократном нажатии кнопки выбора робот переключится во второй режим (путь длиной 1м )— на это будет указывать другой светящийся индикатор. Ну и если нажать кнопку выбора еще раз, то включится режим №3 (путь 1,5 м), о чем будут информировать уже 2 одновременно светящихся индикатора.

После этого при нажатии кнопки запуска робот прямолинейно поедет на расстояние, соответствующее режиму. Прямолинейность движения будет обеспечиваться с помощью подсчета переключений энкодеров на правом и левом моторах.

Изначально известен путь, который должен пройти робот. Поэтому можно сразу посчитать количество переключений энкодеров, которое соответствует данному пути. Достаточно поделить общее расстояние на то, которое соответствует повороту вала мотор-редуктора на один сектор черно-белого диска. Теперь, зная сколько должно произойти переключений, можно подсчитывать переключения и вычитать их из общего количества. При этом регулярно надо сравнивать указанные количества для левого и правого колес, вычислять ошибку — разницу между данными количествами. И для того колеса, у которого переключения происходят быстрее, мотор-редуктор можно притормаживать, чтобы количества выравнивались.

Таким образом, постоянно контроллируя динамику переключений и изменяя скорости вращения моторов, мы достигаем приблизительного равенства углов поворотов колес и, как следствие, их средних скоростей на всей протяженности пути. А это, в свою очередь, позволяет добиться прямолинейного движения.

После того, как изначально посчитанное количество переключений, соответсвующее протяженности пути, будет уменьшено до нуля, робот остановится.
 

Сборка

В этом проекте придется немного пересобрать шасси, поскольку требуется установить платы энкодеров на моторы и одеть диски с секторами на валы мотор-редукторов, закрепить их.

Цель проекта — изучение принципа действия энкодера и получение навыков его использования в проектах.

 

1. Демонтаж конструкции предыдущего проекта
1.1 Отключение мотор-редуктора датчиков


1.2 Демонтаж фоторезисторов


2. Установка энкодеров

2.1 Снятие колес

 

2.2 Демонтаж мотор-редукторов


2.3 Монтаж дисков с секторами на мотор-редукторы


2.4 Крепление мотор-редукторов к раме


2.5 Крепление энкодеров к мотор-редукторам


3. Монтаж кнопки выбора режимов
3.1 Крепление к раме основания для кнопки

 

3.2 Подготовка модуля кнопки к установке

 

3.3 Крепление кнопки к основанию


4. Установка колес на валы мотор-редукторов

 

5. Подключение электронных модулей и загрузка программы в контроллер


Программы для загрузки в контроллер по данному проекту можно скачать в двух вариантах по ниже указанным ссылкам:
- для среды программирования "Студия Эвольвектор",
- для среды программирования Arduino IDE.

 

Проверка робота в работе

Поместите робота на удобную поверхность с большой площадью. Установите на определенном расстоянии от робота флажки, которые выполнят функцию кеглей. Выберите режим, прицельтесь и запустите роботав кегли.
 

 

Написать отзыв

Ваше Имя:


Ваш отзыв: Внимание: HTML не поддерживается! Используйте обычный текст.

Оценка: Плохо           Хорошо

Введите код, указанный на картинке: