Создание самоуправляемого робота - часть первая

Эта статья является первой из серии, в которой мы научимся создавать автономного самоуправляемого робота без предварительного опыта программирования с использованием языка визуального программирования под названием XOD. Вы можете купить робота на Amazon и иметь все необходимое для создания собственного робота примерно за 35 долларов.

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

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

Цель этой первой части - научить робота двум командам: запускать и останавливать.

· Пуск - установите оба двигателя на 1 (на полной скорости) на 2 секунды.

· Стоп - установите оба двигателя на 0 (Выкл.) на 2 секунды.

Схема тестирования

В этой конкретной схеме используется Adafruit Motor Shield в сочетании с внешним источником питания и 2 двигателями постоянного тока. Один двигатель подключен к левому колесу, а другой - к правому.

Обзор структуры программы

Каждый проект в XOD начинается с одного патча под названием main. Здесь будет написана основная последовательность действий программы. В main мы создадим несколько узлов состояния, «вперед» и «стоп». Патч main будет последовательно проходить через каждое состояние, управляя двигателями. В каждом состоянии (вперед и стоп) мы разработаем логику, которая отправляет значения каждому двигателю в течение заданного периода времени.

Добавление состояний

Начните с создания нового проекта в XOD. Обратите внимание, что у вас уже должен быть основной патч в рабочей области. Начнем работу с создания двух состояний: «вперед» и «стоп».

Внутри основного патча создайте новый узел, выбрав «Файл -› Новый патч »(или Ctrl + N). Назовите первый патч «вперед» и второй патч «стоп».

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

Одно замечание: при работе с двигателями в нескольких состояниях необходимо убедиться, что мы даем этим двигателям короткий период времени для инициализации. Чтобы это произошло, мы воспользуемся узлом defer. Теперь мы можем продолжить и настроить поток нашей программы.

Загрузка → Отложить → Вперед → Стоп

Выберите узел xod / core / boot, чтобы начать процесс. Затем добавьте узел xod / core / defer-pulse, чтобы позволить двигателям инициализироваться, и, наконец, добавьте наши новые патчи состояния вперед и стоп. Обратите внимание, что на данный момент нет возможности подключить наши недавно созданные патчи вперед и стоп. Мы спроектируем эти входы и выходы при настройке состояний на следующем шаге.

Разработка государственных патчей

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

Откройте свой прямой патч и добавьте в состояние xod / patch-node / input-pulse и xod / patch-node / output-pulse. Думайте о вводе как о «начале», о выходе как о «остановке». Вы можете называть импульсы как хотите, но в XOD принято называть входной импульс «SET» и выходной импульс «DONE». Вы можете изменить название импульсов, щелкнув зеленый флаг в инспекторе слева внизу.

Добавление библиотек

Эта конкретная установка использует библиотеку XOD для управления двигателями. Библиотека, которая нам нужна для этого проекта, называется nkrkv / af-motor.

Установка библиотеки проста. Перейдите в xod.io/libs/ и скопируйте имя библиотеки. Затем нажмите Файл -› Добавить библиотеку , вставьте имя библиотеки и нажмите, чтобы установить.

Управление двигателями

Цель состояния «вперед» - включить мотор на две секунды. Для этого мы воспользуемся комбинацией нескольких новых узлов. Настройте патч, чтобы он выглядел так:

Патч вводится с помощью импульса SET. Отсюда xod / core / delay устанавливает для вывода значение true в течение заданного периода времени. Установите значение T на 2 секунды. xod / core / gate-number позволяет передавать номер через шлюз, когда он открыт (установлено значение true). Мы хотим, чтобы это число было 1, поскольку мы хотим, чтобы оба двигателя были полностью включены. Мы будем управлять двигателями с помощью узла nkrkv / af-motor / dc-motors из библиотеки, которую мы только что добавили. Подключите цифру от ворот ко входам M1 и M2. Обратите внимание, что мы используем двигатели 1 и 2 на основе принципиальной схемы для этого проекта. Наконец, нам нужно добавить еще один узел; xod / core / defer-pulse проверяет, закрыты ли ворота двигателя, прежде чем перейти к DONE.

Копирование в узел «стоп».

Внутри прямого патча выберите все узлы, перетащив рамку вокруг них (или Ctrl + A). Скопируйте узлы, выбрав Правка - ›Копировать (или Ctrl + C). Перейдите к стоп-патчу и вставьте, выбрав Правка - ›Вставить (или Ctrl + V). Единственная разница будет заключаться в номере, привязанном к воротам; в инспекторе измените номер ворот на ноль.

Связывание состояний в Main

Обратите внимание, что теперь в основном патче вы должны увидеть фиолетовые соединения «SET» и «DONE» вверху и внизу каждого состояния. Состояния ждут начала импульса.

Подключите состояния и загрузите проект на свой Arduino.

Теперь вы увидите, что оба двигателя включаются на полную скорость на 2 секунды, а затем выключаются!