Как сделать робота управляемого с пк

Обновлено: 04.07.2024

Роботизованная рука-манипулятор, интерфейс IBM PC и система голосового управления

Данный проект представляет собой многоуровневую модульную задачу. Первый этап проекта – сборка модуля роботизованной руки-манипулятора, поставляемой в виде набора деталей. Вторым этапом задачи будет сборка интерфейса IBM PC также из набора деталей. Наконец, третий этап задачи представляет собой создание модуля голосового управления.

Манипулятором робота можно управлять вручную с помощью ручного пульта управления, входящего в комплект набора. Рукой робота можно также управлять либо через собранный из набора интерфейс IBM PC, либо используя модуль голосового управления. Набор интерфейса IBM PC позволяет управлять и программировать действия робота через рабочий компьютер IBM PC. Устройство голосового управления позволит вам управлять рукой робота с помощью голосовых команд.

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

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


Рис. 15.1. Кинематическая схема движений и поворотов руки-робота

Рука изготовлена из легкого пластика. Большинство деталей, несущих основную нагрузку, также выполнены из пластика. Двигатели постоянного тока, использованные в конструкции руки, представляют собой миниатюрные высокооборотные двигатели с низким крутящим моментом. Для увеличения крутящего момента каждый мотор соединен с редуктором. Двигатели вместе с редукторами установлены внутри конструкции руки-манипулятора. Хотя редуктор увеличивает крутящий момент, рука робота не может поднять или нести достаточно тяжелые предметы. Рекомендуемый максимально допустимый вес при поднятии составляет 130 г.

Набор для изготовления руки робота и его компоненты представлены на рисунках 15.2 и 15.3.


Рис. 15.2. Набор для изготовления руки-робота


Рис. 15.3. Редуктор перед сборкой

Принцип управления двигателями

Для того чтобы понять принцип работы управления по проводам, посмотрим, как цифровой сигнал управляет работой отдельного двигателя постоянного тока. Для управления двигателем требуются два комплементарных транзистора. Один транзистор имеет проводимость PNP типа, другой – соответственно проводимость NPN типа. Каждый транзистор работает как электронный ключ, управляя движением тока, протекающего через двигатель постоянного тока. Направления движения тока, управляемые каждым из транзисторов, противоположны. Направление тока определяет направление вращения двигателя соответственно по часовой стрелке или против часовой стрелки. На рис. 15.4 приведена тестовая схема, которую вы можете собрать перед изготовлением интерфейса. Обратите внимание, что когда оба транзистора заперты, то двигатель выключен. В каждый момент времени должен быть включен только один транзистор. Если в какой-то момент оба транзистора случайно окажутся открытыми, то это приведет к короткому замыканию. Каждый двигатель управляется двумя транзисторами интерфейса, работающими аналогичным образом.


Рис. 15.4. Схема устройства проверки

Конструкция интерфейса для PC

Схема PC интерфейса приведена на рис. 15.5. В набор деталей PC интерфейса входит печатная плата, расположение деталей на которой показано на рис. 15.6.


Рис. 15.5. Принципиальная схема интерфейса РС


Рис. 15.6. Схема расположения деталей РС интерфейса

Прежде всего нужно определить сторону монтажа печатной платы. На стороне монтажа прочерчены белые линии, обозначающие резисторы, транзисторы, диоды, ИС и разъем DB25. Все детали вставляются в плату с монтажной стороны.

Общее указание: после пайки детали к проводникам печатной платы необходимо удалить излишне длинные выводы со стороны печати. Очень удобно следовать определенной последовательности при монтаже деталей. Сперва смонтируйте резисторы 100 кОм (цветная маркировка колец: коричневое, черное, желтое, золотое или серебряное), которые обозначены R1-R10. Затем смонтируйте 5 диодов D1-D5, убедившись, что черная полоска на диодах находится напротив разъема DB25, как это показано белыми линиями, нанесенными на монтажную сторону печатной платы. Затем смонтируйте резисторы 15 кОм (цветная маркировка, коричневый, зеленый, оранжевый, золотой или серебряный), обозначенные R11 и R13. В позиции R12 припаяйте к плате красный светодиод. Анод светодиода соответствует отверстию под R12, обозначенному знаком +. Затем смонтируйте 14– и 20-контактные панельки под ИС U1 и U2. Смонтируйте и впаяйте разъем DB25 уголкового типа. Не пытайтесь вставлять ножки разъема в плату с излишним усилием, здесь требуется исключительно точность. При необходимости осторожно покачайте разъем, стараясь не погнуть ножки выводов. Закрепите движковый переключатель и регулятор напряжения типа 7805. Отрежьте четыре куска провода необходимой длины и припаяйте к верхней части переключателя. Придерживайтесь расположения проводов, как показано на рисунке. Вставьте и впаяйте транзисторы TIP 120 и TIP 125. Наконец, впаяйте восьмиконтактный цокольный разъем и соединительный 75 миллиметровый кабель. Цоколь монтируется так, что наиболее длинные выводы смотрят вверх. Вставьте две ИС – 74LS373 и 74LS164 – в соответствующие панельки. Убедитесь, что положение ключа ИС на ее крышке совпадает с ключом, помеченным белыми линиями на печатной плате. Вы могли заметить, что на плате остались места под дополнительные детали. Это место предназначено для сетевого адаптера. На рис. 15.7 показана фотография готового интерфейса со стороны монтажа.


Рис. 15.7. РС интерфейс в сборе. Вид сверху

Принцип работы интерфейса

Рука-манипулятор имеет пять двигателей постоянного тока. Соответственно нам потребуются 10 шин входа/выхода для управления каждым двигателем, включая направление вращения. Параллельный (принтерный) порт IBM PC и совместимых машин содержит только восемь шин ввода/вывода. Для увеличения числа шин управления в интерфейсе руки робота используется ИС 74LS164, которая является преобразователем последовательного кода в параллельный (SIPO). При использовании всего двух шин параллельного порта D0 и D1, по которым посылается последовательный код в ИС, мы можем получить восемь дополнительных шин ввода/вывода. Как уже говорилось, можно создать восемь шин ввода/вывода, но в данном интерфейсе используются пять из них.

Когда последовательный код поступает на вход ИС 74LS164, на выходе ИС появляется соответствующий параллельный код. Если бы выходы ИС 74LS164 были непосредственно подключены к входам управляющих транзисторов, то отдельные функции руки-манипулятора включались и выключались бы в такт посылке последовательного кода. Очевидно, что такая ситуация является недопустимой. Чтобы избежать этого, в схему интерфейса введена вторая ИС 74LS373 – управляемый восьмиканальный электронный ключ.

ИС 74LS373 восьмиканальный ключ имеет восемь входных и восемь выходных шин. Двоичная информация, присутствующая на входных шинах передается на соответствующие выходы ИС только в том случае, если на ИС подан разрешающий сигнал. После выключения разрешающего сигнала текущее состояние выходных шин сохраняется (запоминается). В этом состоянии сигналы на входе ИС не оказывают никакого действия на состояние выходных шин.

После передачи последовательного пакета информации в ИС 74LS164 с вывода D2 параллельного порта подается разрешающий сигнал на ИС 74LS373. Это позволяет передать информацию уже в параллельном коде с входа ИС 74LS174 на ее выходные шины. Состоянием выходных шин управляются соответственно транзисторы TIP 120, которые, в свою очередь, управляют функциями руки-манипулятора. Процесс повторяется при подаче каждой новой команды на руку-манипулятор. Шины параллельного порта D3-D7 управляют непосредственно транзисторами TIP 125.

Подключение интерфейса к руке-манипулятору

Питание роботизованной руки-манипулятора осуществляется от источника питания 6 В, состоящего из четырех D-элементов, расположенных в основании конструкции. Интерфейс PC питается также от этого источника 6 В. Источник питания является биполярным и выдает напряжения ±3 В. Питание на интерфейс подается через восьмиконтактный разъем Molex, присоединенный к основанию манипулятора.

Присоедините интерфейс к руке-манипулятору при помощи восьмижильного кабеля Molex длиной 75 мм. Кабель Molex присоединяется к разъему, расположенному в основании манипулятора (см. рис. 15.8). Проверьте правильность и надежность вставки разъема. Для соединения платы интерфейса с компьютером используется кабель типа DB25 длиной 180 см, имеющийся в наборе. Один конец кабеля присоединяется к порту принтера. Другой конец соединяется с разъемом DB25 на плате интерфейса.


Рис. 15.8. Соединение РС интерфейса с рукой-роботом

В большинстве случаев к порту принтера штатно подключен принтер. Чтобы не заниматься присоединением и отключением разъемов каждый раз, когда вы хотите использовать манипулятор, полезно приобрести двухпозиционный блок переключателя шин принтеров A/B (DB25). Присоедините разъем интерфейса манипулятора к входу А, а принтер – к входу В. Теперь вы можете использовать переключатель для соединения компьютера либо с принтером, либо с интерфейсом.

Установка программы под Windows 95

Работа с программой под Windows 95

Соедините интерфейс с портом принтера компьютера при помощи кабеля DB 25 длиной 180 см. Соедините интерфейс с основанием руки-манипулятора. До определенного времени держите интерфейс в выключенном состоянии. Если в это время включить интерфейс, то сохранившаяся в порту принтера информация может вызвать движения руки-манипулятора.


Рис. 15.9. Скриншот программы РС интерфейса под Windows

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

Ограничения области применения

Поиск исходного положения

Можно усовершенствовать работу устройства, добавив в него схему обратной связи, которая отслеживает положение руки-манипулятора. Эта информация может быть введена в компьютер, что позволит определить абсолютное положение манипулятора. С такой системой позиционной обратной связи возможна установка положения руки-манипулятора в одну и ту же точку в начале выполнения каждой последовательности команд, записанных в script-файле.

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

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

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

Система ручного управления интерфейсом


Рис. 15.10. Подключение ручного управления

Программа DOS управления с клавиатуры

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


Голосовое управление рукой-манипулятором

B голосовом управлении рукой-манипулятором используется набор распознавания речи (УРР), который был описан в гл. 7. В этой главе мы изготовим интерфейс, связывающий УРР с рукой-манипулятором. Этот интерфейс также предлагается в виде набора компанией Images SI, Inc.

Схема интерфейса для УРР показана на рис. 15.11. В интерфейсе использован микроконтроллер 16F84. Программа для микроконтроллера выглядит следующим образом:

‘Программа интерфейса УРР

Symbol PortA = 5

Symbol TRISA = 133

Symbol PortB = 6

Symbol TRISB = 134

If bit4 = 0 then trigger ‘Если запись в триггер разрешена, читать схе

Goto start ‘Повторение

pause 500 ‘Ожидание 0,5 с

Peek PortB, B0 ‘Чтение кода BCD

If bit5 = 1 then send ‘Выходной код

goto start ‘Повторение

peek PortA, b0 ‘Чтение порта А

if bit4 = 1 then eleven ‘Число есть 11?

poke PortB, b0 ‘Выходной код

goto start ‘Повторение

if bit0 = 0 then ten

goto start ‘Повторение

goto start ‘Повторение


Рис. 15.11. Схема контроллера УРР для руки-робота

Программирование интерфейса УРР

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


Таблица 15.1

Итак, в результате родилось приложение, которое позволяет управлять роботом на танковом шасси абсолютно так же, как в какой-нибудь Need For Speed, с плавным разгоном, поддержанием скорости, подруливанием, и автоматическим плавным торможением при отпускании.

Расскажу для начала, как работать с интерфейсом программы, а потом опишу протокол общения с роботом.

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


Стартовый байт — 0x0F, подразумевается, что скорости и направления не могут быть равны этому значению.
Скорость левого — от 0* до 255.
Направление левого — 0 или 1.
Скорость правого — от 0* до 255.
Направление правого — 0 или 1.
Финишный байт — 0x0F

*Скорости теоретически задаются от 0 до 255, но, как я писал выше, функция PWM deadzone приводит к тому, что значения ниже некоторой планки никогда не придут. Я принудительно ограничил в программе поле ввода на уровне 90, поэтому в качестве стартового и финального байтов смело использую 0x0F и 0x0E. Костыль, велосипед, но уж как сделал =)

На этом пока всё.
В дальнейшем планирую еще добавить кручение сервомашинок при движениях мышью.
Критика и пожелания приветствуются. =)


Робот ALTO, которого можно собрать самому

Робот с искусственным интеллектом своими руками

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

Схема для создания корпуса робота из бумаги и исходный код программы для его работы можно найти на сайте Experiments with Google (кнопка Get the code). Но это еще не все, потому что для создания робота нужна электроника, которую нужно купить:

  • Coral USB Accelerator — это устройство, которое включает в себя процессор Edge TPU. Он нужен для того, чтобы робот обладал способностью к машинному обучению. Его можно купить на Aliexpress;
  • Raspberry Pi 4 — небольшой компьютер размером с банковскую карту. К нему можно будет подключить камеру, динамики и прочее оборудование, нужное для робота. Он тоже есть на Aliexpress.


Coral USB Accelerator и Raspberry Pi 4

Знаете ли вы, что роботов можно создавать даже изо льда? Посмотреть на такого робота можно по этой ссылке.

Программирование робота

Для обучения робота нужно будет использовать платформу TensorFlow, которая включает в себя инструменты для тренировки нейронных сетей (можно сказать, для создания искусственного интеллекта). Звучит сложно, да и цена устройства Coral USB Accelerator и компьютера Raspberry Pi 4 может озадачить. Но ведь речь идет о достаточно серьезном устройстве, в ходе создания которого человек получает навыки, которые могут пригодиться ему в высокотехнологичном будущем. Знание английского тоже обязательно, потому что инструкция по сборке робота ALTO и его настройке выложены на GitHub и не переведены на русский.


Робот ALTO может распознавать предметы и многое другое — главное, научить его этому

Представители Google считают, что робота можно научить выполнению самых разных задач. Самая простая из них — распознавание предметов. Если перед камерой робота поставить яблоко, он может поднять левую руку. А если поставить банан — правую. Это только самые банальные примеры, а на деле, полученные в ходе сборки робота знания, должны помочь в создании более навороченных устройств. Глядишь, кто-нибудь сможет даже разработать собственный робот-пылесос или создать охранную систему с распознаванием лиц.

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

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

Если вы изучали уроки, то вы выбрали приводы, электронику, датчики и т.д. И кто-то, наверное, смог собрать робота, которого придумал ранее. Но без программирования, робот является очень красивый и дорогим макетом, не умеющим делать ничего.

программирование роботов

программирование роботов

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

Какой язык выбрать?

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

Ассемблер

Это язык низкого уровня максимально приближенный к машинному коду. Программирование роботов очень сильно зависит от архитектуры процессора и достаточно трудоемко в использовании.

ассемблер

ассемблер

Ассемблер нужно использовать только тогда, когда вам необходим абсолютный контроль над вашим кодом на уровне инструкций;

Basic

Один из первых широко используемых языков программирования. Он по-прежнему используется некоторыми микроконтроллерами ( Basic Micro , BasicX , Parallax ) для программирования учебных роботов;

Один из самых популярных языков. Язык Си обеспечивает высокоуровневую функциональность, сохраняя при этом хороший контроль низкого уровня;

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

Запатентованный язык Microsoft используется для разработки приложений в Visual Studio;

Программирование для контроллеров Arduino

Используется вариант C ++. Программирование роботов на нём включает некоторые упрощения для того, чтобы сделать программирование не таким сложным;

Python

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

На уроке 4 вы выбрали микроконтроллер на основе необходимых вам функций (количество операций ввода-вывода, специальные функции и т. д.). Часто микроконтроллер предназначен для программирования на определенном языке.

  • Микроконтроллеры Arduino используют программное обеспечение Arduino и перепрограммируются в процессе обработки.
  • Базовые микроконтроллеры Stamp используют PBasic.
  • Микроконтроллеры Basic Atom используют Basic Micro.
  • Javelin Stamp из Parallax запрограммирован на Java.

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

Если же вместо этого вы выбрали микроконтроллер у небольшого, малоизвестного производителя (например, потому что у него было много функций, которые, по вашему мнению, были бы полезны для вашего проекта), то важно посмотреть, на каком языке должен быть запрограммирован контроллер и какие средства разработки доступны (обычно от производителя контроллеров).

Программирование роботов — начало.

hello world

hello world

Это одна из простейших программ, которые могут быть сделаны на компьютере.

В случае с микроконтроллером другой очень простой программой, которую вы можете сделать — это переключение вывода IO. Присоединение светодиода к выходному контакту. Затем установление контакта I / O в положение ON и OFF приведет к миганию светодиода. При помощи контактов I / O можно запрограммировать много сложных функций. Например, включение многосегментных светодиодов для отображения текста и цифр, управления электромагнитными реле, сервоприводами и т.д.

Шаг 1.

Убедитесь, что у вас есть все компоненты, необходимые для программирования микроконтроллера. Не все микроконтроллеры поставляются со всем необходимым для их программирования. Большинство микроконтроллеров необходимо подключить к компьютеру через USB-штекер.

USB штекер

USB штекер

Если ваш микроконтроллер не оснащен разъемом USB, возможно вам понадобится отдельный USB-адаптер для последовательного интерфейса. Этот адаптер нужно правильно подключить. Многие микроконтроллеры программируются либо через порт RS-232, либо через USB. Часто они включают в себя разъем USB на плате. Разъем USB используется не только для двусторонней связи, но и для питания платы микроконтроллера.

Шаг 2.

Подключите микроконтроллер к компьютеру и проверьте, к какому COM-порту он подключен.

com порт

com порт

Шаг 3.

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

Не нужно изобретать велосипед. Большинство производителей предоставляют некоторый код (или псевдокод), объясняющий, как заставить контроллер работать. Пример кода может быть на языке программирования, который вы не знаете, но не стоит отчаиваться. Просто выполните поиск в Интернете, чтобы узнать, создали ли другие люди необходимый код.

  • Изучите руководства по продуктам и руководство пользователя.
  • Посетите форум производителя.
  • Проверьте публикации в Интернете для продукта и кода.
  • Прочтите руководство, чтобы понять, как написать код.

Полезные советы.

Создавайте управляемые куски функционального кода.

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

Документируйте все в коде, используя комментарии.

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

Сохраняйте разные версии кода.

Не всегда перезаписывайте один и тот же файл. Если вы обнаружите, что ваши 200+ строк кода не будут компилироваться, не стоит останавливаться только на этой версии кода. Вместо этого вы можете вернуться к ранее сохраненной (и функциональной) версии и добавить или изменить ее по мере необходимости. Код не занимает много места на жестком диске. Поэтому вы можете спокойно сохранять несколько копий.

При отладке робота поднимите его.

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

Если код делает что-то, что кажется неработоспособным.

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

Практический пример

Для нашего проекта был выбран набор Lego Mindstorms EV3. Для него есть специальная графическая среда программирования EV3 Programmer. Её можно бесплатно скачать с официального сайта Лего и сразу приступать к программированию робота.

ev3 programmer

программирование Lego EV3

Программирование происходит при помощи пиктограмм и является доступным для понимания.

Читайте также: