В статье показано создание робота, которые ездит по линиям и может проходить лабиринты, после изучения лабиринта он может пройти его кратчайшим путём. Автор долго создавал этот проект, удача настигла его с третьего раза.
Демонстрация работы машины:
Материалы и инструменты:
— Arduino RBBB
— Микродвигатели 2 шт
— Кронштейны для двигателей 2 шт
— Колёса 2 шт
— Шариковое колесо
— Датчик отражения аналоговый
— Гайки с болтами по 2 шт
— Драйвер двигателя
— Держатель для батарей 4 шт ААА
— Батарейки (аккумуляторы) ААА 4 шт
— Корпус
— Гайки, болты, шайбы
— Соединительные провода
— Припой
— Плоскогубцы
— Паяльник
— Отвёртка
Шаг первый. Теория.
Автору нужен был робот, который сам будет находить выход из лабиринта, после чего сможет оптимизировать обратный путь. При создании машины для лабиринтов руководствовались методом левой руки. Чтоб было понятнее следует представить что вы оказались в лабиринте и всегда держите левую руку на стене. После прохождения определённого пути это поможет выйти вам из лабиринта если он не замкнут. Робот может работать только с незамкнутыми лабиринтами.
Принципы работы способа левой руки довольно прост:
— Если есть возможность повернуть налево, поверните налево.
— Если есть возможность двигаться прямо, двигайтесь прямо.
— Если есть возможность повернуть направо, поверните направо.
— Если вы зашли в тупик, развернитесь на 180 градусов.
Также роботу нужно принимать решения на перекрёстке, если же на повороте он не свернёт, тогда поедет прямо. Для построения лучшего маршрута обратного пути, каждое решение записывается в память.
L = левый поворот
R= правый поворот
S= пропустить поворот
B= развернутся на 180 градусов
Ниже показан этот метод в действии на примере простого лабиринта. Робот прошёл дистанцию путём команд LBLLBSR.
Путь вышел довольно большой, его требуется превратить в оптимальный SRR. Для этого определяется где робот повернул не туда. Везде где использована команда «В» путь будет неверным, так как робот был в тупике, поэтому «В» следует заменить на что-то другое. Первым неверным движением было LBL, робот свернул и развернулся, в то время когда требовалось просто следовать прямо LBL = S. Таким образом, выстраивается идеальный путь LBL = S, LBS = R. На основе таких замен робот выстраивает для себя идеально короткий путь.
Шаг второй. Шасси робота.
Основой для шасси робота стал акрил толщиной 0.8 мм, резка производилась лазером согласно чертежу. В архиве под статьёй будет файл чертежа из AutoCAD. Использовать такой материал было необязательно, но автор взял то что было в наличии.
В нижней части сделаны отверстия для крепления двигателей, платы, колёс и датчиков. Верхняя часть имеет большое отверстие для проводов.
Шаг третий. Установка колёс.
Оба двигателя автор прикрепил с помощью болтов. Далее, на их ось просто одел колёса, совместив вал с отверстием колеса.
Шаг четвёртый. Arduino.
На этом этапе автор сначала следовал инструкциям по сборке Arduino RBBB. Далее, он отрезал часть платы для уменьшения её размеров. Ножницами по металлу был отрезан разъём питания и стабилизатор. После чего, к левой стороне платы на контакты от 5В до А0 припаяли 9-контактный разъем, для подключения к нему датчика. К правой стороне платы на контакты от D5 до D8 был припаян 4-контактный разъём, к нему подключат контроллер двигателя. Для подачи питания 2-контактный разъем припаяли к 5В и GND.
Шаг пятый. Контроллер двигателя.
Автор сам разработал печатную плату для этого шага, схема в формате Eagle прикреплена в архиве под статьёй. Первый двигатель подключили к контактам M1-A и M1-B, второй к M2 и M2-B. Первый вход первого двигателя In 1A подключили к 7 выводу Arduino. In 1B был подключён к выводу 6 Arduino. К первому входу второго двигателя In 2A подключён к 5 выводу Arduino. Контакт In 2B подключается к 8 выводу Arduino. Питание и земля подключили к питанию и земле Arduino.
Шаг шестой. Датчики.
Данный элемент продается в виде платы из датчиков, изначально их восемь штук, два крайних были удалены автором. На плату припаяли разъем из 9 контактов, к ним подключат провод ведущий к Arduino. Датчик обнаруживает белый и чёрный участок лабиринта с помощью отражения от поверхности.
Шаг седьмой. Верхняя часть.
Шасси с верхней частью робота соединили болтами и стойками. Аккумулятор был закреплён на верхней части липучкой. Провода от него проложили через подготовленное отверстие. При креплении автор решил не использовать винты, а оставить аккумулятор на липучке, чтоб можно было проще заменять батарейки. С помощью выключателя на корпусе для батарей была произведена проверка работоспособности.
Шаг восьмой. Установка датчиков.
К нижней части машины болтами прикрепили датчики. Вывод GND соединили с GND Arduino. Далее, вывод Vcc соединили с 5В Arduino. К АЦП 5-0 Arduino подключили контакты аналоговых датчиков 6-1.
Шаг девятый. Питание.
К Arduino просто припаяли провода от аккумулятора. Включение и выключение робота будет происходить выключателем на аккумуляторе, поэтому было решено использовать пайку. На этом сборка робота завершена.
Шаг десятый. Программная часть.
Программа имеет несколько функций отвечающих за алгоритм работы. Функция «левой руки» получает показания от датчиков и управляет роботом по этим правилам. Функция поворотов включается до того как робот заметит чёрную линию, заметив, её он едет прямо. Также встроена функция оптимизации пути. Программу можно скачать под статьёй в архиве.
Видео робота:
maze-solving-robot.rar
[28.67 Kb] (скачиваний: 586)
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Источник: