Съдържание:

Робот за дистанционно търсене и изхвърляне, контролиран от Leap Motion: 5 стъпки
Робот за дистанционно търсене и изхвърляне, контролиран от Leap Motion: 5 стъпки

Видео: Робот за дистанционно търсене и изхвърляне, контролиран от Leap Motion: 5 стъпки

Видео: Робот за дистанционно търсене и изхвърляне, контролиран от Leap Motion: 5 стъпки
Видео: Часть 1. Аудиокнига «История Юлия Цезаря» Джейкоба Эббота (главы 1–6) 2024, Ноември
Anonim
Image
Image

Като част от моето участие за Leap Motion #3D Jam, бях развълнуван да създам този безжичен робот за търсене/спасяване, управляван с жестове, базиран на Raspberry Pi. Този проект демонстрира и предоставя минималистичен пример за това как безжичните 3D жестове с ръце могат да се използват за управление и взаимодействие с физически неща.

Тъй като този проект използва популярната WebIOPi IoT рамка на Raspberry Pi, той може много лесно да бъде разширен, за да контролира и интерфейсира обикновено всеки сензор/хардуер/електроника, който може да бъде свързан с Raspberry Pi.

Някои възможни сценарии, които си представям, колегите създатели могат да използват този проект като своя основна рамка за надграждане:

1. Робот за изхвърляне на бомба с дистанционно управление (използвайки може би OWI ръка и т.н.)

2. Дистанционна хирургична операция от лекар

3. Интерактивни художествени експонати или образователно съдържание, контролирани с жестове

4. Безкрайни други възможности/интеграции (аз съм ограничен от въображението си:))

Стъпка 1: Общ преглед

Разбиране на WebIOPi Framework
Разбиране на WebIOPi Framework

Този проект позволява на потребителя да управлява интерактивно робот, използвайки 3D жестове с ръце чрез Leap Motion, свързан с компютър.

Вграденият робот Raspberry Pi също има USB уеб камера, която предава поточно видео на живо на потребителя, което може да се види в уеб браузър. JavaScript библиотеката LeapMotion, вградена в тази уеб страница, обработва жестове с ръце и изпраща контролни сигнали обратно към робота, който след това се движи съответно.

Raspberry Pi на робота е конфигуриран като точка за достъп (режим AP) с помощта на USB WiFi донгъл, свързан към него. Това позволява на нашите компютри/устройства да се свързват директно с Raspberry Pi и да контролират чрез уеб страница. Raspberry Pi може също да бъде конфигуриран да работи в клиентски режим, при който се свързва безжично към точката за достъп на WiFi рутера, към която компютърът/устройствата вече са свързани.

