Українська   English
ДонНТУ   Портал магистров

Содержание

Введение

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

Целью данной работы является создание прототипа технического зрения для робота–сортировщика.

Для достижения поставленной цели необходимо обеспечить решение следующих задач: анализ и выбор аппаратных и программных средств, выбор способа решения обратной задачи кинематики (ОЗК), а также непосредственно ее решение, программная реализация алгоритма технического зрения.

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

Роботы–манипуляторы представляют собой автоматические или управляемые оператором устройства, выполняющие заданный спектр операций вместо человека.

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

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

1. Выбор средств и способов реализации поставленной задачи

1.1 Выбор алгоритма

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

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

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

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

Функциональная схема робота сортировщика

Рисунок 1.1 – Функциональная схема робота сортировщика

1.2 Выбор аппаратных средств

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

Кинематическая схема робота сортировщика

Рисунок 1.2 – Кинематическая схема робота сортировщика

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

Для обеспечения движения манипулятора используются восемь сервомоторов DS3218.

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

Управление сервомоторами осуществляется регулированием скважности сигнала широтно–импульсной модуляции (ШИМ) [1].

Для потоковой обработки изображения и решения обратной задачи кинематики не подойдут привычные микроконтроллеры. Эти задачи требуют существенной вычислительной мощности. Поэтому в качестве вычислительного устройства в этой работе используется одноплатный компьютер Raspberry Pi 4. Его основные достоинства: малый размер, низкое энергопотребление, полноценная операционная система, свободное программное обеспечение, низкая цена. Благодаря наличию аппаратных портов ввода-вывода он позволяет программировать реальные устройства, физические системы и объекты [2].

К сожалению, Raspberry Pi 4 имеет лишь два аппаратно-поддерживаемых канала ШИМ, а программные решения не обеспечат необходимое качество сигнала для управления сервомоторами. Данная проблема решается использованием внешнего модуля ШИМ. В данной работе используется модуль PCA9685, который также обеспечивает гальваническую развязку. Это 16–ти канальный 12–разрядный контроллер с настраиваемой частотой ШИМ в пределах от 24 до 1526 Гц. Для управления PCA9685 используется шина I2C, на этой плате есть две группы разъемов для шины I2C с двух сторон. Это позволяет подключать на одной шине несколько плат последовательно или подключать другие I2C устройства [3].

Питание контроллера и выходов ШИМ каналов разделено и может быть от 3 до 5 В. Для ШИМ каналов допускается максимальное напряжение 6 В.

1.3 Выбор программных средств

Для программной реализации алгоритмов технического зрения и решения обратной задачи кинематики был выбран язык программирования Python и библиотека компьютерного зрения с открытым исходным кодом OpenCV. OpenCV может свободно использоваться в академических и коммерческих целях [4].

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

Для решения обратной задачи кинематики используются библиотеки NumPy и SciPy. Библиотека NumPy позволяет облегчить матричные вычисления, таким образом, что аналогичный код на языке программирования C++ будет занимать существенно больше строк, а значит будет менее читаемым. SciPy позволяет решать системы нелинейных уравнений численным методом [5, 6].

Для формирования сигнала ШИМ и подключению к PCA9685 по I2C хорошо подойдет библиотека Adafruit CircuitPython ServoKit [7].

2. Моделирование объекта

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

Для моделирования разрабатываемого прототипа использованы библиотека Simscape Multibody программного пакета Matlab [8].

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

Библиотека Simscape Multibody работает с двумя типами файлов STL и STEP. В разделе Geometry блока Solid импортируем деталь в Matlab (From File). Указывается тип, путь к детали (File name) или наименование файла с деталью, если он находится в одной папке с моделью.

Рекомендуется использовать детали с расширением STEP, так как этот тип данных имеет большее количество информации о геометрии детали, чем STL. Это дает возможность автоматизировать расчет параметров вкладки Inertia, используя функцию Calculate from Geometry, а также существенно упрощает создание контактных точек с поверхностью. Расчет координат центра масс, моментов инерции по осям можно осуществить, задав либо массу детали, либо ее плотность, однако следует иметь ввиду, что при этом деталь принимается за однородную, с равномерным распределением масс.

При выборе формата STL отсутствует возможность автоматического просчета. В этом случае необходимо либо самостоятельно задавать параметры детали (Custom), либо принять массу детали за элементарную точку (Point Mass).

Третий раздел Graphic позволяет настраивать графическое отображение детали при симуляции, например, цвет и прозрачность (Opacity).

Далее модель робота соединена с блоками конфигурации модели. Среди них: Solver Configuration, определяющий параметры моделирования, World Frame, определяющий исходные координаты модели и расположение их в пространстве, и Mechanism Configuration, в котором задается ускорение свободного падения и его направление.

Затем реализовано движение робота. Для этого были использованы блоки Rigid Transform, Revolute Joint, Simulink–PS Converter.

