Українська   English
 

Реферат по теме выпускной работы

Содержание

Введение

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

  1. Оценивать препятствия на своём пути.
  2. Находить требуемые объекты среди множества предметов.
  3. Идентифицировать суставы человека.
  4. Получать координаты требуемого объекта и многое другое.

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

1. Актуальность темы

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

2. Цель и задачи исследования

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

Для достижения поставленной цели, необходимо выполнить следующие задачи:

  1. Выбор датчика для захвата движения человека.
  2. Написание программы (будет использован язык программирования C#) для получения координат требуемых суставов человека.
  3. Передача данных из программы, написанной на C#, в Matlab.
  4. Использование голосового управления для удалённого взаимодействия с датчиком.
  5. Создание двух алгоритмов управления:
    • ручной;
    • автоматический.
  6. Создание пользовательского интерфейса для выбора режима работы.
  7. Создание модели в Simulink для идентификации текущего режима работы.
  8. Создание модели в MSC Adams и проверка работоспособности алгоритма.
  9. Установление связи между MSC Adams и Matlab.

3. Выбор датчика для захвата движения

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

3.1 Kinect

Изначально, разработчики ставили перед собой задачу создания бесконтактного игрового контроллера, который стал бы хорошим дополнением к игровой консоли Xbox 360 [1]. На рисунке 3.1 представлен внешний вид устройства.

Внешний вид Kinect for Xbox 360

Рисунок 3.1 – Внешний вид Kinect for Xbox 360


Однако сейчас, Kinect больше ассоциируется как устройство, которое уже мало связано с игровой индустрией. Этот переход был осуществлён в связи с оживлённым интересом к созданию собственных приложений с использованием возможностей датчика. Поэтому, через пару лет Microsoft выпустила обновлённую версию контроллера, который уже имел порт USB для подключения к ПК. Для тех пользователей, у которых осталась старая версия, был предоставлен переходник с USB портом.

На рисунке 3.2 изображено локальное расположение составных частей сенсора.

Расположение рабочих органов сенсора

Рисунок 3.2 – Расположение рабочих органов сенсора


Из рисунка 3.2 имеем следующие составные части [2]:

  1. IR Emitter – инфракрасный проектор.
  2. LED – светодиод. Необходим для индикации исправности сенсора и ПО.
  3. Color Camera – RGB‑камера:
    • 30 кадров в секунду при разрешении 640х480;
    • 12 кадров в секунду при разрешении 1280х960.
  4. IR Depth Sensor – инфракрасная камера.
  5. Microphone Array – микрофонная решетка. Состоит из 4‑х микрофонов.
  6. Мотор.

Мотор позволяет поворачивать тело относительно основания на ± 27 °

В дальнейшем, Microsoft выпустила новую версию Kinect 2.0. В таблице 3.1 представлено сравнение Kinect 2.0 и вышеописанного.

Таблица 3.1 – Сравнение Kinect Xbox 360 и Kinect v2

Характеристика Kinect Xbox 360 Kinect v2
RGB‑камера 640х480(30 FPS) 1920x1080 (30 FPS)
Инфракрасная камера 320x240 (30 FPS) 512x424 (30 FPS)
Максимальное расстояние 4 м 4 м
Минимальное расстояние 40 см 50 см
Горизонтальная область видимости 57 градусов 70 градусов
Вертикальная область видимости 43 градуса 60 градусов
Мотор Есть Нет
Максимальное количество
отслеживаемых суставов
20 26
Количество полных
отслеживаемых скелетов
2 6
Стандарт USB 2.0 3.0 (Gen‑2)
Версия Windows 7+ 8+
Цена ≈ 9 тыс. руб. ≈ 13 тыс. руб.

На рисунке 3.3 представлен результат работы камеры глубины двух сенсоров

Сравнение работы датчиков

Рисунок 3.3 – Сравнение работы датчиков


3.2 Asus Xtion Pro

На рисунке 3.4 представлен внешний вид сенсора с расположением его основных частей [3].

Внешний вид сенсора Asus Xtion

Рисунок 3.4 – Внешний вид сенсора Asus Xtion


Данный сенсор состоит только из двух камер:

  1. RGB‑камера
  2. Камера глубины

Стоит отметить, что технология захвата движения в данном сенсоре точно такая же, как в Kinect.

По сравнению с предыдущих аналогом, за счёт минимизации количества камер, он имеет малые габариты. Это делает его более распространённым в тех задачах, где установка крупногабаритного сенсора либо невозможна, либо нецелесообразна.

В качестве языка программирования можно использовать:

Стоимость такого устройства от 7 до 10 тис. руб.

Ввиду общедоступности и удовлетворительных характеристик, которых достаточно д ля реализации задачи, в качестве сенсора был выбран Kinect Xbox 360.

4. Принцип действия основных узлов датчика

Для написания соответствующей программы для Kinect Xbox 360, необходимо сперва разобраться с принципом действия основных элементов.

4.1 Подключение и подготовка к работе

Для подключения данного сенсора, необходимо наличие специального переходника (рисунок 4.1).

Необходимый переходник для подключения к ПК

Рисунок 4.1 – Необходимый переходник для подключения к ПК


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

  1. Исправности основных элементов датчика.
  2. Наличии на ПК необходимого программного обеспечения (библиотеки Kinect for Windows SDK).
  3. Готовности к работе.

На риснуке 4.2 представлена упрощённая схема подключения датчика к ПК

Схема подключения сенсора к ПК

Рисунок 4.2 – Схема подключения сенсора к ПК


Ввиду того, что ПО, на котором работает компьютер и сам контроллер, являются продуктами одной компании. Поэтому, Microsoft выпустила полную поддержку своего продукта Kinect for Windows SDK [4], которая позволяет:

Стоит отметить, что существуют также и другие библиотеки, позволяющие запрограммировать сенсор как это необходимо (OpenNI, OpenKinect, KinectPy, Coding4Fun). Основным недостатком дополнительной поддержки, за исключением Coding4Fun [5], является отсутствие начальной информации, позволяющей упростить этап разработки приложения и его тестирование. , для программирования контроллера в основном будет использована официальная поддержка, а также, для получения потоков камер – Coding4Fun.

4.2 Принцип действия камеры глубины

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

Датчик возвращает необработанную информацию в виде 16-разрядного кода. Данный код содержит информацию не только об относительной удалённости объектов, но также, позволяет точно определить расстояние в мм. Помимо дальности, мы можем получить информацию об положении объекта в области видимости камеры (рисунок 4.3).

Получения координат объекта

Рисунок 4.3 – Получения координат объекта


4.3 Получение информации о суставах человека и построение карты скелета

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

Преобразованная информация в код

Рисунок 4.4 – Преобразованная информация в код


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

  1. Из необработанных данных глубины выделяется информация о пользователе.
  2. Полученные данные поступают на вход обученной модели машинного обучения и начинается процесс сопоставления полученной информации с заложенной в алгоритм. Если отдельный участок тела человека соответствует данным из обученной модели, то он маркируется и ему присваивается уникальное значение.
  3. Далее, составляется дерево соединений, формирующее предварительные скелетные данные человека.
  4. После нескольких итераций предыдущих пунктов, алгоритм начинает расставлять узлы и соединений с наибольшей вероятностью.
  5. Далее, для получения координат каждого сустава, датчик проецирует полученное изображение на три плоскости. Тем самым формирую 3D представление пользователя.

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

Приблизительная карта отслеживаемого скелета

Рисунок 4.5 – Приблизительная карта отслеживаемого скелета


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

5. Передача данных из программы, написанной на C# в Matlab

Для передачи данных будет использован последовательный порт связи. Потребуется сформировать данные (угол задания для робота) и отправить их на плату STM32F407VE. Для того, чтобы сформировать пакет данных и отправить его по последовательному порту, следует подключить пространство имён System.IO.Ports [7]. Данное пространство имён позволяет инициализировать и работать с последовательным портом. Для инициализации порта используется команда:

SerialPort port name = new SerialPort(Number port, BaudRate, Parity, DataBits, StopBits);

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

Таблица 5.1 – Настройка последовательного порта

Наименование Пояснения Значение в программе
Port name Произвольное имя порта port
Number port Номер порта. Значение указывается, как строка COM3
BaudRate Скорость передачи 115200
Parity Чётность Parity.None
DataBits Количество бит данных 8
StopBits Стоповый бит StopBits.One

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

6. Реализация голосового управления

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

  1. Сделать датчик записывающим устройством по умолчанию.
  2. Подключить библиотеку в Visual Studio для распознавания голосовых команд (в данном случае использовалась родная библиотека Microsoft Speech Platform [8]).
  3. Инициализировать обработчик для голосовых команд:
    • определить язык команд и в соответствие с ним создать объект распознавателя речи;
    • выбрать устройство ввода, установленное в системе по умолчанию;
    • оздаём словарь с набором ключевых слов;
    • создать элемент грамматики для проверки степени совпадения произнесённой команды и заданной;
    • указать количество итераций распознавания после первой успешной;
    • подключить метод, в который программа будет заходить каждый раз, когда пользователь произносить ключевое слово. С помощью элементов ветвления необходимо реализовать логику действий для каждого ключевого слова.

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

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

Приветственное окно при запуске приложения

Рисунок 7.1 – Приветственное окно при запуске приложения


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

  1. Голосовое оповещение о ключевых событиях, связанных с датчиком:
    • запуск и остановка датчика;
    • активация ручного или автоматического режима.
  2. Мониторинг скорости изменения сигнала задания.
  3. Оповещение пользователя о возможности аварии в случае дальнейшего увеличения скорости изменения сигнала.
  4. Ограничение скорости изменения задания (применимо при ручном режиме работы), когда задание близко к критическому значению.

8. Создание модели в MSC Adams

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

Основой MSC.ADAMS [9] являются высокоэффективный препроцессор и набор решателей. Препроцессор обеспечивает как импорт геометрических примитивов из многих CAD систем, так и создание твердотельных моделей непосредственно в среде MSC.ADAMS. Разработчики постоянно прилагают усилия к повышению эффективности математической базы программного пакета, благодаря чему использование решателей MSC.ADAMS гарантирует получение результатов при минимальных усилиях со стороны пользователя. На рисунке 8.1 изображена импортированная модель в среду Adams.

Внешний вид импортированной модели

Рисунок 8.1 – Внешний вид импортированной модели


После добавления необходимо указать вес детали, характеристики материала, из которого реальный объект изготовлен. В Adams имеется стандартный набор материалов. Однако все детали робота были выполнены из пластика. Для таких случаев имеется возмож¬ность создания собственного материала. Для этого необходимо задать необходимые величины:

  1. Density – плотность материала.
  2. Young’s Modules – модуль Юнга. Это та физическая величина, кото¬рая отражает возможность некоторого материала сопротивляться растяжению или сжатию при упругой деформации.
  3. Poisson’s Ratio – это отношение поперечного сжатия и относительного продольного удлинения

Задав эти исходные данные, решатель, встроенный в Adams, рассчитает необходимые моменты инерции и определит центр масс.

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

  1. Простые:
    • Revolute Joint – вращательный шарнир;
    • Translational Joint – поступательный шарнир;
    • Cylindrical Joint – вращательно-поступательный шарнир;
    • Spherical Joint – сферический шарнир;
    • Planar Joint – плоский шарнир;
    • Constant-Velocity Joint – шарнир постоянных угловых скоростей;
    • Screw Joint – винтовое соединение;
    • Fixed Joint – жёсткое соединение;
    • Hooke/Universal Joint – шарнир Гука.
  2. Сложные:
    • Gears – зубчатое сцепление;
    • Couper – ременная или цепная передача.

На рисунке 8.2 приведён пример добавления связи типа Revolute Joint.

Установление связи между деталями

Рисунок 8.2 – Установление связи между деталями


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

Добавления усилия для совершения вращательного движения

Рисунок 8.3 – Добавления усилия для совершения вращательного движения


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

Анимация отработки задания на приседания

Рисунок 8.4 – Отработка задания на приседания
(анимация: 14 кадров, 7 циклов повторения, 368 кБайт)


Выводы

В результате разработки алгоритма планирования траектории, были поставлены задачи реализации рассматриваемого принципа на практике, написание соответствующего ПО для объединения основных узлов, необходимых для работы. Рассмотрен принцип моделирования в среде MSC Adams, а также, добавление связи с пакетом Matlab. Это позволило объединить сильные стороны двух средств и получить качественный результат моделирования.

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

  1. Официальная страница Kinect. [Электронный ресурс]. – Режим доступа: https://azure.microsoft.com/ru-ru/services/kinect-dk/
  2. Технические характеристики контроллера Kinect. [Электронный ресурс]. – Режим доступа: https://3dnews.ru/594561
  3. Официальный сайт Asus Xtion Pro. [Электронный ресурс]. – Режим доступа: https://www.asus.com/ru/3D-Sensor/Xtion_PRO_LIVE/
  4. Библиотека Kinect for Windows SDK [Электронный ресурс]. – Режим доступа: https://www.microsoft.com/en-ie/download/details.aspx?id=40278
  5. Библиотека Coding4Fun [Электронный ресурс]. – Режим доступа: https://archive.codeplex.com/?p=c4fkinect
  6. Основы отслеживания данных тела человека [Электронный ресурс]. – Режим доступа: https://habr.com/ru/post/151296/
  7. Библиотека для работы с последовательным портом в C# [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/api/system.io.ports.serialport?view=netframework-4.8
  8. Библиотека для реализации голосового управления [Электронный ресурс]. – Режим доступа: https://www.microsoft.com/en-us/download/details.aspx?id=27225
  9. Официальный сайт продукта MSC Adams [Электронный ресурс]. – Режим доступа: https://www.mscsoftware.com/product/adams