Оглавление:

Робот Nao, имитирующий движения с помощью Kinect: 7 шагов
Робот Nao, имитирующий движения с помощью Kinect: 7 шагов

Видео: Робот Nao, имитирующий движения с помощью Kinect: 7 шагов

Видео: Робот Nao, имитирующий движения с помощью Kinect: 7 шагов
Видео: Дуглас Маллетт - Наука, инженерия и технологии на благо человека - Блиндерн, Осло, Норвегия 2024, Сентябрь
Anonim
Робот Nao имитирует движения с помощью Kinect
Робот Nao имитирует движения с помощью Kinect

В этой инструкции я объясню вам, как мы позволяем роботу Nao имитировать наши движения с помощью сенсора Kinect. Фактическая цель проекта - образовательная: учитель имеет возможность записывать определенные наборы движений (например, танец) и может использовать эти записи, чтобы дети в классе имитировали робота. Пройдя все эти инструкции шаг за шагом, вы сможете полностью воссоздать этот проект.

Это школьный проект (NMCT @ Howest, Кортрейк).

Шаг 1. Базовые знания

Чтобы воссоздать этот проект, вам необходимо обладать некоторыми базовыми знаниями:

- Базовые знания Python

- Базовые знания C # (WPF)

- Базовые знания тригонометрии

- Знания о том, как настроить MQTT на Raspberry Pi

Шаг 2: приобретение необходимых материалов

Необходимые материалы для этого проекта:

- Raspberry Pi

- Датчик Kinect v1.8 (Xbox 360)

- Нао-робот или вирусный робот (Хореграф)

Шаг 3: как это работает

Image
Image
Как это работает
Как это работает

Датчик Kinect подключен к компьютеру, на котором запущено приложение WPF. Приложение WPF отправляет данные приложению Python (роботу) с помощью MQTT. Если пользователь выберет, локальные файлы сохраняются.

Детальное объяснение:

Перед тем, как мы начнем запись, пользователь должен ввести ip-адрес брокера MQTT. Кроме того, нам также нужна тема, по которой мы хотим опубликовать данные. После нажатия кнопки «Старт» приложение проверит, можно ли установить соединение с брокером, и предоставит нам обратную связь. Проверить, существует ли тема, невозможно, поэтому вы несете полную ответственность за нее. Когда оба входа в порядке, приложение начнет отправлять данные (координаты x, y и z для каждого сустава) из отслеживаемого каркаса в тему на брокере MQTT.

Поскольку робот подключен к тому же брокеру MQTT и подписан на ту же тему (это также необходимо ввести в приложение python), приложение python теперь будет получать данные из приложения WPF. Используя тригонометрию и самописные алгоритмы, мы преобразуем координаты в углы и радианы, которые мы используем для вращения двигателей внутри робота в реальном времени.

Когда пользователь заканчивает запись, он нажимает кнопку остановки. Теперь у пользователя появляется всплывающее окно с вопросом, хочет ли он сохранить запись. Когда пользователь нажимает кнопку «Отмена», все сбрасывается (данные теряются), и можно начинать новую запись. Если пользователь желает сохранить запись, он должен ввести заголовок и нажать «сохранить». При нажатии кнопки «сохранить» все полученные данные записываются в локальный файл с использованием ввода заголовка в качестве имени файла. Файл также добавляется в список в правой части экрана. Таким образом, после двойного щелчка по новой записи в списке, файл будет прочитан и отправлен брокеру MQTT. Следовательно, робот будет воспроизводить запись.

Шаг 4. Настройка брокера MQTT

Настройка брокера MQTT
Настройка брокера MQTT

Для связи между kinect (проект WPF) и роботом (проект Python) мы использовали MQTT. MQTT состоит из брокера (компьютера linux, на котором запущено программное обеспечение mqtt (например, Mosquitto)) и темы, на которую клиенты могут подписаться (они получают сообщение из темы) и публиковать (они публикуют сообщение по теме).

Чтобы настроить брокера MQTT, просто загрузите весь этот образ jessie. Это чистая установка для вас Raspberry Pi с брокером MQTT на нем. Тема - «/ Сандро».

Шаг 5. Установка Kinect SDK V1.8

Чтобы kinect работал на вашем компьютере, вам необходимо установить Microsoft Kinect SDK.

Вы можете скачать это здесь:

www.microsoft.com/en-us/download/details.a…

Шаг 6: Установка Python V2.7

Робот работает с фреймворком NaoQi, этот фреймворк доступен только для python 2.7 (НЕ 3.x), поэтому проверьте, какую версию python вы установили.

Вы можете скачать python 2.7 здесь:

www.python.org/downloads/release/python-27…

Шаг 7. Кодирование

Кодирование
Кодирование
Кодирование
Кодирование
Кодирование
Кодирование

Github:

Примечания:

- Кодирование с помощью kinect: сначала ищите подключенный kinect. Сохранив это внутри свойства, мы включили цветовой и скелетный поток в kinect. Цветовой поток - это видео в реальном времени, а скелетный поток означает, что будет отображаться скелет человека перед камерой. Colorstream на самом деле не является необходимым для работы этого проекта, мы просто включили его, потому что преобразование растрового изображения в цветовой поток выглядит гладким!

- На самом деле это действительно скелетный поток. Включение скелетного потока означает, что отслеживается скелет человека. Из этого скелета вы получаете всевозможную информацию, например. ориентация костей, информация о суставах,… Ключом к нашему проекту была информация о суставах. Используя координаты x-y и z каждого сустава отслеживаемого скелета, мы знали, что можем заставить робота двигаться. Итак, каждые 0,8 секунды (используя таймер) мы публикуем координаты x, y и z каждого из сочленений брокеру mqtt.

- Поскольку проект python имеет подписку на брокере mqtt, теперь мы можем получить доступ к данным внутри этого проекта. Внутри каждого шарнира робота два мотора. Этими двигателями нельзя управлять напрямую, используя координаты x, y и z. Итак, используя тригонометрию и здравый смысл, мы преобразовали координаты x, y и z суставов в углы, недостижимые для роботов.

Таким образом, в основном каждые 0,8 секунды проект WPF публикует координаты x, y и z каждого из сочленений. Следовательно, внутри проекта Python эти координаты преобразуются в углы, которые затем отправляются в соответствующие двигатели робота.

Рекомендуемые: