Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Автономный домашний робот-помощник

Компоненты и расходные материалы

Arduino UNO
× 1
Роботизированная рука Arduino Braccio
× 1
Odroid XU4
× 1
SparkFun EasyDriver - драйвер шагового двигателя
× 1
Шаговый двигатель
× 1
Драйвер двигателя L298
× 1
Двигатель постоянного тока (общий)
× 4
GY-85 IMU
× 1
Mecanum Wheels
× 1
USB-концентратор 5 В
× 1
Датчик Microsoft Kinect
× 1
Линейный рельс OpenBuilds с V-образным пазом
× 2
OpenBuilds V-Slot Gantry Plates
× 1
Комплект колес OpenBuilds Solid V
× 4
Шагающий винт Acme 0,8 м
× 1
Муфта вала от 6 до 8 мм
× 1
Кронштейн подшипника 8 мм
× 1
пружинный трос 1,2 м
× 1
Концевой выключатель
× 1
5 В BEC
× 1
Преобразование переменного тока в постоянный
× 2
Аккумуляторная батарея 12 В, 5000 мАч
× 1

Приложения и онлайн-сервисы

Amazon Alexa Alexa Skills Kit
Amazon Web Services AWS Lambda
Операционная система роботов ROS
PubNub Publish / Subscribe API

Об этом проекте

1. Введение

Знакомьтесь, О'нин! Персональный домашний робот-компаньон, который может передвигаться, собирать предметы и ухаживать за вашим домом. Благодаря Alexa, О'нин может слышать вас и выполнять программируемые задачи, например кормить рыбок.

Этот проект надеется расширить возможности Alexa, предоставив масштабируемую и открытую платформу роботов, которая может выполнять динамические задачи в среде умного дома. Текущие решения для умного дома требуют нестандартных устройств, разработанных только для определенной функции. O'nine стремится восполнить этот пробел, минимизируя эти требования к оборудованию и используя робототехнику в качестве альтернативы. Идея состоит в том, чтобы создать платформу для проверки технологий, чтобы проверить осуществимость и жизнеспособность использования роботов в качестве еще одного компонента системы домашней автоматизации. Надеюсь, мы сможем ответить на такие вопросы, как « Есть ли смысл использовать робота для отключения блоков переменного тока вместо того, чтобы устанавливать микроконтроллеры в каждой комнате только для управления каждым блоком переменного тока? "поскольку то, что раньше было статическим решением, теперь может быть мобильным с помощью робота.

Вот видео, на котором О'нин кормит мою рыбу.

TL; DW (замедленная видеосъемка)

Полнометражное видео.

Вы хотите проверить своего ребенка или кто стоит за дверью? У O'nine есть встроенная камера, так что вы также можете попросить ее сделать снимок.

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

2. Архитектура высокого уровня

Вкратце, вот как работает интеграция O'nine - Alexa:

1. Amazon Echo Dot прослушивает голосовые команды.

2. Пользовательский навык Alexa обнаруживает намерение.

3. Функция AWS Lambda получает запрос от Amazon Alexa Skill и отправляет его брокеру PubNub MQTT.

4. O'nine получает данные, подписавшись на брокера MQTT.

5. O'nine выполняет требуемую задачу автономно.

3. Аппаратное обеспечение

3.1 База роботов

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

Несколько фото собранной базы робота.

Шасси робота представляет собой переработанный контейнер из жестяной бумаги формата А4. Вы также можете использовать старую пластиковую коробку для хранения ваших компонентов.

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

3.2 Вертикально Лифт Схема (Arm Родительский)

Подключите компоненты, как показано ниже. Эта схема контролирует вертикальный подъем руки и переводит необходимую высоту, отправленную http://moveit.ros.org/, в шаговые движения. Это система с разомкнутым контуром, которая вычисляет текущую высоту руки, соотнося количество сделанных шагов с расстоянием в миллиметрах. Микроконтроллер также передает данные, отправленные от MoveIt, на роботизированный манипулятор, установленный на движущейся вертикальной платформе.

Вот фото собранного контура вертикального подъемника.

Спиральный кабель содержит провода Tx / Rx для последовательной связи между цепью вертикального подъема и контроллером манипулятора, а также источник питания +12 В постоянного тока для питания манипулятора.

3.3 Роботизированный Взять Контроллер ( Взять Ребенок )

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

Вот фотографии собранного контроллера манипулятора, установленного на Arduino Uno.

И еще несколько, чтобы показать остальные механические части О'нина.

3.4 Объедините все схемы

Наконец, соедините все цепи, которые вы ранее соединили, как показано ниже. На схеме также показано, как запитать каждую цепь:

4. Программное обеспечение

Обратите внимание, что этот проект требует запуска на двух машинах Linux (Ubuntu 14.04 или 16.04). Одна машина разработки для запуска MoveIt и визуализации данных (Rviz), а другая машина (плата разработки ARM) для запуска пакета навигации робота и драйверов оборудования / датчиков.

Щелкните здесь, чтобы просмотреть платы для разработчиков с поддержкой ROS, которые можно использовать для робота (желательно 2 ГБ ОЗУ).

4.1 Установка ROS

Установите ROS на обе машины:

  git clone https://github.com/linorobot/rosmecd rosme./install  

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

4.2 ROS Пакеты Установка

4.2.1 Установите на машину разработки:

  cd ~ / catkin_ws / srcgit clone https://github.com/linorobot/lino_pidgit clone https://github.com/linorobot/lino_msgsgit clone https://github.com/linorobot/lino_visualizecd .. &&catkin_make  

4.2.2 Установите Линоробот на компьютер робота (базу робота):

  git clone https://github.com/linorobot/lino_installcd lino_install./install mecanum kinect  

При этом будет установлено микропрограммное обеспечение базы робота, навигационное программное обеспечение и драйверы оборудования / датчиков.

4.2.3 Установите пакет O’nine на обе машины:

  cdgit clone https://github.com/grassjelly/onine_installcd onine_install./install  

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

4.2.4 Установите alexa_tasker:

  cd ~ / onine_ws / srcgit clone https://github.com/grassjelly/onine_alexacdcatkin_make  

Это загружает клиент MQTT, который связывает O'nine и alexa. Пакет также содержит приложение NodeJS, которое будет сжато в виде zip-файла и загружено в AWS Lambda.

5. Настройка программного обеспечения

5.1 Настройка Вверх Alexa Skill

5.1.1 Регистрация и вход

Создайте здесь учетную запись разработчика Alexa и нажмите "Начать" . а Навык :

Введите свой адрес электронной почты и пароль:

5.1.2 Начать работу с Alexa Skill

Нажмите "Получить ". Запущено Под набором навыков Alexa.

Нажмите "Добавить ". а Новый Навык в вверх вправо из окно:

5.1.3 Информация о навыках

Установите флажок "Пользовательский ". Взаимодействие Модель в разделе "Тип навыка".

Введите название своего навыка (возможно, имя вашего робота) в поле "Имя" .

Введите имя вызова вашего навыка (имя для активации вашего навыка) в разделе 'Invocation Имя.

Нажмите "Далее" .

5.1.4 Модель взаимодействия

Скопируйте и вставьте коды из https://github.com/grassjelly/onine_alexa/blob/master/lamda/assets/schema.json в 'Intent Schema' .

Скопируйте и вставьте коды из https://github.com/grassjelly/onine_alexa/blob/master/lamda/assets/utterances.txt в 'Образец Высказывания.

Нажмите " Далее".

5.1.5 Конфигурация навыков

Скопируйте свой идентификатор навыка приложения из верхнего левого угла и перейдите к шагу 5.2, чтобы создать лямбда-функцию. После создания функции запишите имя ресурса Amazon.

Отметьте 'AWS . Лямбда ARN ' и введите свой ARN на вкладке по умолчанию.

Нажмите "Далее" .

5.1.6 Проверка навыков

Введите голосовую команду под 'Enter Высказывание и щелкните ' Спросите <название навыка> '

Вы можете проверить, работает ли ваш навык, если есть ответ в разделе 'Служба Ответ.

5.2 Настройка Вверх лямбда-функция

5.2.1 Регистрация и вход

Создайте здесь учетную запись AWS Lamda и нажмите 'Войти В в Консоль в вверх вправо из окно :

Введите свой адрес электронной почты и пароль.

5.2.2 Создание лямбда-функции

Нажмите " Создать ". Функция в правом верхнем углу окна, чтобы начать выполнение лямбда-функции.

Выберите "NodeJS 4.3" . в среде выполнения *.

Выберите "Выбрать ". и существующие роль под ролью *.

Выберите 'lambda_basic_execution' под существующей ролью *.

Нажмите " Создать функцию" . .

5.2.3 Связать с Alexa

Добавьте триггер и выберите 'Alexa Навыки Комплект

Введите свой навык Alexa 'идентификатор навыка' . под идентификатором навыка.

затем нажмите "Добавить" .

5.2.4 Загрузите приложение

Перед созданием функции скопируйте и вставьте ключи Pub-Sub вашего PubNub в код функции.

  cd ~ / onine_ws / src / onine_alexa / lambda / appnano  

Теперь сгенерируйте zip-файл, который будет загружен в AWS Lambda:

  cd ~ / onine_ws / src / onine_alexa / lambda / appnpm install./zipme  

Это сжимает лямбда-функцию и необходимые модули node_modules в .zip

В коде функции выберите "Загрузить ". а .ZIP Файл в разделе Тип ввода кода.

Нажмите "Загрузить" . и выберите для загрузки файл Onine.zip, созданный ранее.

Нажмите "Сохранить" . в вверх вправо из окно.

Теперь ваша лямбда-функция готова.

5.3 Создание учетной записи PubNub

5.3.1 Регистрация и вход

Создайте учетную запись PubNub здесь.

Введите свой адрес электронной почты и пароль:

5.3.2 Создание нового приложения PubNub

Нажмите "Создать ". Новый ПРИЛОЖЕНИЕ в вверх вправо из окно :

Введите название своего приложения в поле " Приложение ". Имя :

5.3.3 Запишите ключи публикации и подписки.

5.3.4 Введите в эти строки ключи публикации и подписки.

5.4 Создание Pusover Уведомления

О'нин использует Pushover для отправки фотографий на телефон пользователя. Зарегистрируйтесь здесь и загрузите приложение, чтобы вы могли получать фотографии от O'nine, когда попросите его проверить что-то в доме.

5.4.1 Войдите в Pushover

и введите свой адрес электронной почты и пароль:

Запишите свой ключ пользователя после успешного входа в систему.

5.4.2 Создать приложение

Нажмите " Приложения и плагины" . вверху окна. Нажмите "Создать ". а Новый Приложение / Токен API ' .

Введите название приложения в поле "Имя" . .

Выберите "Приложение" . в разделе "Тип" .

Введите любое описание приложения.

Нажмите "Создать ". Приложение.

После этого запишите свой токен API.

5.4.3 Скопируйте и вставьте токен приложения и ключ пользователя в snaptask O'nine.

5.5 Установка the прошивки

5.5.1 Правила uDev

Последовательные порты микроконтроллеров определяются с использованием их статических имен в файлах roslaunch. Чтобы последовательные порты запоминались и связывались со своими статическими именами, необходимо создать правило uDev. Запустите инструмент uDev на компьютере робота.

  rosrun lino_udev lino_udev.py  

Подключите доску Teensy базы роботов и введите ключ «linobase». Сделайте то же самое для контура вертикального подъема и назовите его «oninearm». Сохраните свои правила uDev, нажав CTRL + C.

Скопируйте сохраненные правила udev в /etc/udev/rules.d:

  sudo cp 58-lino.rules /etc/udev/rules.d/58-lino.rules  

Перезапустите udev:

  sudo service udev reloadsudo service udev перезапуск  

Убедитесь, что правила uDev сработали:

  ls / dev / linobasels / dev / oninearm  

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

5.5.2 Загрузить прошивку базы робота

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

Подключите плату Teensy с базы робота к компьютеру робота и запустите:

  roscd linorobot / firmware / teensyplatformio run --target upload  

5.5.3 Загрузить прошивку вертикального подъемника

Подключите доску Teensy вертикального подъемника к компьютеру робота и запустите:

  cdplatformio run --target upload  

5.5.4 Загрузить прошивку контроллера робота

Подключите Arduino Uno к компьютеру робота и запустите:

  cdplatformio run --target upload  

Не забудьте отключить Arduino Uno после загрузки кодов, поскольку полученные данные передаются через плату Teensy вертикального подъемника с использованием последовательной связи.

5.6 Редактирование Линороботы коды

Вам нужно отредактировать несколько строк в файлах запуска Linorobot (базы роботов), чтобы добавить драйверы, необходимые для запуска Onine.

5.6.1 Добавьте следующее после этой строки в файле calculateup.launch.

         

Это добавляет программный пакет, необходимый для взаимодействия с микроконтроллером вертикального подъемника, и Onine определяет преобразования Onine (расположение механических частей Onine в трехмерном пространстве).

5.6.2 Измените эту строку на:

    

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

5.6.3 Закомментируйте эту строку, поскольку преобразования для этой ссылки уже определены в файле URDF Onine.

5.6.4 Заменить следующие строки на:

        

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

5.6.5 Заменить базовую опорную рамку Линоробота с base_link на base_footprint:

Изменить с ' base_link 'в' base_footprint 'о следующем:

линоробот / запуск / amcl.launch

linorobot / launch / slam.launch

linorobot / param / navigation / global_costmap_params.yaml

linorobot / param / navigation / local_costmap_params.yaml

linorobot / src / lino_base_node.cpp - строка 90

linorobot / src / lino_base_node.cpp - lino 111

5.6.6 Перекомпилируйте узел одометрии:

  cd ~ / linorobot_wscatkin_make  

5.7 Настройка вверх O'nine's объект детектор

Чтобы O'nine упростил обнаружение объектов, он использует теги AR, чтобы различать интересующие объекты при выполнении задач выбора и размещения. Похожая концепция, как у этих роботов:

Распечатайте изображение ниже и вставьте его на объект, который должен поднять О'нин. Размер изображения должен быть 2 см х 2 см. Эти числа произвольны, просто не забудьте изменить размер в файле запуска трекера Onine.

Используемое программное обеспечение восприятия:http://wiki.ros.org/ar_track_alvar. Его можно легко заменить, если вы предпочитаете использовать собственное программное обеспечение для обнаружения объектов или другие пакеты, совместимые с ROS, например:

http://wiki.ros.org/find_object_2d

http://wiki.ros.org/tabletop_object_detector

6. Запуск демонстрации

Перед запуском демонстрации убедитесь, что вы настроили свою сеть. Ознакомьтесь с этой сетью ROS для получения более подробного руководства.

6.1 Создание the карта

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

На компьютере робота откройте 2 новых окна терминала. Запускаем takeup.launch:

  roslaunch linorobot takeup.launch  

Запустите slam.launch:

  roslaunch linorobot slam.launch  

На компьютере разработчика откройте 2 новых окна терминала:Запустите teleop_twist_keyboard:

  rosrun teleop_twist_keyboard teleop_twist_keyboard.py  

Запускаем rviz:

  roscd lino_visualize / rvizrviz -d slam.rviz  

Используя teleop_twist_keyboard, ведите робота вокруг области, которую вы хотите нанести на карту.

Когда вы закончите картирование, сохраните карту, запустив map_server на компьютере робота:

  rosrun map_server map_saver -f ~ / linorobot_ws / src / linorobot / maps / map  

Проверьте, сохранены ли map.pgm и map.yaml:

  roscd linorobot / mapsls -a map.pgm map.yaml  

Измените вызванную карту на navigate.launch, чтобы загрузить свою собственную карту. Change 'house.yaml' to 'map.yaml' .

6.2 Getting target goal coordinates

When you ask O'nine to perform a task that requires autonomous navigation within the house, it has to know the coordinates of the point where it has to do the job.

You can echo these coordinates by subscribing to move_base_simple/goal and pointing the target location in Rviz.

SSH to the robot computer and run the following:

Run bringup.launch:

roslaunch linorobot bringup.launch 

On another terminal run the navigation stack:

roslaunch linorobot navigate.launch 

Run Rviz on your development computer:

roscd lino_visualize/rvizrviz -d navigate.rviz 

Open another terminal on your development computer and run:

rostopic echo move_base_simple/goal 

This will echo the coordinates and heading of the target pose that you will click on Rviz.

On Rviz, click the point that is approximately 1 meter away from where you want the robot to perform the task and drag towards where the robot is supposed to face when it has reached it's goal. (1 box in Rviz is equals to 1 square meter).

Copy the coordinates on the window where you echo 'move_base_simple/goal '

Edit onine/onine_apps/scripts/fishtask.py and replace Point(x,y,z) with position/x position/y, and position/z from the echoed values. Replace Quaternion(x,y,z,w) with orientation/x, orientation/y, orientation/z, and orientation/w from the echoed values.

6.3 Running O'nine

6.3.1 Open a new terminal on the development computer and run the ROSCORE:

roscore 

Open three new terminals on the development computer and SSH to the robot computer.

6.3.2 Run robot base's and robotic arm's driver:

roslaunch linorobot bringup.launch 

6.3.3 Run the navigation software on the second terminal:

roslaunch linorobot navigate.launch 

6.3.4 Run the object detection software on the third terminal:

roslaunch onine_apps ar_tracker.launch 

On the development computer open two new terminals.

6.3.5 Run MoveIt software:

roslaunch onine_moveit_config demo.launch  

This will run all the software required to move the robotic arm and open Rviz for data visualization.

6.3.6 Run the PubNub client which launches the autonomous task upon voice command through Amazon Echo Dot:

rosrun onine_alexa alexa_tasker.py 

6.3.7 Before talking to executing voice commands, you have to help O'nine localize relative to the map.

On Rviz, click '2D Post Estimate' and click on the map the approximate location of the robot and drag towards O'nine's current heading.

Once O'nine is localized, you're now ready to command Alexa to ask Onine to perform tasks.

Have fun with your new personal home assistant robot!

7. Future Works

7.1 O'nine simulation model

Building the hardware can be time consuming and tedious. I'm planning to create a Gazebo simulation model so that users can play around with O'nine without the need of a hardware. This way, O'nine's Alexa Custom skill can be tried purely with software.

7.2 Better computing power

The first ARM board I used to run O'nine was an Nvidia Jetson TK1 which comes in nifty for computer vision applications. Due to power reasons I replaced it with an Odroid XU4 as it only requires 5V and has a smaller form factor. I'm currently eyeing on a Rock64 board which has 4GB of RAM and hopefully get more juice to run more applications concurrently. The current setup requires to offload some of the applications to my laptop and has to be hardwired to the dev board (ethernet cable) as there's a huge stream of data running across both machines.

Код

O'nine Software
Contains all robotics related code - Autonomous Navigation, Kinematics Solver, and high level scripts to accomplish pick and place tasks.https://github.com/grassjelly/onine
Alexa - Robot integration
Contains all the codes that integrate Alexa Skill with the robotics system - Lambda App (NodeJS), Robot Tasker (A PubNub client that waits for Alexa commands and runs high level scripts to perform robot tasks).https://github.com/grassjelly/onine_alexa
Robot Base
This is another project of mine - Linorobot. It is a suite of Open Source ROS compatible robots that aims to provide students, developers, and researchers a low-cost platform in creating new exciting applications on top of ROS.https://github.com/linorobot/linorobot

Схема


Производственный процесс

  1. Робот Raspberry Pi, управляемый через Bluetooth
  2. Четвероногий автономный робот JQR
  3. Простой робот Pi
  4. Сделайте машинку для письма домашнего задания дома
  5. Робот с сервомотором избегает препятствий
  6. Робот-последователь линии
  7. Робот, управляемый речью
  8. Учебная платформа Arduino
  9. Самодельная рука робота Arduino - управляемая жестами рук
  10. Робот для супер-крутой навигации внутри помещений