Реферат по теме выпускной работы
Содержание
- Введение
- 1. Актуальность темы
- 2. Цель и задачи исследования
- 3. Выбор датчика для захвата движения
- 3.1 Kinect
- 3.2 Asus Xtion Pro
- 4. Принцип действия основных узлов датчика
- 4.1 Подключение и подготовка к работе
- 4.2 Принцип действия камеры глубины
- 4.3 Получение информации о суставах человека и построение карты скелета
- 5. Передача данных из программы, написанной на C# в Matlab
- 6. Реализация голосового управления
- 7. Создание пользовательского интерфейса для выбора режима работы.
- 8. Создание модели в MSC Adams.
- Выводы
- Список источников
Введение
Компьютерное зрение является одной из наиболее перспективных направлений в робототехнике. Благодаря возможностям стереозрения, робототехническое устройство может:
- Оценивать препятствия на своём пути.
- Находить требуемые объекты среди множества предметов.
- Идентифицировать суставы человека.
- Получать координаты требуемого объекта и многое другое.
Также, компьютерное зрение может применяться в качестве алгоритма планирования траектории для электромеханического устройства.
1. Актуальность темы
Определённые механические системы требуют для своего нормального функционирования звено планирования траектории, позволяющее скорректировать алгоритм движения объекта управления, в соответствие с особенностями конструкции. На основании данного подхода, имеется возможность создания наиболее благоприятного алгоритма движения с возможностью коррекции отдельных участков траектории.
2. Цель и задачи исследования
Цель работы – создание алгоритма планирования траектории для опорно-двигательного аппарата антропоморфного робота. В качестве задающего устройства будет использовано относительное положение суставов правой руки.
Для достижения поставленной цели, необходимо выполнить следующие задачи:
- Выбор датчика для захвата движения человека.
- Написание программы (будет использован язык программирования C#) для получения координат требуемых суставов человека.
- Передача данных из программы, написанной на C#, в Matlab.
- Использование голосового управления для удалённого взаимодействия с датчиком.
- Создание двух алгоритмов управления:
- ручной;
- автоматический.
- Создание пользовательского интерфейса для выбора режима работы.
- Создание модели в Simulink для идентификации текущего режима работы.
- Создание модели в MSC Adams и проверка работоспособности алгоритма.
- Установление связи между MSC Adams и Matlab.
3. Выбор датчика для захвата движения
Современный рынок предоставляет множество продуктов для реализации поставленной задачи. Следует рассмотреть наиболее основные и подходящие по своему функционалу датчики.
3.1 Kinect
Изначально, разработчики ставили перед собой задачу создания бесконтактного игрового контроллера, который стал бы хорошим дополнением к игровой консоли Xbox 360 [1]. На рисунке 3.1 представлен внешний вид устройства.
Рисунок 3.1 – Внешний вид Kinect for Xbox 360
Однако сейчас, Kinect больше ассоциируется как устройство, которое уже мало связано с игровой индустрией. Этот переход был осуществлён в связи с оживлённым интересом к созданию собственных приложений с использованием возможностей датчика. Поэтому, через пару лет Microsoft выпустила обновлённую версию контроллера, который уже имел порт USB для подключения к ПК. Для тех пользователей, у которых осталась старая версия, был предоставлен переходник с USB портом.
На рисунке 3.2 изображено локальное расположение составных частей сенсора.
Рисунок 3.2 – Расположение рабочих органов сенсора
Из рисунка 3.2 имеем следующие составные части [2]:
- IR Emitter – инфракрасный проектор.
- LED – светодиод. Необходим для индикации исправности сенсора и ПО.
- Color Camera – RGB‑камера:
- 30 кадров в секунду при разрешении 640х480;
- 12 кадров в секунду при разрешении 1280х960.
- IR Depth Sensor – инфракрасная камера.
- Microphone Array – микрофонная решетка. Состоит из 4‑х микрофонов.
- Мотор.
Мотор позволяет поворачивать тело относительно основания на ± 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].
Рисунок 3.4 – Внешний вид сенсора Asus Xtion
Данный сенсор состоит только из двух камер:
- RGB‑камера
- Камера глубины
Стоит отметить, что технология захвата движения в данном сенсоре точно такая же, как в Kinect.
По сравнению с предыдущих аналогом, за счёт минимизации количества камер, он имеет малые габариты. Это делает его более распространённым в тех задачах, где установка крупногабаритного сенсора либо невозможна, либо нецелесообразна.
В качестве языка программирования можно использовать:
- C++/C# , Java для платформы Windows;
- C++, Java для платформы Linux.
Стоимость такого устройства от 7 до 10 тис. руб.
Ввиду общедоступности и удовлетворительных характеристик, которых достаточно д ля реализации задачи, в качестве сенсора был выбран Kinect Xbox 360.
4. Принцип действия основных узлов датчика
Для написания соответствующей программы для Kinect Xbox 360, необходимо сперва разобраться с принципом действия основных элементов.
4.1 Подключение и подготовка к работе
Для подключения данного сенсора, необходимо наличие специального переходника (рисунок 4.1).
Рисунок 4.1 – Необходимый переходник для подключения к ПК
В соответствие со схемой, изображённой на рисунке 4.2, следует подключить устройство. При успешном подключении, необходимо убедиться в свечении светодиода, сигнализирующего об:
- Исправности основных элементов датчика.
- Наличии на ПК необходимого программного обеспечения (библиотеки Kinect for Windows SDK).
- Готовности к работе.
На риснуке 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, первые три бита несут информацию о пользователе, его расстоянии и расположении относительно расположения устройства. Данная информация является предварительной и не даёт точного расположения суставов человека. Она необходимо, чтобы получить данные и динамике движения всего объекта. Ввиду сложности реализации механизма отслеживания поз человека (люди имеют различные формы, рост), был использован вариант «конвейера рендеринга». Для реализации данного алгоритма был применён вариант машинного обучения. В качестве набора данных были использованы снимки различных частей тела человека и полной его структуры. В результате, такого подхода, алгоритм отслеживания следующий:
- Из необработанных данных глубины выделяется информация о пользователе.
- Полученные данные поступают на вход обученной модели машинного обучения и начинается процесс сопоставления полученной информации с заложенной в алгоритм. Если отдельный участок тела человека соответствует данным из обученной модели, то он маркируется и ему присваивается уникальное значение.
- Далее, составляется дерево соединений, формирующее предварительные скелетные данные человека.
- После нескольких итераций предыдущих пунктов, алгоритм начинает расставлять узлы и соединений с наибольшей вероятностью.
- Далее, для получения координат каждого сустава, датчик проецирует полученное изображение на три плоскости. Тем самым формирую 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 следует выполнить шаги:
- Сделать датчик записывающим устройством по умолчанию.
- Подключить библиотеку в Visual Studio для распознавания голосовых команд (в данном случае использовалась родная библиотека Microsoft Speech Platform [8]).
- Инициализировать обработчик для голосовых команд:
- определить язык команд и в соответствие с ним создать объект
распознавателя речи
; - выбрать устройство ввода, установленное в системе по умолчанию;
- оздаём словарь с набором ключевых слов;
- создать элемент грамматики для проверки степени совпадения произнесённой команды и заданной;
- указать количество итераций распознавания после первой успешной;
- подключить метод, в который программа будет заходить каждый раз, когда пользователь произносить ключевое слово. С помощью элементов ветвления необходимо реализовать логику действий для каждого ключевого слова.
7. Создание пользовательского интерфейса для выбора режима работы
Для работы с устройством и формирования задания на робота, необходимо было создать пользовательский интерфейс, позволяющий упростить работу с датчиком и сделать управление более интерактивным (рисунок 7.1).
Рисунок 7.1 – Приветственное окно при запуске приложения
После указания для запуска датчика, активируется следующий элемент пользовательского интерфейса,
в котором поясняется принцип действия ручного и автоматического режима.
Пояснение информации производится как в графическом виде (с помощью короткого видео),
а также, с помощью голосового помощника
. К основным задачам голосового помощника
можно отнести:
- Голосовое оповещение о ключевых событиях, связанных с датчиком:
- запуск и остановка датчика;
- активация ручного или автоматического режима.
- Мониторинг скорости изменения сигнала задания.
- Оповещение пользователя о возможности аварии в случае дальнейшего увеличения скорости изменения сигнала.
- Ограничение скорости изменения задания (применимо при ручном режиме работы), когда задание близко к критическому значению.
8. Создание модели в MSC Adams
В настоящее время очень важно умение пользования различными программами, позволяющими моделировать различные механизмы. Ведь с увели¬чением сложности их конструкции растёт риск ошибки при расчётах и построении данной модели. Очень часто бывает так, что при некоторые программы ориентированы только на одну область. Для более полного и полноценного расчёта, необходимо использовать несколько программ, который могут дополнять друг друга.
Основой MSC.ADAMS [9] являются высокоэффективный препроцессор и набор решателей. Препроцессор обеспечивает как импорт геометрических примитивов из многих CAD систем, так и создание твердотельных моделей непосредственно в среде MSC.ADAMS. Разработчики постоянно прилагают усилия к повышению эффективности математической базы программного пакета, благодаря чему использование решателей MSC.ADAMS гарантирует получение результатов при минимальных усилиях со стороны пользователя. На рисунке 8.1 изображена импортированная модель в среду Adams.
Рисунок 8.1 – Внешний вид импортированной модели
После добавления необходимо указать вес детали, характеристики материала, из которого реальный объект изготовлен. В Adams имеется стандартный набор материалов. Однако все детали робота были выполнены из пластика. Для таких случаев имеется возмож¬ность создания собственного материала. Для этого необходимо задать необходимые величины:
- Density – плотность материала.
- Young’s Modules – модуль Юнга. Это та физическая величина, кото¬рая отражает возможность некоторого материала сопротивляться растяжению или сжатию при упругой деформации.
- Poisson’s Ratio – это отношение поперечного сжатия и относительного продольного удлинения
Задав эти исходные данные, решатель, встроенный в Adams, рассчитает необходимые моменты инерции и определит центр масс.
Далее, потребуется указать соединения между деталями. В среде имеются следующие варианты соединений:
- Простые:
- Revolute Joint – вращательный шарнир;
- Translational Joint – поступательный шарнир;
- Cylindrical Joint – вращательно-поступательный шарнир;
- Spherical Joint – сферический шарнир;
- Planar Joint – плоский шарнир;
- Constant-Velocity Joint – шарнир постоянных угловых скоростей;
- Screw Joint – винтовое соединение;
- Fixed Joint – жёсткое соединение;
- Hooke/Universal Joint – шарнир Гука.
- Сложные:
- Gears – зубчатое сцепление;
- Couper – ременная или цепная передача.
На рисунке 8.2 приведён пример добавления связи типа Revolute Joint.
Рисунок 8.2 – Установление связи между деталями
После установления связей, потребуется для первоначального тестирования установить контакт с поверхностью и задать тип движения для установленного соединения (рисунок 8.3).
Рисунок 8.3 – Добавления усилия для совершения вращательного движения
Когда все соединения установлены, следует указать закон движения для каждого сустава робота.
Рисунок 8.4 – Отработка задания на приседания
(анимация: 14 кадров, 7 циклов повторения, 368 кБайт)
Выводы
В результате разработки алгоритма планирования траектории, были поставлены задачи реализации рассматриваемого принципа на практике, написание соответствующего ПО для объединения основных узлов, необходимых для работы. Рассмотрен принцип моделирования в среде MSC Adams, а также, добавление связи с пакетом Matlab. Это позволило объединить сильные стороны двух средств и получить качественный результат моделирования.
Список источников
- Официальная страница Kinect. [Электронный ресурс]. – Режим доступа: https://azure.microsoft.com/ru-ru/services/kinect-dk/
- Технические характеристики контроллера Kinect. [Электронный ресурс]. – Режим доступа: https://3dnews.ru/594561
- Официальный сайт Asus Xtion Pro. [Электронный ресурс]. – Режим доступа: https://www.asus.com/ru/3D-Sensor/Xtion_PRO_LIVE/
- Библиотека Kinect for Windows SDK [Электронный ресурс]. – Режим доступа: https://www.microsoft.com/en-ie/download/details.aspx?id=40278
- Библиотека Coding4Fun [Электронный ресурс]. – Режим доступа: https://archive.codeplex.com/?p=c4fkinect
- Основы отслеживания данных тела человека [Электронный ресурс]. – Режим доступа: https://habr.com/ru/post/151296/
- Библиотека для работы с последовательным портом в C# [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/api/system.io.ports.serialport?view=netframework-4.8
- Библиотека для реализации голосового управления [Электронный ресурс]. – Режим доступа: https://www.microsoft.com/en-us/download/details.aspx?id=27225
- Официальный сайт продукта MSC Adams [Электронный ресурс]. – Режим доступа: https://www.mscsoftware.com/product/adams