Одна из задач создания робота – его умение ориентирования в пространстве и умение выбирать верное или оптимальное направление движения. Такую задачу мы реализовали на платформе машинки, умеющей проходить лабиринт переменного направления, управление которой построено на контроллере Arduino Uno.
Компоненты, которые мы использовали:
- Ардуино Уно — купить ардуино уно — можно здесь
- Двигатели ардуино – купить двигатель ардуино — можно здесь
- Провода (папа-папа, мама-мама, папа-мама)
- Двигатель SG90
- Дальномер HC SR04
- Приемник инфракрасного сигнала – датчик TL1838 (38 кГц)
- Motor Shield L293D
- Инфракрасный (ИК) датчик расстояния (приближения) YL-63 – купить датчик — можно здесь
- Аккумуляторы Li-ion 18650
- Преобразователь напряжения LM 25775
- Светодиод
Ардуино Уно
Есть множество вариантов программ, плат, но мы выбрали Ардуино UNO, эта плата наиболее популярна для подобных конструкций. Ее функциональная достаточность (по уровням сигналов, количеству цифровых и аналоговых входов/выходов и т.д.) для небольших задач, вроде нашей. Описание Ардуино UNO можно посмотреть здесь.
Конструкция платформы, привод, питание, и управление
Платформа
Двухосная платформа собственной разработки, принципиально ничем не отличается от подобных конструкций по своей ходовой конфигурации. Вся остальная компоновка оригинальная из учета используемого оборудования и задач управления — рисунок 1.

Рис.1 Машина – робот для движения в лабиринте
На платформе установлены датчики, оценивающие наличие препятствия на пути движения (ультразвуковой дальномер HC SR04) и по бокам от машины (датчики приближения, ИК-датчики YL-63). Кроме того, на платформе имеется преобразователь напряжения LM 25775, приемник инфракрасного сигнала – датчик TL1838 и мотор-шилд L293D.
Описание системы управления платформой
Платформа продвигается по лабиринту, осматривая путь перед собой или справа/слева — при наличии препятствия в прямом направлении, определяемого с помощью ультразвукового датчика расстояния HCSR04. При расстоянии менее заданного в программе, дается команда остановки движения, «дальномер» поворачивается вправо, влево, система управления определяет «свободное» направление и дает команду на поворот платформы и движения в этом направлении. При этом «Отлипание» от стен обеспечивается по сигналам инфракрасных датчиков препятствия YL-63 (FC-51), которые постоянно контролируют возможность «прилипания» машинки к стенке и контроллер формирует соответствующую команду коррекции вращения правой и левой стороне колес.
Дополнительно к автоматизированному управлению прохождения алгоритма предусмотрен вариант, когда система управления не «находит» возможного направления движения, происходит «аварийная» остановка и передача в ручное управление от пульта оператора – по инфракрасному каналу. Возврат в режим автоматического управления включается с пульта, при необходимости.
Алгоритм управления платформой представлен на рисунке 2.

Рис.2. Блок – схема алгоритма управления машинкой для лабиринта
Имеется «небольшая изюменка» в программе управления. Очень важным фактором координации движения является скорость реакции на «возмущение» (например, препятствие), а также скорость выполнения изменений (например, вращения колес при корректировании направления движения). Вращение колес зависят от степени заряженности батарей и для приспосабливания к этому изменению (адаптации) в системе управления предусмотрено измерение напряжения батарей и соответственное изменение, например длительности воздействи при корректировании движения колес. Само это изменение определено экспериментально и запрограммировано в виде математической модели (описываемой полиномом второй степени):
Изменение длительности [мс] = f(напряжения батарей, [мс]).
Двигатели, питание двигателей
В качестве приводоов применены двигатели с редукторами, представленные на рисунке 3.
Рисунок 3. Примерная схема привода колес
Как известно, у данного, дешевого варианта двигателей есть недостаток: у них разные механические и электрические потери и, как следствие, может существенно различаться частота вращения. Этот недостаток также нивелируется настройкой в программе с учетом коррекции по напряжению батарей.
Схема управления машинкой для прохождения лабиринта
Схема управления машинкой для прохождения лабиринта представлена здесь.

Рис.4 Схема управления машинкой для прохождения лабиринта
Программа управления создана на языке, применяемом в Ардуино Уно, который очень похож на язык «C».
Сама программа – скетч написана в редакторе программы IDE Ардуино. Скетч представлен здесь. Загрузка исполняемого файла в Ардуино Уно выполняется из IDE. Подробнее о работе с программой IDE можно посмотреть здесь.
Испытание машинки с прохождением лабиринта представлено в небольшом клипе.
Удачных Вам конструкций.