Блок Rigid Transform предназначен для переноса (Translation) и вращения (Rotation) детали путем преобразования координат.

В зависимости от необходимого способа движения Matlab предоставляет ряд стандартных блоков на выбор для их моделирования. В этой работе использован блок Revolute Joint, который осуществляет вращение детали относительно оси Z в глобальных координатах (0; 0; 0), как показано на рисунке 2.1.

К пояснению работы блока Revolute Joint

Рисунок 2.1 – К пояснению работы блока Revolute Joint

Из принципа работы Revolute Joint: приводим деталь к необходимым координатам с помощью блока Rigid Transform, затем последовательно включаем блок Revolute Joint (DoF 5 T R на рис. 2.2), затем, используя блок Rigid Transform, возвращаем деталь в исходное положение.

Реализация движения одного сустава

Рисунок 2.2 – Реализация движения одного сустава

Для оценки работы модели робота использованы стандартные сигналы Simulink, которые через блок Simulink–PS Converter подаются на вход Revolute Joint, предварительно настроив его для заданной цели. Существует возможность задавать закон изменения момента (Torque) и непосредственно движения (Motion), также существует возможность снимать автоматически просчитываемые в Matlab параметры с этого блока. В данной работе задается закон движения (Motion – Provided by Input), где момент просчитывается автоматически.

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

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

Результат моделирования в среде Matlab

Рисунок 2.3 – Результат моделирования в среде Matlab

(анимация: 10 кадров, 6 циклов повторения, 188 килобайт)

3. Решение обратной задачи кинематики

Для управления движением конечного звена манипулятора (схвата) необходимо с определенным интервалом времени решать прямую и обратную задачи кинематики. В отличие от прямой задачи, основные проблемы при этом связаны с решением обратной. Актуальность решения обратной задачи кинематики (ОЗК) особенно возрастает при управлении манипуляторами с избыточным количеством звеньев в режиме малых временных интервалов. В настоящее время разработано множество методов, способных решить ОЗК для указанных манипуляторов, для которых получение аналитических решений не представляется возможным либо достаточно затруднительно. Рассмотрим некоторые из них. Метод обратных преобразований упрощает получение решения ОЗК, но не решает проблему однозначности решения. Метод штрафных функций, использующий решения задач нелинейного программирования, и методы, основанные на свойствах нейросетей, требуют слишком много времени на вычисления, что затрудняет их использование в режиме реального времени. Бикватернионное решение кинематической задачи управления, сводящее решение к задаче Коши для системы дифференциальных уравнений кинетостатики, не всегда может иметь решение. Метод интервалов для решения ОЗК предназначен для простых кинематических схем манипуляторов.

4. Используемые средства компьютерного зрения для решения задачи сортировки

Компьютерное зрение — это технология создания машин, которые могут производить обнаружение, отслеживание и классификацию объектов. Для обработки данных в ней применяются статистические методы, а также модели, построенные при помощи геометрии, физики и теории обучения. Основным разделом компьютерного зрения является извлечение информации из изображения или последовательности изображений. Чаще всего это применяется для определения и распознавания объекта. Распознавание объекта разделено на два этапа: фильтрация изображения и анализ результатов фильтрации.

Определение краев — термин, обозначающий набор математических методов, направленных на выявление точек в цифровом изображении, в которых яркость изображения резко меняется. Эти точки обычно организованы в виде набора кривых линий. Выделенные края могут быть двух типов: независящие и зависящие от точки зрения. Независящие границы отображают такие свойства, как цвет и форма поверхности. Зависящие могут меняться в разных точках обзора и отображают геометрию сцены. Одним из наиболее простых и естественных способов бинаризации изображения является пороговое преобразование по яркости. Бинаризация — преобразование изображения в монохромное. Обычно участки изображения, прошедшие фильтрацию, окрашиваются в белый, а все остальное изображение в черный.

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

Выводы

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

Список источников

  1. Анучин А.С. Системы управления электроприводов/ Анучин А.С .: Издательский дом МЭИ, 2015. – 54 с.
  2. Raspberry Pi 4 Model B specifications [Электронный ресурс]. – Режим доступа: https://www.raspberrypi.org/....
  3. PCA9685 [Электронный ресурс]. – Режим доступа: https://micro-pi.ru/....
  4. OpenCV [Электронный ресурс]. – Режим доступа: https://opencv.org/about/.
  5. NumPy [Электронный ресурс]. – Режим доступа: https://numpy.org/.
  6. SciPy [Электронный ресурс]. – Режим доступа: https://www.scipy.org/.
  7. Adafruit CircuitPython [Электронный ресурс]. – Режим доступа: https://circuitpython.readthedocs.io/projects/servokit/en/latest/.
  8. Simulink. [Электронный ресурс]. – Режим доступа: https://matlab.ru/products/Simulink.