Този проект се основава на WebIOPi (https://webiopi.trouch.com/), който е популярна рамка на IoT за Raspberry Pi. С помощта на пакета Weaved IoT Kit (или чрез пренасочване на портове на рутера) този робот може да бъде дистанционно контролиран и/или да получава данни от всяка точка на света.

За изграждането на проекта са използвани следните компоненти:

  1. Raspberry Pi B (100% напред съвместим с Raspberry Pi B+)
  2. USB уеб камера Logitech (нищожни 1,3 мегапиксела)
  3. L293D IC драйвер на двигателя и защитен щит
  4. USB WiFi Dongle за Raspberry Pi
  5. USB захранваща банка за Raspberry Pi
  6. Външна 4V/1.5A батерия за задвижване на роботите

Стъпка 2: Изграждане на проект

Инсталиране на WebIOPi, писане на персонализиран код и конфигуриране на уеб камера:

Инструкции за инсталиране на WebIoPi, основи на рамката и много примери са достъпни на страницата на проекта тук:

За да накараме функциите LeapMotion, вградени в уеб страницата, да задействат GPIO действия на Raspberry Pi, използвахме макроси, подробности за които можете да намерите тук:

Написал съм и някои бележки за започване на горния процес, които могат да бъдат намерени прикачени.

Инсталиране и конфигуриране на уеб камера

Използваме MJPG-Streamer, за да предаваме поточно видео емисията от Raspberry Pi обратно към браузъра чрез USB уеб камера, свързана към Pi. Моля, следвайте инструкциите за настройка и изграждане, посочени тук https://blog.miguelgrinberg.com/post/how-to-build-…, за да накарате MJPG-Streamer да работи върху Raspberry Pi.

Конфигуриране на Raspberry Pi като AP/Hotspot

За да настроите Raspberry Pi като хостпот, моля, следвайте инструкциите, предоставени тук: https://elinux.org/RPI-Wireless-Hotspot. Конфигурирах статичния IP на Raspberry Pi като 192.168.42.1, което бихме въвели в браузъра, след като Pi се зареди в режим AP.

Услугата WebIOPi, MJPG-Streamer и WiFi hotspot са конфигурирани да се стартират автоматично при зареждане и това ни позволява директно да отворим уеб браузър и да се свържем с робота, след като се стартира. Наличният в репото файл rc.local се използва за стартиране на уеб камерата при зареждане.

Стъпка 3: Инструкции за изграждане/окабеляване

4 GPIO на Raspberry Pi, а именно GPIO 9, 11, 23 и 24 са свързани към L293D IC Driver Driver, който управлява двигателите съответно след получаване на макро заявки от уеб страницата, обслужвана от рамката Webiopi. USB WiFi ключът и USB Logitech уеб камерата са свързани към 2 USB порта, налични на Raspberry Pi. 5V 4000 Mah Power bank доставя основното захранване на Pi. 4V 1.5A оловно -киселинна батерия се използва за задвижване на двигателите.

Забележка: Тъй като максималният изходен ток на захранващата банка, който използвах, беше мизерно 1000 Mah, трябваше да използвам външната оловно -киселинна батерия за задвижване на двигателите. Ако имате банка за захранване, която дава> = 2000Mah, можете директно да задвижвате двигателите от 5V релсата на Pi (все пак не бих препоръчал това за гладни двигатели)

3-те ключови подраздела на проекта LeapMotion Javascript API, WebIOPi и MJPG-Streamer и тяхната основна работа/настройка са накратко описани по-долу.

Стъпка 4: Разбиране на WebIOPi Framework

Фронтендът, който се показва в браузъра, е написан в HTML (Име на файл: index.html) & Javascript, докато бекендът, който управлява GPIO, е написан на Python (Име на файла: script.py). Подробни бележки за създаване на персонализирано WebApp въз основа на рамката WebIOPi са приложени като бележки в репото на Bitbucket.

Персонализирани макроси, определени в скрипта на Python, могат да се задействат от HTML файла.

Например: webiopi (). CallMacro ("go_forward"); Това е персонализирано извикване към макрос go_forward, дефиниран в скрипта на Python, който обработва процеса на прокарване на двата двигателя в посока напред.

Йерархията на директориите, където файловете се съхраняват на Pi, е показана в прикаченото изображение.

Папката Robot съдържа следните подпапки:

  • html: съдържащ index.html
  • python: съдържащ script.py
  • mjpg-streamer-r63: съдържа файловете за изграждане и изпълнимия файл за стартиране на уеб камерата

MJPG-стриймър: Видео потокът на живо от USB уеб камерата работи по порт 8080 на Pi по подразбиране. За да видите ръчно потока, отворете RASPBERRYPI_IP: 8080 в браузъра след включване на уеб камерата.

Код на LeapMotion:

Кодови фрагменти от примерите, предоставени в LeapMotion SDK, бяха вградени във файла index.html. Leap.js файлът на LeapMotion трябва да бъде добавен в папката html в директорията на проекта на Raspberry Pi.

Параметърът palmPosition, изпратен от LeapMotion, се използва за определяне кой макрос да се задейства на Raspberry Pi.

Стъпка 5: Изпълнение на проекта

Просто включете Raspberry Pi и изчакайте приблизително за минута. Ще видите нов hotpsot RaspberryPi. Свържете се с тази гореща точка и отворете този статичен IP адрес в браузъра: 192.168.42.1:8000. 8000 е портът по подразбиране на WebIOPi.

Raspberry Pi може също да бъде конфигуриран да се свързва към локалната WiFi мрежа като клиент, вместо да се показва като гореща точка. След това ще трябва да определите динамичния IP, присвоен на Raspberry Pi от рутера и след това да го натиснете в браузъра, за да играете с бота.

Можете да оставите коментар, ако имате нужда от помощ или имате въпроси относно проекта. Честит скок!

Целите изходни кодове са приложени. Можете да оставите коментар, ако имате нужда от помощ за някоя част от изграждането на проекта. Честит скок!

Препоръчано: