Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Рука робота, управляемая через Ethernet

Компоненты и расходные материалы

Arduino 101
× 1
WIZnet WIZ750SR
× 1
Android-устройство
× 1
Рука робота
Вы можете использовать любую другую руку робота, но вам может потребоваться изменить код, если ваша рука робота слишком разные
× 1
Metal Gear Micro Servo
× 4

Приложения и онлайн-сервисы

IDE Arduino
Инструмент настройки WIZnet S2E
Android Studio

Об этом проекте

Введение

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

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

Рука робота

Вы можете купить робот-манипулятор примерно от 20 $. Поэкспериментировал, хотел начать с более дешевой. Позже я построю или куплю более серьезный робот-манипулятор, а пока я буду работать над этим роботом-манипулятором за 25 долларов от Banggood.

Это роботизированная рука 4DoF (Degrees of Freedom), в которой 3 сервопривода используются для перемещения, а один - для эффектора (в проекте я назвал его захватом). Это означает, что захват можно перемещать в любое положение в определенной области, но его углы не могут быть изменены. Это существенное ограничение, но пока это нормально и по-прежнему хорошо для многих вещей.

В комплект DIY входят 4 сервопривода, так что на самом деле вы получаете все компоненты для сборки манипулятора робота, кроме контроллера. Эти сервоприводы неплохие, но я предпочел эти:

=/ m>

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

Детали робота были упакованы в 4 пластиковых листа. Вы должны удалить детали из этих листов.

Комплект манипулятора робота состоит из нескольких частей. Рекомендую посмотреть следующее видео. На этом видео русский парень строит такой же робот-манипулятор. Строительная часть начинается в 7:43.

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

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

После постройки у вас будет собственная рука-робот.

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

Мозг

Хорошо, рука робота готова, но, скорее всего, вы захотите как-то ею управлять. Для этого мне понадобился микроконтроллер, и для этой работы я выбрал свой Arduino 101.

Это единственная официальная плата Arduino, в которой используется микроконтроллер Intel (Intel Curie). Имеет встроенный гироскоп и акселерометр. У него также есть Bluetooth, поэтому я могу управлять роботом через BLE в будущем. Еще одна очень полезная функция этой платы - это то, как работает последовательная связь. В отличие от большинства Arduinos, последовательный порт USB и UART на контактах 1 и 0 (TX и RX) не совпадают. У этого есть свои преимущества:мне не нужно отключать какие-либо другие коммуникационные цепи от контактов 0 и 1, когда я перепрограммирую Arduino. Это также полезно для отладки.

Если вы хотите использовать последовательный порт USB-порта, вам нужно использовать «Serial», а если вы хотите использовать контакты GPIO0 и GPIO1, тогда у вас есть «Serial1»

Arduino 101 имеет 4 GPIO с поддержкой ШИМ (GPIO3, GPIO5, GPIO6 и GPIO9), и я использовал их все для управления сервоприводами.

Общение

Моей рукой-роботом можно управлять через последовательный порт (а именно Serial1). Для этой цели я использовал свой новейший коммуникационный модуль WIZ750SR.

Это небольшой модуль Ethernet с микроконтроллером Cortex-M0. По своей базовой функциональности это модуль Serial to Ethernet, но вы можете легко перепрограммировать модуль в соответствии со своими потребностями. Вы можете превратить эту плату в плату I2C-Ethernet, если хотите.

Очень интересная функция - встроенный TCP-сервер (или клиент). Используя TCP-сервер, вы можете управлять Arduino удаленно, как если бы вы делали это через последовательный порт USB, но из любой точки мира! Со стороны Ардуино он полностью прозрачный. Чтобы использовать этот модуль, вам не нужно добавлять дополнительный код в свой скетч.

У меня также есть оценочная плата WIZ750SR-TTL-EVB. Я мог бы включить WIZ750SR и иметь порт USB для отладки, но я не использовал его, кроме некоторых ранних экспериментов.

И Arduino 101, и WIZ750SR используют 3,3 В, поэтому мне не пришлось использовать сдвиг уровня для контактов TX и RX. Arduino также питает модуль Ethernet от источника питания. Схема очень проста, и вы можете найти ее в разделе «Схемы» этого проекта. Сервоприводы имеют собственный источник питания 5 В.

Настройка модуля

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

Их документация великолепна, но у меня есть полезная информация, и у меня были (решенные) проблемы, которыми стоит поделиться.

Во-первых, вы можете запитать плату от USB-порта оценочной платы, но, кроме того, этот порт используется в основном для отладки и прошивки. Я считаю, что вы не можете связаться с TCP-сервером WIZ750SR через USB-порт, но вы получите отладочную информацию, если подключитесь к этому COM-порту. Вначале это вызвало у меня некоторое замешательство, так как я не знал, чего ожидать.

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

Моя самая большая проблема возникла в этот момент, когда я попытался найти устройство в Configuration Tool. Сначала это сработало прекрасно, но потом у меня не было времени, поэтому я остановился на этом. Через две недели я попытался сделать это снова, но он больше не мог найти плату под несколькими ОС и компьютерами в нескольких сетях.

Я сделал перепрошивку через порт USB отладки оценочной платы с последней прошивкой, и она сработала. Мой компьютер с Windows по-прежнему не мог его найти, но версия Python под Ubuntu могла. Я не уверен, в чем была проблема, но эти шаги, наконец, решили мою проблему. После успешной настройки WIZ750SR мой ПК с Windows также смог найти его снова, поэтому я продолжил работу.

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

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

  nc [tcp_server_ip] [tcp_server_port]  

После этого вы можете напрямую отправлять и получать данные с WIZ750SR. Я много использовал этот инструмент.

Переход от А к Б

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

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

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

Я сделал это, создав расчет пути к системе и вставив задержку. Когда вы отправляете новые углы сочленения для манипулятора робота, вы должны предоставить дополнительный параметр:скорость (mDelay). По сути, вы сообщаете контроллеру манипулятора робота минимальное время шага цикла. Калькулятор пути вычислит необязательный размер шага для каждого сервопривода позиционирования. Это означает, что все сервоприводы достигнут своей цели примерно в одно и то же время, а скорость зависит от задержки. В результате каждый раз получается очень красивое и плавное линейное движение.

Эффектор работает иначе. По сути, он может иметь только открытое или закрытое (с 3 разными уровнями закрытой силы) состояние, без плавного перехода. Очевидно, вы захотите схватить объект как можно скорее, при этом перемещение должно быть плавным и приятным.

В настоящее время в этой системе есть 2 типа команд. Вот пример для них обоих:

  • G 1 -> Слегка сжимая захват. 0 означает открытый
  • A 10 130 120 110 -> Перемещение манипулятора робота с шагом 10 мс, углом верхнего сочленения 130º, углом нижнего сочленения 120º и углом вращения основания 110º.

Android-приложение для дистанционного управления

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

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

После подключения к манипулятору робота вы попадете на экран настройки. Он состоит из 3 страниц. Первый - Run (подробнее об этом позже), второй - Init, а третий - Loop. Init и Loop в основном одинаковы, их единственная разница в том, где они сохраняют позицию.

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

Если вы измените и состояние захвата, и положение манипулятора робота, это будет сохранено как две разные команды. Сначала команда захвата, а затем команда положения.

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

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

Первая строка в разделе «Настроить» используется в качестве визуальной обратной связи для тестирования. Левая часть показывает вам последнее положение цели для манипулятора робота (S - отправлено), а правое поле - его текущее положение (R - получено). Приложение отправит новую позицию цели в манипулятор, как только цель и текущая позиция совпадут.

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

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

Если вы хотите построить похожего робота, вы можете найти как код Arduino, так и приложение Robot Arm Controller в сегменте кода этого проекта.

Результаты

Я использовал команды init и loop, и это позволяло мне выполнять некоторые умеренно сложные задачи. Вот видео о том, как моя рука робота устанавливает несколько резиновых уток (инициализация), а затем начинает перемещать их одну за другой вокруг себя, навсегда (цикл).

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

Заключение

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

Arduino 101 отлично подходит для этой цели. Единственное ограничение платы - это только 4 GPIO с поддержкой ШИМ. Если я построю новый манипулятор с большей степенью свободы, это может стать проблемой в будущем, но отдельный последовательный порт USB и последовательный порт GPIO очень полезны во время разработки, и эта плата также может обеспечить большую вычислительную мощность.

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

WIZ750SR стал очень приятным сюрпризом. Я боялся, что у меня возникнут другие проблемы с этой платой, но после настройки она работала отлично. Он был полностью прозрачным, и у меня не было проблем с ним. Это очень простое в использовании устройство и лучший модуль Ethernet, который я когда-либо использовал с любым из своих микроконтроллеров.

Работать с роботом-манипулятором очень весело, поэтому я обязательно узнаю о нем больше, а затем поделюсь своими знаниями с вами в будущем! Спасибо за чтение!

Код

Веб-редактор Arduino
Вы можете использовать веб-редактор Arduino для доступа и прямой загрузки кода Arduino моего проекта.
Код Arduino и Android
https://github.com/abysmalsb/Robot-Arm-Controller

Схема

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

Производственный процесс

  1. Робот Raspberry Pi, управляемый через Bluetooth
  2. Робот, управляемый жестами, использующий Raspberry Pi
  3. Windows 10 IoT Core:робот, управляемый речью
  4. Робот, управляемый Wi-Fi и использующий Raspberry Pi
  5. ROObockey:робот для уличного хоккея с дистанционным управлением и прицеливанием
  6. Робот SCARA с двумя руками
  7. Рука робота MeArm - Ваш робот - V1.0
  8. Светодиоды, управляемые Alexa через Raspberry Pi
  9. Роботизированная рука, управляемая нунчук (с Arduino)
  10. Робот, управляемый речью