Однако вернёмся к самому началу нашего рассказа, где мы отмечали, на примере робота теннисиста, что его приводы оставляют желать лучшего из-за малых возможностей в области скорости перемещений. На что теоретически можно было бы их заменить?
И тут нам на помощь придут приводы дельта-типа, которые являются одними из самых быстродействующих, благодаря чему часто используются для целей скоростной конвейерной сортировки:
А теперь самое вкусное — посмотрим, на что способен такого типа робот, если его использовать в качестве теннисиста:
Впечатляющие результаты! Некоторое время назад, узнав о том, что тема промышленной роботизации является весьма болезненной для многих компаний, из-за потребности в больших вложениях в самом начале, как для покупки робота, так и в дальнейшем, для поддержки (что приводит к срокам окупаемости в районе 20 лет), я подумал о том, что создание подобного робота, по более низкой цене, и, соответственно, доступного для многих, — могло бы быть интересной идеей для стартапа, производящего робототехнические приводы.
С этими мыслями и с желанием найти что-то подобное в сети, мне удалось наткнуться на проект дельта-робота, с открытым программным обеспечением, использующего в качестве компьютерного зрения OpenCV и OpenGL. Робот весьма простой в построении и содержит множество деталей распечатанных на 3D принтере а также карбоновые тяги и алюминиевый корпус. В качестве «мозга» используется Arduino Mega 2560. Разработка позиционируется как быстрый настольный робот для малого бизнеса и образовательных учреждений. Страничку робота на YouTube можно найти вот здесь, а ниже показано одно из его возможных применений — робот-бармен:
Подытоживая этот рассказ, можно сказать, что «железных», а в частности, робототехнических стартапов, в мире запускается не так много, и показанный выше стартап робота-манипулятора является весьма редким экземпляром. Таким образом, создание своей собственной разработки в области манипуляторов является как интересным само по себе, так и позволит освоить множество областей знаний и создать привлекательный продукт, который можно использовать как для собственного развлечения, так и постараться (при наличии желания) превратить его в коммерческую разработку. Например, недорогие роботы-теннисисты, бильярдисты. Или умные мусорные вёдра :-). По крайней мере, в чём точно не откажешь подобным разработкам, — они реально интересны и «вау эффект» точно обеспечен. Собственно, как и продажи ;-).
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх 🕹️

Как нетрудно увидеть, для всех этих применений требуется компьютерное зрение, которое должно вести захват изображений и их анализ.
Среди основных способов осуществления подобного анализа, можно перечислить такие как:
Так как мы говорим о любительском уровне создания подобных устройств, то для нас имеет смысл использовать уже существующие доступные системы компьютерного зрения.
Среди подобных систем сразу же просится вспомнить одну из самых известных: OpenCV, представляющую с собой комплекс алгоритмов для реализации компьютерного зрения.
Комплекс представлен модулями с узкоспециализированным функционалом: математического анализа, обработки изображений, графического интерфейса пользователя, ввода/вывода изображений и видео, ряда других компонентов. Общее количество компонентов превышает 2500, что позволяет решать достаточно сложные задачи.
Например, вот здесь можно найти описание обработки изображений с применением OpenCV, в том числе и для описанного выше способа нахождения контуров объекта на изображении.
Функционал OpenCV не ограничивается анализом изображения, с его помощью можно работать, редактируя изображения (размер, обрезка и т.д.).
По некоторым оценкам, библиотека по скорости своей работы быстрее программного обеспечения для математических вычислений Matlab, однако имеет и свои недостатки, среди которых можно назвать сложность освоения и трудности с запуском на платформах с малыми возможностями (т.е. например, на микроконтроллерах – показывает малую производительность), поэтому, как можно видеть на множестве примеров имеющихся в интернете, даже если в этих примерах и использован OpenCV, он, как правило, запущен на компьютере, в то время как к компьютеру в качестве периферии подключено исполнительное устройство на микроконтроллере ( Arduino и т.д.), таким образом, анализ производится на компьютере, а контроллер является всего лишь «руками» робота.
Не всех такое положение вещей устроит, так как привязывает к большому по габаритам вычислительному устройству, вроде компьютера. В качестве компромиссного решения можно попробовать посмотреть в сторону возможности запуска этой библиотеки на более компактных устройствах, например, на смартфоне или Raspberry PI, установленному прямо на робота в качестве «мозга».
Желающим «вкатиться» в эту тему, можно попробовать посмотреть достаточно подробный мануал работы с OpenCV, где практически пошагово разобраны все основные существенные моменты анализа изображений, которые могут потребоваться в процессе построения робота с компьютерным зрением: получение изображений, масштабирование, нахождение контуров, распознавание лиц и т.д.:
Кстати, выше было упомянуто «получение изображений», — как можно понять, OpenCV больше предназначен для анализа достаточно больших изображений, с камер с хорошим разрешением. Но не всегда это требуется, для многих применений достаточно небольшого разрешения. Например, некоторое время назад появилась весьма примечательная камера для микроконтроллера esp32,- esp32 cam, с камерой ov2640 (насколько мне известно, сейчас есть версия с камерой ещё большего разрешения, к сожалению, забыл её название):

Несмотря на свои скромные возможности, — весьма низкая цена (на известном китайском сайте — порядка 500 руб. и даже меньше), беспроводные интерфейсы на борту (wifi, bluetooth), лёгкость программирования из среды Arduino IDE — делают её достаточно привлекательной для самоделок.
Что, если я скажу вам, что эта камера может вести захват изображений с частотой 60 FPS? И не просто захват, а и производить анализ изображений прямо на борту, с такой же скоростью!
Вкратце, за счёт чего достигаются такие чудеса:
По оценкам самого автора, подобная процедура позволяет получить весьма производительную конструкцию, позволяющую распознавать отдельное изображение примерно за 12 миллисекунд, что составит порядка 80 кадров в секунду, даже превосходя возможности esp32 cam по числу кадров. Напомним: всё это происходит в реальном времени, прямо на борту esp32 cam, без подключения к внешним сервисам!
Подробное пошаговое объяснение с примерами кода и демонстрационным видео, можно найти вот здесь — для случая классификации изображений (может быть полезно для создания робота-сортировщика, раскладывающего разные предметы, в разные коробки).
Там же имеется и интересный пример нахождения и отслеживания цветового пятна, что может быть полезно для того же бильярда или пинг-понга.
В познавательных целях можно ознакомиться и с другими примерами сайта.
Кстати говоря, если обратить внимание на последовательность анализа изображений для роботов, то нетрудно заметить, что при анализе происходит, скажем так «принудительная деградация» изображения — выделение только одного цвета, оставление только контуров и т.д. А ведь можно пойти и другим путём — уже сразу сформировать минимальное и достаточное (для определённых целей) изображение — скажем, используя самодельный лазерный лидар:
Заинтересовавшиеся, могут изучить файлы показанного выше проекта (код, 3d-модели для печати, электрическая схема соединений).
Время на прочтение

Здравствуйте! Сегодня мы рассказываем о небольшом настольном многофункциональном роботе манипуляторе DoBot Magician, предназначенном для образования — знакомства с робототехникой, ЧПУ и аддитивными технологиями, основами программирования.

Видео
Небольшой видеообзор даст первое представление об этой роборуке. Подробнее — далее в статье.
DoBot Magician

Характеристики

Уникальный миниробот имеет открытую аппаратно-программную платформу — он оснащен 13 портами ввода-вывода и может работать с двумя десятками языков программирования.
Благодаря комплекту насадок DOBOT Magician может перемещать объекты, выполнять гравировку лазером и 3D-печать, чертить и рисовать.
Распаковка
Робот приходит в такой коробке:

Внутри еще одна.

А в ней, в транспортировочной пене, коробочки поменьше.

Комплектация

DoBot Magician поставляется в двух вариантах комплектации: Базовый и Образовательный. У нас на обзоре Образовательный набор, базовый отличается от него лишь отсутствием модулей Bluetooth и Wi-Fi, джойстика, лазера и очков для работы с ним.
В комплект поставки образовательного робота манипулятора Dobot Magician входят: механический захват, вакуумная присоска, комплект для 3D-печати, лазер, держатель для ручки. Производитель постоянно расширяет ассортимент доступных насадок и аксессуаров, возможен предварительный заказ слайдера, миниатюрного конвейера и модуля компьютерного зрения. В ближайших планах DoBot — выпуск насадки для фрезерования.
Сам манипулятор, который имеет слоты подключения периферии на втором сочленении и на задней стенке базы робота. Манипулятор приводится в движение тремя шаговыми двигателями, которые оснащены датчиками обратной связи и редукторами.

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

Захваты приводятся в движение воздушной помпой.

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

Есть держатель пера, для написания текста или рисования, в него можно установить авторучку, лайнер или карандаш диаметром до 10мм.

Набор для 3D-печати: блок экструдера, подставка под катушку пластика, катушка PLA, тефлоновая трубка, стекло и малярный скотч. Скотч служит для закрепления стекла на столе.

Управлять манипулятором можно не только с компьютера, но и дистанционно, с помощью джойстика подключенного по Bluetooth. Кабель USB нужен для зарядки аккумулятора в джойстике.

Модули Bluetooth и Wi-Fi.

Устройство для автоматической калибровки, запасные винты и шестигранники.

Блок питания, кабель USB для соединения с ПК.


Magician совместим со многими актуальными аппаратными и программными средствами, которые широко используются в робототехнике. Например, заявлена поддержка программной платформы ROS (Robot Operating System) и микроконтроллеров Arduino.
Так выглядит основной экран Dobot Studio.

В основном окне мы видим выбор режимов работы робота, справа располагается панель управления манипулятором, чуть выше находится меню настроек, кнопка экстренной остановки и кнопка «Home», а посередине окно выбора инструмента.
Софт DoBot Studio допускает управление несколькими роботами одновременно. По сути, прямо на столе можно создать имитацию сборочной линии, этому также способствует совокупность технических параметров, среди которых приемлемая повторяемость.
Управление
DoBot Magician гибок в управлении — программировать роборуку и управлять ею в режиме реального времени можно с помощью компьютера, смартфона или планшета. В качестве канала связи используется как Wi-Fi или Bluetooth, так и проводное USB-соединение. Робот может распознавать голосовые команды и жесты.
Режимы программирования
Основным режимом является «Обучение и повторение».

В этом режиме можно создавать управляющие программы, которые робот сможет выполнять единожды или циклично. Обучать робота можно двумя способами:
1.: На втором сочленении располагается кнопка, при нажатии на которую с двигателей снимается ток удержания и, благодаря этому, появляется возможность свободно перемещать манипулятор вручную. После перемещения инструмента и отпускания кнопки, координаты запишутся в таблицу.
2.: Переместить инструмент в нужное положение можно и с помощью панели управления, которая расположена в правой части экрана. Двигать можно как линейно, по осям, так и каждое сочленение поочередно. После перемещения, соответствующая координата сохраняется путем нажатия кнопки “+ Point”.
После записи всех координат и настройки способов движения, нажатием кнопки Play, мы запустим выполнение управляющей программы.
Управляющую программу можно загрузить в память манипулятора, чтобы он выполнял работу в режиме офлайн.
Для отладки существует кнопка Step Run, позволяющая запустить программу пошагово, чтобы убедиться в правильности движения.
Два следующих режима, «Блочное программирование» и «Скрипт», созданы для более глубокого изучения программирования и робототехники. В них возможно создание гораздо более сложных алгоритмов поведения, добавление условий выполнения различных сценариев.
Для начинающих, которые еще плохо знакомы с языками программирования, отлично подойдет режим Блочного программирования. Вместо запоминания сложных синтаксических форм и обозначений здесь используются блоки обозначающие условия, циклы, функции, математические преобразования. Тело программы выстраивается путем вставки одних блоков в другие.

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

Режимы работы
Для того, чтобы оценить максимально возможную область перемещения инструмента “живьем”, можно воспользоваться функцией управления манипулятором с помощью «мыши».

Следующий режим — «Рисование». В качестве инструмента на манипулятор, в специальный подпружиненный держатель, устанавливается ручка.

Можно создать надпись, вставить рисунок из встроенной библиотеки или добавить собственный.

Контуры воспроизводятся с высокой точностью.

Лазерный гравер. С помощью лазера можно выжигать или гравировать изображения.

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

Обработке поддаются многие материалы, такие как дерево, кожа, бумага, картон, акрил.


После этого откроется довольно привычное многим 3D-печатникам окно программы Repitier Host.
Здесь мы вбиваем параметры принтера, подгружаем профили печати и можно приступать к слайсингу.

Представленные ниже детали печатались на скорости всего 4 мм/с, поэтому печать заняла около 14 часов. Это стандартное значение скорости, взятое из родного профиля. Для облегчения веса экструдера, двигатель подачи пластика вынесен отдельно на платформу держателя катушки. Из-за этого приходится сокращать или вовсе убирать ретракты в настройках слайсера.

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

Правый манипулятор, по заданному алгоритму и с заданной периодичностью, выкладывает кубики на конвейерную ленту, а левый манипулятор регистрирует наличие кубика на ленте (с помощью инфракрасного датчика), определяет его цвет (с помощью цветового датчика) и помещает кубик в соответствующую стопку.
Назначение
Пример применения DoBot компанией Volkswagen.
DoBot Magician отлично подойдет для обучения детей. Учебный процесс с его участием может начинаться с простейшей игровой формы, благодаря наличию джойстика. Следующий шаг — основы программирования, сначала в блочном редакторе, а потом и скрипты.
Столь наглядное и интерактивное обучение намного эффективнее работы с “сухим” кодом, особенно в самом начале.
Учитывая интересы более продвинутых потенциальных пользователей, разработчики предусмотрели возможность подключения разнообразной периферии, которая не поставляется в комплекте. Это могут быть всевозможные датчики, сервоприводы и шаговые двигатели, светодиодные приборы и множество других электронных устройств, включая микрокомпьютеры и микроконтроллерные платформы, такие как Arduino. Учитывая это, можно рекомендовать DoBot Magician не только школам, но и техникумам, и вузам, как исключительно удачное наглядное пособие.
Уже сегодня этот миниробот используется как одно из основных средств STEM-обучения в ведущих китайских вузах — Университете Цинхуа и Шаньдунском политехе, а также в Австралии — в Сиднейском технологическом университете.
Выводы
Рассматривать качество работы DoBot Magician в сравнении с обычным 3D-принтером или лазерным гравером нельзя. Он никогда не даст качество 3D-печати сравнимое даже с бюджетными принтерами, но это естественно: это не принтер и не гравер, это совершенно другой аппарат, с иными задачами, которые он выполняет отлично.
Если вы работаете в сфере образования и ищете максимально эффективные средства обучения, обратитесь в
Top 3D Shop
— наши сотрудники подберут оптимальное для выполнения ваших задач оборудование.
Хотите больше интересных новостей из мира 3D-технологий?

Под runtime программированием в этой статье понимается процесс создания исполняемой программы для контроллера робота (далее просто робота) на внешнем контроллере. Процесс исполнения роботом созданной программы в таком случае, происходит итерационно, путем передачи ему минимальной исполняемой команды или пакета команд. Другими словами, при runtime программировании, исполняемая программа передаётся роботу порционно, при этом робот не обладает, не хранит и не знает заранее всю исполняемую программу. Такой подход позволяет создать абстрактную параметризованную исполняемую программу, которая формируется внешним устройством «на ходу», т.е. runtime.
Под катом описание и реальный пример того, как работает runtime программирование.


Как отмечалось ранее, runtime программирование позволяет передавать роботу программу порционно – частями. Обычно за один раз передается набор состояний выходных сигналов и небольшое число точек или вообще только одна точка. Таким образом траектория перемещений TCP, выполняемая роботом, может строиться динамически и отдельные её части могут принадлежать как разным технологическим процессам, так и даже разным роботам (подключенным к одному внешнему контроллеру), если работает группа роботов, т.е. возникают предпосылки для динамического замещения роботов в технологическом процессе.
Например, перемещение робота между рабочими зонами. В каждой зоне он совершает необходимые операции и далее переходит в следующую зону, потом в ещё одну, и затем снова в первую, и т.д. В разных рабочих зонах роботом выполняются операции необходимые для разных технологических процессов, исполнение программ которых протекает в параллельных потоках на внешнем контроллере, который выделяет робота разным процессам, не требующим постоянного присутствия робота. Этот механизм подобен тому, как ОС выделяет время ядра процессора (исполнительного ресурса) разным потокам (задачам) и в тоже время, разные исполнители не привязаны к потокам на всем периоде выполнения программы.
Еще немного теории и переходим к практике.
Описание существующих способов программирования промышленных роботов
Без учета, вводимого в данной статье подхода runtime программирования, принято выделять два способа программирования промышленных роботов. Офлайн- и онлайн-программирование.
Процесс онлайн программирования происходит при непосредственном взаимодействии программиста с роботом на месте его использования. При помощи пульта управления или физического перемещения осуществляется подвод инструмента (TCP), установленного на фланце робота, к необходимой точке пространства.
Процесс офлайн программирования, как понятно из названия, происходит удаленно от робота и его контроллера. Исполняемая программа разрабатывается в какой-либо специализированной среде для программирования промышленных роботов на ПК, а затем загружается в робота целиком. Однако, программные инструменты для такой разработки не входят в базовый комплект поставки робота и являются дополнительными опциями, которые приобретаются отдельно и в своей массе не дешевы.
В качестве примера, рассмотрим создание программы робота в runtime режиме, обеспечивающей технологический процесс написания объявления маркером.
ВНИМАНИЕ! Видео не является рекламой, вакансия закрыта. Статья написана после того, как видео потеряло свою актуальность, для того, чтобы продемонстрировать предлагаемый подход программирования.
ПРИВЕТ, ЛЮДИ! НАМ НУЖЕН
РАЗРАБОТЧИК. ДЛЯ СОЗДАНИЯ ВЕБ
ИНТЕРФЕЙСА СИСТЕМЫ НАШИХ
ЗНАНИЙ. Т АК МЫ СМОЖЕМ ПЕРЕНЯТЬ
ОТ ВАС ГУМАНОЙДОВ ЗНАНИЯ.
И НАКОНЕЦ-ТО МЫ СМОЖЕМ
ЗАХВАТИТЬ УЛУЧШИТЬ ЭТОТ МИР
ПОДРОБНЕЕ: HTTP://ROBOTCT. COM/HI
ИСКРЕННЕ ВАШ SKYNET =^-^=
Для написания этого текста потребовалось передать роботу более 1700 точек.
В качестве примера в спойлере приведен скриншот, с пульта робота, программы рисующей квадрат. В ней всего 5 точек (строки 4-8), каждая точка по сути представляет собой законченное выражение (оператор) и занимает одну строку. Манипулятор обходит каждую из четырех точек и по завершению возвращается в начальную точку.
Скриншот пульта управления с исполняемой программой

Если писать программу подобный образом, то это было бы минимум 1700 операторов — строк кода, по оператору на точку. А что если бы потом потребовалось изменить текст или высоту букв, или расстояние между ними? Править все 1700 точек-строк? Это противоречит духу автоматизации!
Имеем робота FANUC LR Mate 200iD с котроллером R-30i серии B cabinet. У робота предварительно настроена TCP на конце маркера и координатная система рабочего стола, поэтому мы можем отправлять координаты, напрямую не заботясь о преобразовании координат из координатной системы стола в координатную систему робота.
Для реализации программы передачи координат роботу, которая будет высчитывать абсолютные значения каждой конкретной точки будем использовать язык программирования RCML, который поддерживает предлагаемый подход, имеет модули для связи с данным роботом и который, что немаловажно бесплатен для любого использования.
Опишем каждую букву точками, но не в реальных координатах пространства, а в относительных внутри рамки, в которую будет вписана буква. Каждая буква будет отрисовываться отдельной функцией, получающей в качестве входных параметров порядковый номер буквы в строке, номер строки, а также размер буквы, и отправляющей набор точек роботу с вычисленными абсолютными координатами каждой точки.
Чтобы написать текст нам потребуется вызвать последовательность функций, рисующих буквы в такой же последовательности, в которой они (буквы) указаны в тексте. R CML имеет скудный инструментарий для работы со строками, поэтому сделаем внешний скрипт на Python, который будет генерировать программу на RCML – по сути генерировать только последовательность вызовов функций соответствующих последовательности букв.
Весь код доступен в репозитории на GitHub: rct_paint_words
Рассмотрим подробнее выходной файл, исполнение начинается с функции main():
Пример выходного файла на языке RCML
Рассмотрим код отрисовки буквы на примере буквы А:
Функции перемещения маркера в точку с отрывом или без, тоже очень просты:
Функции marker_up, marker_down, marker_move содержат лишь код передачи роботу изменившейся части координаты точки TCP (Z или XY)
Все константы конфигурации, в том числе размер букв, их количество в строке и пр. были вынесены в отдельный файл chars_config.rcml.
Файл конфигурации chars_config.rcml
define CHAR_HEIGHT_MM 50 // Высота символов в мм
define CHAR_WIDTH_PERCENT 60 // Ширина символов в процентах от высоты
define SAFE_Z -20 // Безопасное положение наконечника маркера по оси z
define START_Z 0 // Рабочее положение наконечника маркера по оси z
// Границы рабочей зоны
define BORDER_Y 120
define BORDER_X 75
// Сигналы ON/OFF
define ON 1
define OFF 0
// Паузы между отправкой сигналов мс
define _SIGNAL_PAUSE_MILLISEC 50
define _OFF_PAUSE_MILLISEC 200
// Углы Эйлера начального положения маркера – углы ориентации инструмента
define START_W -179.707 // Крен
define START_P -2.500 // Тангаж
define START_R 103.269 // Рыскание
// Углы Эйлера после поворота маркера
define SECOND_W -179.704 // Крен
define SECOND_P -2.514 // Тангаж
define SECOND_R -14.699 // Рыскание
define CHAR_OFFSET_MM 4 // Отступ между буквами
define UFRAME 4 // Номер стола
define UTOOL 2 // Номер инструмента
define PAYLOAD 4 // Номер нагрузки
define SPEED 100 // Скорость
define CNT 0 // Параметр сглаженности перемещения
define ROTATE_SPEED // Скорость при повороте
define HOME_PNS 4 // Номер PNS программы перехода в домашнюю позицию
В итоге суммарно мы получили примерно 300 строк высокоуровневого кода, на проектирование и написание которого ушло не более 2 часов.
Если бы данная задача решалась «в лоб» онлайн программированием по точкам, то на это бы ушло более 9 часов (примерно по 20-25 сек на точку, с учетом того, что точек более 1700 шт.). В этом случае страдания разработчика трудно представить :), особенно когда выяснилось бы, что он забыл про отступы между буквами, или ошибся с высотой букв и текст не влез, и теперь придется начинать всё с начала.
Runtime программирование позволяет решать задачу по перемещению робота в общем виде, динамически составляя частную программу перемещения в зависимости от заданных параметров. Причем программа, решающая задачу в общем виде может разрабатываться без необходимости наличия робота, что с одной стороны можно отнести к офлайн подходу программирования промышленного робота. С другой стороны программа перемещения непосредственно для робота создается уже под конкретный экземпляр и частные параметры решения задачи на месте, как в онлайн программировании.
В рассмотренном примере общим алгоритмом было начертание букв, а такие параметры как их размер, отступы между ними, количество букв в строке и пр. зависели уже от частных условий на площадке с роботом.
Как отмечалось такой подход с динамическим построением траектории перемещения создает предпосылки для реализации переключения робота (на событийной основе), как исполнительного ресурса, между несколькими одновременно протекающими задачами.
Однако данный подход следует использовать с осторожностью
В продемонстрированной вариации (с передачей одной точки за раз) runtime подход имеет существенное ограничение – некорректное понимание роботом инструкции сглаживания перемещения (CNT) или её игнорирование, т.к. при передаче всегда одной-текущей точки робот ничего не знает о следующей и не может просчитать сглаженную траекторию обхода текущей точки.
Что же есть CNT?
При перемещении инструмента робота возможно влиять на два параметра:
Оба эти параметра влияют на конечную получаемую траекторию, что проиллюстрировано на рисунке ниже:

В худшем случае опасность использования данной инструкции в runtime режиме заключается в том, что робот сообщает о приходе в намеченную сглаживаемую точку, хотя в действительности он ещё идет к ней. Робот это делает, чтобы запросить следующую точку и рассчитать сглаживание. Очевидно, что нельзя точно знать в какой позиции находится робот при проходе такой точки, к тому же, в определенной точке может потребоваться, например, включение инструмента на манипуляторе. Робот даст сигнал, что доехал до точки, но на самом деле нет. В таком случае, инструмент будет включен раньше, чем следует.
В лучшем случае робот просто игнорирует инструкцию CNT (зависит от модели).
Лечится же это передачей 2-х и более точек за раз, где CNT-точка не последняя, однако это повышает сложность программы и нагрузку на программиста.
Надеюсь, статья оказалась вам полезной.
С радостью отвечу на ваши вопросы.
Для чего можно использовать манипуляторы?
В самом начале не зря было упомянуто компьютерное зрение, так как можно, конечно, настроить манипулятор на взаимодействие с объектами реального мира, отладив это взаимодействие с достаточной точностью, в частности, применяя обратную связь, например, расположенные на манипуляторе датчики, как, например, это реализовано даже на многокоординатных станках, которые с помощью прохождения щупом могут, как сканировать изначальную геометрию объекта, так и проверять качество получившейся поверхности после обработки:
Чем-то похоже на калибровку печатного стола у 3D принтеров, хотя это более сложный вариант примерно того же самого:
Тем не менее, гораздо интереснее, быстрее и универсальнее использовать методы компьютерного зрения для взаимодействия с физическими объектами.
Под компьютерным зрением понимается комплекс методов получения и анализа изображений в реальном времени, с последующим переводом (если такое зрение предназначено для оснащения манипулятора) в координаты реального мира и подачи соответствующих управляющих сигналов на двигатели манипулятора.
Даже в простых вариантах, с условно медленно работающими сервоприводами, получается впечатляюще:
Причём манипулятор не обязательно должен быть выполнен в виде руки, встречаются довольно-таки забавные варианты, например, «услужливое мусорное ведро», самостоятельно ловящее мусор творческого хозяина:
Или даже робот-теннисист:
Хотя, как можно заметить, у этого робота существуют явные проблемы в исполнительной части — распознавание работает быстро, а сервоприводы достаточно медленные. Что с этим можно поделать, — об этом несколько ниже.
Ещё одним любопытным применением может быть создание своего робота-бильярдиста, который, будучи объединённым с нейросетью, может представлять собой весьма любопытную конструкцию:
Подобных реализаций роботов имеется довольно большое количество, среди них есть даже построенные на базе робота-пылесоса, ездящего прямо по бильярдному столу!
Или несколько необычный взгляд на ту же самую проблему: компьютерное зрение и исполнительный механизм, расположенные прямо на конце бильярдного кия:
Человек примерно ориентирует кий в пространстве, а точное ориентирование и нанесение удара по шару производятся уже самим роботом.
А может быть, вам не нравятся активные виды проведения досуга? Тогда робот-шахматист ваш выбор:
А вот здесь имеется подробное объяснение проекта робота-шахматиста.
Робототехнические манипуляторы с компьютерным зрением

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




